Selecting one of the following will take you directly to that section:
Produce debugging information.
Somewhere between -O0 and -O2.
If multiple "O" options are used, with or without level numbers, the last such option is the one that is effective.
Moderate level of optimization which enables most optimizations. This is the default when no "-O" option is specified, or if no value is specified (i.e. "-O").
If multiple "O" options are used, with or without level numbers, the last such option is the one that is effective.
Like -O2, except that it enables optimizations that take longer to perform or that may generate larger code (in an attempt to make the program run faster).
If multiple "O" options are used, with or without level numbers, the last such option is the one that is effective.
Enables all the optimizations from -O3 along with other aggressive optimizations that may violate strict compliance with language standards. Refer to the AOCC options document for the language you're using for more detailed documentation of optimizations enabled under -Ofast.
Specify that Clang should generate code for a specific processor family member and later. For example, if you specify -march=znver1, the compiler is allowed to generate instructions that are valid on AMD Zen processors, but which may not exist on earlier products.
Enables link-time optimization. When compiling, it causes output files to be generated in LLVM formats suitable for link time optimization. When used with -S this generates LLVM intermediate language assembly files, otherwise this generates LLVM bitcode format object files. When linking, causes the optimization passes to happen.
Enables link-time optimization. When compiling, it causes output files to be generated in LLVM formats suitable for link time optimization. When used with -S this generates LLVM intermediate language assembly files, otherwise this generates LLVM bitcode format object files. When linking, causes the optimization passes to happen, with as much parallelism as the system and the code being optimized will allow.
Enables link-time optimization. When compiling, it causes output files to be generated in LLVM formats suitable for link time optimization. When used with -S this generates LLVM intermediate language assembly files, otherwise this generates LLVM bitcode format object files. When linking, causes the optimization passes to happen.
Generate code for a 64-bit environment. The 64-bit environment sets int to 32 bits and long and pointer to 64 bits and generates code for AMD's x86-64 architecture. The compiler generates AMD64, INTEL64, x86-64 64-bit ABI. The default on a 32-bit host is 32-bit ABI. The default on a 64-bit host is 64-bit ABI if the target platform specified is 64-bit, otherwise the default is 32-bit.
Enables a range of optimizations that provide faster, though sometimes less precise, mathematical operations that may not conform to the IEEE-754 specifications. When this option is specified, the __STDC_IEC_559__ macro is ignored even if set by the system headers.
Instructs the compiler to conform to the IEEE-754 specifications. The compiler will perform floating-point operations in strict conformance with the IEEE-754 standard. Some optimizations are disabled when this option is specified.
Instructs the linker to use the first definition encountered for a symbol, and ignore all others.
Instructs the compiler to link with flang Fortran runtime libraries.
This option causes Clang to revert to the same inlining behavior that GCC does when in pre-C99 mode.
Selects the C language dialect.
Selects the C++ language dialect.
Selects the Fortran language dialect.
Enables handling of OpenMP directives and generation of parallel code.
Enable support for Posix Threads. Note that C++ programs using std::thread may require this flag.
Do not allow any optimizations that provide faster, though sometimes less precise, mathematical operations that may not conform to the IEEE-754 specifications. Disables -ffast-math optimizations.
-ffinite-math-only, which is implied by -ffast-math and -Ofast, allows optimizations for floating-point arithmetic that assume that arguments and results are not NaNs or +-Infs. Setting -fno-finite-math-only does the opposite: the compiler must prepare for the possible presence of NaNs and infinities.
-fassociative-math allows the compiler to reassociate floating-point expressions.
This means the compiler may change the grouping of operations (for example, transforming
(a + b) + c into a + (b + c)) in order to enable better optimization.
Such transformations may change numerical results due to rounding differences.
This option is implied by -ffast-math and -Ofast. Using -fno-associative-math preserves strict evaluation order and IEEE-compliant rounding behavior.
-freciprocal-math allows the compiler to replace floating-point division operations
with multiplication by a reciprocal (for example, replacing x / y with
x * (1.0 / y)). This can significantly improve performance on some architectures,
but may reduce numerical accuracy.
This option is implied by -ffast-math and -Ofast. Using -fno-reciprocal-math forces the compiler to preserve exact division semantics.
Disables a range of optimizations that provide faster, though sometimes less precise, mathematical operations.
A SPEC CPU config file might use this flag in combination with -Ofast, to specify that all the optimizations of -Ofast are desired, with the exception of -ffast-math.
Swap bytes from big-endian to little-endian or vice versa on input/output of unformatted FORTRAN data.
This option instructs the compiler to treat char type as unsigned.
clang is a C compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link.
clang++ is a C++ compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link.
flang is a Fortran compiler which encompasses parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Flang will stop before doing a full link.
Specifies a directory to search for libraries. Use -L to add directories to the search path for library files. Multiple -L options are valid. However, the position of multiple -L options is important relative to -l options supplied.
Specifies a directory to search for include files. Use -I to add directories to the search path for include files. Multiple -I options are valid.
Switch to enable OpenMP.
One or more of the following may have been used in the run. If so, it will be listed in the notes sections. Here is a brief guide to understanding them:
LD_LIBRARY_PATH=<directories> (set via config file preENV)
LD_LIBRARY_PATH controls the search order for libraries. Often, it can be defaulted. Sometimes, it is
explicitly set (as documented in the notes in the submission) in order to ensure that the correct versions of
libraries are picked up.
OMP_STACKSIZE=N (set via config file preENV)
Set the stack size for subordinate OpenMP threads.
ulimit -s N
ulimit -s unlimited
'ulimit' is a Unix command, entered prior to the run. It sets the stack size for the main process and its children,
either to N kbytes or to no limit.