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.