Compilers: Sun Studio 12 Update 1
Operating systems: OpenSolaris 2008.11
Last updated: 21-Apr-2009 jlh
The text for many of the descriptions below was taken from the Sun Studio Compiler Documentation, which is copyright © 2007-2009 Sun Microsystems, Inc. The original documentation can be found at docs.sun.com.
This document has both optimization flags (in the immediately following section) and a description of Platform Settings
Invoke the Sun Studio C Compiler.
Invoke the Sun Studio C++ Compiler
Invoke the Sun Studio C Compiler.
Invoke the Sun Studio C++ Compiler
This macro specifies that the target system uses the LP64 data model; specifically, that integers are 32 bits, while longs and pointers are 64 bits.
This macro indicates that the benchmark is being compiled on an x64/Solaris system.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
SPEC_CPU_SOLARIS is used so that SUN submitters don't have to bother specifying SPEC_CPU_HAVE_BOOL. It sets HAVE__BOOL, and also includes alloca.h.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
Enables portability changes for Solaris
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This flag can be set for SPEC compilation for Solaris using default compiler.
This macro indicates that the benchmark is being compiled on an x86/Solaris system.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
SPEC_CPU_SOLARIS is used so that SUN submitters don't have to bother specifying SPEC_CPU_HAVE_BOOL. It sets HAVE__BOOL, and also includes alloca.h.
Enables portability changes for Solaris
This flag can be set for SPEC compilation for Solaris using default compiler.
A convenience option, this switch selects several other options that are described in this file.
Perform optimizations across all object files in the link step:
At -xipo=2, the compiler performs inter-procedural aliasing analysis as well as optimization of memory allocation and layout to improve cache performance.
Specifies the memory model for the compiled binary object. Use -m64 to create 64-bit executables and shared libraries. The default is 32-bit.
Enable generation of prefetch instructions on those architectures that support prefetch. val may be one of the following:
If only -xprefetch is specified, -xprefetch=auto,explicit is assumed.
The default is -xprefetch=auto,explicit.
A convenience option, this switch selects several other options that are described in this file.
Perform optimizations across all object files in the link step:
At -xipo=2, the compiler performs inter-procedural aliasing analysis as well as optimization of memory allocation and layout to improve cache performance.
Specifies the memory model for the compiled binary object. Use -m64 to create 64-bit executables and shared libraries. The default is 32-bit.
Set the preferred page size for running the program.
Allow the compiler to transform math library calls within loops into calls to the vector math library. Specifying
Enable generation of prefetch instructions on those architectures that support prefetch. val may be one of the following:
If only -xprefetch is specified, -xprefetch=auto,explicit is assumed.
The default is -xprefetch=auto,explicit.
Link with MicroQuill's SmartHeap library for Solaris. This is a library that optimizes calls to new, delete, malloc and free.
The -R flag specifies library search directories to the runtime linker. The information is recorded in the object file and passed to the runtime linker.
The version of SmartHeap that is used can be one of:
Use STLport's Standard Library implementation instead of the default libCstd.
Collect profile data for feedback-directed optimization (FDO). If an option directory is named, the feedback will be stored there.
When FDO is used, the training run gathers information regarding execution paths. As of the Sun Studio 12 version of the compiler suite, the training run gathers information about data values on SPARC systems, but not on x86 systems. Hardware performance counters are not used. FDO improves existing optimizations but does not introduce new classes of optimization.
Use data collected for profile feedback. If an option directory is named, look for the feedback data there.
A convenience option, this switch selects several other options that are described in this file.
Perform optimizations across all object files in the link step:
At -xipo=2, the compiler performs inter-procedural aliasing analysis as well as optimization of memory allocation and layout to improve cache performance.
Set the preferred page size for running the program.
Allow the compiler to transform math library calls within loops into calls to the vector math library. Specifying
Allows the compiler to perform type-based alias analysis at the specified alias level:
Enable generation of prefetch instructions on those architectures that support prefetch. val may be one of the following:
If only -xprefetch is specified, -xprefetch=auto,explicit is assumed.
The default is -xprefetch=auto,explicit.
Links in a library of general purpose memory allocation routines which can be faster than those found in libc, at the expense of more virtual memory consumed.
Usse object-caching memory allocation library
Collect profile data for feedback-directed optimization (FDO). If an option directory is named, the feedback will be stored there.
When FDO is used, the training run gathers information regarding execution paths. As of the Sun Studio 12 version of the compiler suite, the training run gathers information about data values on SPARC systems, but not on x86 systems. Hardware performance counters are not used. FDO improves existing optimizations but does not introduce new classes of optimization.
Use data collected for profile feedback. If an option directory is named, look for the feedback data there.
A convenience option, this switch selects several other options that are described in this file.
Perform optimizations across all object files in the link step:
At -xipo=2, the compiler performs inter-procedural aliasing analysis as well as optimization of memory allocation and layout to improve cache performance.
Specifies the memory model for the compiled binary object. Use -m64 to create 64-bit executables and shared libraries. The default is 32-bit.
Set the preferred page size for running the program.
Allows the compiler to perform type-based alias analysis at the specified alias level:
Enable generation of prefetch instructions on those architectures that support prefetch. val may be one of the following:
If only -xprefetch is specified, -xprefetch=auto,explicit is assumed.
The default is -xprefetch=auto,explicit.
Usse object-caching memory allocation library
Collect profile data for feedback-directed optimization (FDO). If an option directory is named, the feedback will be stored there.
When FDO is used, the training run gathers information regarding execution paths. As of the Sun Studio 12 version of the compiler suite, the training run gathers information about data values on SPARC systems, but not on x86 systems. Hardware performance counters are not used. FDO improves existing optimizations but does not introduce new classes of optimization.
Use data collected for profile feedback. If an option directory is named, look for the feedback data there.
A convenience option, this switch selects several other options that are described in this file.
Perform optimizations across all object files in the link step:
At -xipo=2, the compiler performs inter-procedural aliasing analysis as well as optimization of memory allocation and layout to improve cache performance.
Set the preferred page size for running the program.
Allows the compiler to perform type-based alias analysis at the specified alias level:
Specifies the memory model for the compiled binary object. Use -m64 to create 64-bit executables and shared libraries. The default is 32-bit.
Enable generation of prefetch instructions on those architectures that support prefetch. val may be one of the following:
If only -xprefetch is specified, -xprefetch=auto,explicit is assumed.
The default is -xprefetch=auto,explicit.
Collect profile data for feedback-directed optimization (FDO). If an option directory is named, the feedback will be stored there.
When FDO is used, the training run gathers information regarding execution paths. As of the Sun Studio 12 version of the compiler suite, the training run gathers information about data values on SPARC systems, but not on x86 systems. Hardware performance counters are not used. FDO improves existing optimizations but does not introduce new classes of optimization.
Use data collected for profile feedback. If an option directory is named, look for the feedback data there.
A convenience option, this switch selects several other options that are described in this file.
Perform optimizations across all object files in the link step:
At -xipo=2, the compiler performs inter-procedural aliasing analysis as well as optimization of memory allocation and layout to improve cache performance.
Allows the compiler to perform type-based alias analysis at the specified alias level:
Enable generation of prefetch instructions on those architectures that support prefetch. val may be one of the following:
If only -xprefetch is specified, -xprefetch=auto,explicit is assumed.
The default is -xprefetch=auto,explicit.
Links in a library of general purpose memory allocation routines which can be faster than those found in libc, at the expense of more virtual memory consumed.
Collect profile data for feedback-directed optimization (FDO). If an option directory is named, the feedback will be stored there.
When FDO is used, the training run gathers information regarding execution paths. As of the Sun Studio 12 version of the compiler suite, the training run gathers information about data values on SPARC systems, but not on x86 systems. Hardware performance counters are not used. FDO improves existing optimizations but does not introduce new classes of optimization.
Use data collected for profile feedback. If an option directory is named, look for the feedback data there.
A convenience option, this switch selects several other options that are described in this file.
Specifies the memory model for the compiled binary object. Use -m64 to create 64-bit executables and shared libraries. The default is 32-bit.
Set the preferred page size for running the program.
Treat pointer-valued function parameters as restricted pointers.
Allows the compiler to perform type-based alias analysis at the specified alias level:
Analyze loops for inter-iteration data dependencies, and do loop restructuring.
Turn on automatic parallelization for multiple processors.
Include a library with vectorized versions of some elementary mathematical functions.
Collect profile data for feedback-directed optimization (FDO). If an option directory is named, the feedback will be stored there.
When FDO is used, the training run gathers information regarding execution paths. As of the Sun Studio 12 version of the compiler suite, the training run gathers information about data values on SPARC systems, but not on x86 systems. Hardware performance counters are not used. FDO improves existing optimizations but does not introduce new classes of optimization.
Use data collected for profile feedback. If an option directory is named, look for the feedback data there.
A convenience option, this switch selects several other options that are described in this file.
Perform optimizations across all object files in the link step:
At -xipo=2, the compiler performs inter-procedural aliasing analysis as well as optimization of memory allocation and layout to improve cache performance.
Specifies the memory model for the compiled binary object. Use -m64 to create 64-bit executables and shared libraries. The default is 32-bit.
Collect profile data for feedback-directed optimization (FDO). If an option directory is named, the feedback will be stored there.
When FDO is used, the training run gathers information regarding execution paths. As of the Sun Studio 12 version of the compiler suite, the training run gathers information about data values on SPARC systems, but not on x86 systems. Hardware performance counters are not used. FDO improves existing optimizations but does not introduce new classes of optimization.
Use data collected for profile feedback. If an option directory is named, look for the feedback data there.
A convenience option, this switch selects several other options that are described in this file.
Perform optimizations across all object files in the link step:
At -xipo=2, the compiler performs inter-procedural aliasing analysis as well as optimization of memory allocation and layout to improve cache performance.
Specifies the memory model for the compiled binary object. Use -m64 to create 64-bit executables and shared libraries. The default is 32-bit.
Set the preferred page size for running the program.
Allow the compiler to transform math library calls within loops into calls to the vector math library. Specifying
Treat pointer-valued function parameters as restricted pointers.
Allows the compiler to perform type-based alias analysis at the specified alias level:
Enable generation of prefetch instructions on those architectures that support prefetch. val may be one of the following:
If only -xprefetch is specified, -xprefetch=auto,explicit is assumed.
The default is -xprefetch=auto,explicit.
Collect profile data for feedback-directed optimization (FDO). If an option directory is named, the feedback will be stored there.
When FDO is used, the training run gathers information regarding execution paths. As of the Sun Studio 12 version of the compiler suite, the training run gathers information about data values on SPARC systems, but not on x86 systems. Hardware performance counters are not used. FDO improves existing optimizations but does not introduce new classes of optimization.
Use data collected for profile feedback. If an option directory is named, look for the feedback data there.
A convenience option, this switch selects several other options that are described in this file.
Perform optimizations across all object files in the link step:
At -xipo=2, the compiler performs inter-procedural aliasing analysis as well as optimization of memory allocation and layout to improve cache performance.
Specifies the memory model for the compiled binary object. Use -m64 to create 64-bit executables and shared libraries. The default is 32-bit.
Turn on automatic parallelization for multiple processors.
Analyze loops for reductions such as dot products, maximum and minimum finding.
Collect profile data for feedback-directed optimization (FDO). If an option directory is named, the feedback will be stored there.
When FDO is used, the training run gathers information regarding execution paths. As of the Sun Studio 12 version of the compiler suite, the training run gathers information about data values on SPARC systems, but not on x86 systems. Hardware performance counters are not used. FDO improves existing optimizations but does not introduce new classes of optimization.
Use data collected for profile feedback. If an option directory is named, look for the feedback data there.
A convenience option, this switch selects several other options that are described in this file.
Perform optimizations across all object files in the link step:
At -xipo=2, the compiler performs inter-procedural aliasing analysis as well as optimization of memory allocation and layout to improve cache performance.
Specifies the memory model for the compiled binary object. Use -m64 to create 64-bit executables and shared libraries. The default is 32-bit.
Allows the compiler to perform type-based alias analysis at the specified alias level:
Turn on automatic parallelization for multiple processors.
Collect profile data for feedback-directed optimization (FDO). If an option directory is named, the feedback will be stored there.
When FDO is used, the training run gathers information regarding execution paths. As of the Sun Studio 12 version of the compiler suite, the training run gathers information about data values on SPARC systems, but not on x86 systems. Hardware performance counters are not used. FDO improves existing optimizations but does not introduce new classes of optimization.
Use data collected for profile feedback. If an option directory is named, look for the feedback data there.
A convenience option, this switch selects several other options that are described in this file.
Perform optimizations across all object files in the link step:
At -xipo=2, the compiler performs inter-procedural aliasing analysis as well as optimization of memory allocation and layout to improve cache performance.
Set the preferred page size for running the program.
Link with MicroQuill's SmartHeap library for Solaris. This is a library that optimizes calls to new, delete, malloc and free.
The -R flag specifies library search directories to the runtime linker. The information is recorded in the object file and passed to the runtime linker.
The version of SmartHeap that is used can be one of:
Use STLport's Standard Library implementation instead of the default libCstd.
Collect profile data for feedback-directed optimization (FDO). If an option directory is named, the feedback will be stored there.
When FDO is used, the training run gathers information regarding execution paths. As of the Sun Studio 12 version of the compiler suite, the training run gathers information about data values on SPARC systems, but not on x86 systems. Hardware performance counters are not used. FDO improves existing optimizations but does not introduce new classes of optimization.
Use data collected for profile feedback. If an option directory is named, look for the feedback data there.
A convenience option, this switch selects several other options that are described in this file.
Perform optimizations across all object files in the link step:
At -xipo=2, the compiler performs inter-procedural aliasing analysis as well as optimization of memory allocation and layout to improve cache performance.
Specifies the memory model for the compiled binary object. Use -m64 to create 64-bit executables and shared libraries. The default is 32-bit.
Set the preferred page size for running the program.
Link with MicroQuill's SmartHeap library for Solaris. This is a library that optimizes calls to new, delete, malloc and free.
The -R flag specifies library search directories to the runtime linker. The information is recorded in the object file and passed to the runtime linker.
The version of SmartHeap that is used can be one of:
Allows the compiler to perform type-based alias analysis:
Use STLport's Standard Library implementation instead of the default libCstd.
Turn on automatic parallelization for multiple processors.
Collect profile data for feedback-directed optimization (FDO). If an option directory is named, the feedback will be stored there.
When FDO is used, the training run gathers information regarding execution paths. As of the Sun Studio 12 version of the compiler suite, the training run gathers information about data values on SPARC systems, but not on x86 systems. Hardware performance counters are not used. FDO improves existing optimizations but does not introduce new classes of optimization.
Use data collected for profile feedback. If an option directory is named, look for the feedback data there.
A convenience option, this switch selects several other options that are described in this file.
Perform optimizations across all object files in the link step:
At -xipo=2, the compiler performs inter-procedural aliasing analysis as well as optimization of memory allocation and layout to improve cache performance.
Set the preferred page size for running the program.
Enable unrolling loops n times where possible.
Synonym for -unroll=n
Allow the compiler to transform math library calls within loops into calls to the vector math library. Specifying
Link with MicroQuill's SmartHeap library for Solaris. This is a library that optimizes calls to new, delete, malloc and free.
The -R flag specifies library search directories to the runtime linker. The information is recorded in the object file and passed to the runtime linker.
The version of SmartHeap that is used can be one of:
Use STLport's Standard Library implementation instead of the default libCstd.
Directs the compiler to print the name and version ID of each component as the compiler executes.
Turns on verbose mode, showing how command options expand. Shows each component as it is invoked.
Specify the -xjobs option to set how many processes the compiler creates to complete its work. Currently, -xjobs works only with the -xipo option. When you specify -xjobs=n, the interprocedural optimizer uses n as the maximum number of code generator instances it can invoke to compile different files.
Controls compiler verbosity. There are several values that can be used with this flag:
The default is -verbose=%none.
Specify the -xjobs option to set how many processes the compiler creates to complete its work. Currently, -xjobs works only with the -xipo option. When you specify -xjobs=n, the interprocedural optimizer uses n as the maximum number of code generator instances it can invoke to compile different files.
Directs the compiler to print the name and version ID of each component as the compiler executes.
Turns on verbose mode, showing how command options expand. Shows each component as it is invoked.
Specify the -xjobs option to set how many processes the compiler creates to complete its work. Currently, -xjobs works only with the -xipo option. When you specify -xjobs=n, the interprocedural optimizer uses n as the maximum number of code generator instances it can invoke to compile different files.
Controls compiler verbosity. There are several values that can be used with this flag:
The default is -verbose=%none.
Specify the -xjobs option to set how many processes the compiler creates to complete its work. Currently, -xjobs works only with the -xipo option. When you specify -xjobs=n, the interprocedural optimizer uses n as the maximum number of code generator instances it can invoke to compile different files.
This section contains descriptions of flags that were included implicitly by other flags, but which do not have a permanent home at SPEC.
Allows the compiler to assume that your code does not rely on setting of the errno variable.
Selects faster (but nonstandard) handling of floating point arithmetic exceptions and gradual underflow. The spelling "-fns=yes" is equivalent to "-fns".
Controls simplifying assumptions for floating point arithmetic:
Evaluate float expressions as single precision.
Turns off all IEEE 754 trapping modes.
Cancels forcing expressions to have the precision of the result.
Allows the compiler to perform type-based alias analysis at the specified alias level:
Substitute intrinsic functions or inline system functions where profitable for performance.
Analyze loops for inter-iteration data dependencies, and do loop restructuring.
Use inline expansion for math library, libm.
Select the optimized math library.
Specify optimization level. Can be written either as -xOn or -On, where n indicates:
Allow the compiler to use the frame-pointer register (%ebp on IA32, %rbp on x64) as an unallocated callee-saves register.
Selects options appropriate for the system where the compile is taking place, including architecture, chip, and cache sizes. (These can also be controlled separately, via -xarch, -xchip, and -xcache, respectively.)
One or more of the following settings may have been applied to the testbed. If so, the "Platform Notes" section of the report will say so; and you can read below to find out more about what these settings mean.
Intel VT-d: Disabled
VT-d, if enabled, supports remapping of I/O DMA transfers for virtualization.
autoup=<n>
When the file system flush daemon fsflush runs, it writes to disk all modified file buffers that are more
than n seconds old.
lpg_alloc_prefer=<n>
0 = the OS may allocate remote pages if the size requested is readily available in a remote locality group (default)
1 = Set lgroup page allocation to strongly prefer local pages.
tune_t_fsflushr=<n>
Controls the number of seconds between runs of the file system flush daemon, fsflush.
zfs:zfs_arc_max=<n>
Controls the amount of memory used by ZFS for caching of file system buffers.
OMP_DYNAMIC=<TRUE|FALSE>
Enables (TRUE) or disables (FALSE) dynamic adjustment of the number of threads available for execution of parallel
regions. The default is TRUE.
OMP_NESTED=<TRUE|FALSE>
Enables or disables nested parallelism. Value is either TRUE or FALSE. The default is FALSE.
OMP_NUM_THREADS=<n>
If programs have been compiled with -xautopar, this environment variable can be set to the number of
processors that programs should use.
PARALLEL=<n>
If programs have been compiled with -xautopar, this environment variable can be set to the number of
processors that programs should use.
STACKSIZE=<n>
Set the size of the stack (temporary storage area) for each slave thread of a multithreaded program.
SUNW_MP_PROCBIND=<n>
This environment variable can be used to bind the LWPs (lightweight processes) managed by the microtasking library,
libmtsk, to processors. Performance can be enhanced with processor binding, but performance degradation will occur if
multiple LWPs are bound to the same processor.
The value for SUNW_MP_PROCBIND can be:
Integers in the above denote the "logical" processor IDs to which the LWPs are to be bound. Logical processor IDs are
consecutive integers that start with 0, and may or may not be identical to the actual processsor IDs. If n processors are
available online, then their logical processor IDs are 0, 1, ..., n-1.
By default, LWPs are not bound to processors. It is left up to the operating system, Solaris, to schedule LWPs onto processors.
If the value "TRUE" is used, the operating system will bind processes to processors, starting with processor 0.
SUNW_MP_THR_IDLE=SPIN
Controls the end-of-task status of each helper thread executing the parallel part of a program. You can set the value
to spin, sleep ns, or sleep nms. The default is SPIN -- the thread spins (or busy-waits) after completing a parallel task
until a new parallel task arrives.
ulimit -s <n>
Sets the stack size to n kbytes, or "unlimited" to allow the stack size to grow without limit.
submit=echo 'pbind -b...' > dobmk; sh dobmk
When running multiple copies of benchmarks, the SPEC config file feature submit is sometimes used to
cause individual jobs to be bound to specific processors. If so, the specific command may be found in the config file; here
is a brief guide to understanding that command:
Flag description origin markings:
For questions about the meanings of these flags, please contact the tester.
For other inquiries, please contact webmaster@spec.org
Copyright 2006-2014 Standard Performance Evaluation Corporation
Tested with SPEC CPU2006 v1.1.
Report generated on Wed Jul 23 01:55:17 2014 by SPEC CPU2006 flags formatter v6906.