Note the following new and changed features in the current C compiler
release.
-
Object files created by the compilers on the Solaris OS on
x86 platforms or the Linux OS are incompatible with previous compiler versions
if the application code contains functions with parameters or return values
using _m128/_m64 data types. Users with .il inline function files, assembler code, or asm inline
statements calling these functions also need to be aware of this incompatibility.
-
New -xtarget values for x86 processors woodcrest, penryn, nehalem, core2; and SPARC processors ultraT2plus and sparc64vii.
-
New -xarch values for x86 architectures ssse3, sse4_1, sse4_2, and
for SPARC architectures sparcima.
-
New —xchip values for SPARC processors sparc64vii, ultraT2plus. New —xchip values
for x86 processors core2, penryn, nehalem.
-
The -xprofile=collect and -xprofile=use options provide improved support for profiling multi-threaded,
dynamically linked applications.
-
The -xcrossfile=1 option becomes an alias
of the -xipo=1 option. The -xcrossfile=0 option
no longer has any effect. Specifically, -xcrossfile=1 and -xcrossfile=0 are equivalent to -xipo=1.
-
On Solaris platforms, the -xpec[=yes|no] option generates a PEC binary that is recompilable for use with
the Automatic Tuning System (ATS).
-
The -Y option does not accept i as
an argument.
-
On SPARC. platforms, the -xdepend option
is now implicitly enabled for optimization levels -x03 or
higher, and is no longer included in the expansion of the -fast option
-
Support for OpenMP 3.0 includes a libmtsk library.
OpenMP programs will link with this library by default instead of the libmtsk library in the Solaris OS.
-
-xannotate[=yes|no] (SPARC platforms only) instructs the compiler to create binaries
that can be transformed later by binary modification tools like binopt(1).
-
The -Wi option is no longer accepted for
passing arguments to the interprocedural optimizer..
-
The -xsb and -xsbfast options
are obsolete and have been removed
-
A new flag has been added to the -xcheck option, [no%]init_local.
-
__FUNCTION__ and __PRETTY_FUNCTION__ are
predefined identifiers that contain the name of the lexically-enclosing function.
They are functionally equivalent to the c99 predefined identifier, __func__. They are not available on Solaris platforms, when compiling in -Xs and -Xc modes.
-
In standard C, a case label in a switch statement can have only one associated value. The Sun Studio C
compiler allows an extension found in some compilers known as case
ranges.
-
The second operand in a conditional expression can be omitted.
If the first operand is then non-zero, the value of the conditional expression
is that of the first operand.
-
For the -features=[no%]conststrings option, which enables and disables string literal placement
in read-only memory, the default is -features=conststrings,
which replaces the deprecated -xstrconst option.
-
The -include filename option
for specifying preprocessor include files has been added.
-
New behavior for preprocessor ## operator:
The compiler now issues a warning diagnostic for an undefined ## operation
(C standard, section 3.4.3), where undefined is a ## result
that, when preprocessed, consists of multiple tokens rather than one single
token (C standard, section 6.10.3.3(3)). The result of an undefined ## operation
is now defined as the first individual token generated by preprocessing the
string created by concatenating the ## operands.
-
Global asm Statements. A basic asm statement
is expressed as asm(assembly code); It emits the given assembler text directly into the assembly
file. A basic asm statement declared at file scope, rather
than function scope, is referred to as a global asm statement.
Other compilers refer to this as a toplevel asm statement.