Selecting one of the following will take you directly to that section:
Optimizes for processors that are compatible with the IA-32 ISA.
Optimizes for processors that are compatible with Intel's Streaming SIMD Extensions (SSE).
Optimizes for processors that are compatible with Intel's Streaming SIMD Extensions 2 (SSE2). Default for 64 Bit systems if neither -x nor -m are specified.
Optimizes for processors that are compatible with Intel's Streaming SIMD Extensions 3 (SSE3).
Optimizes for processors that are compatible with Intel's Supplemental Streaming SIMD Extensions 3 (SSSE3).
Optimizes for processors that are compatible with Intel's Streaming SIMD Extensions 4.1 (SSE4.1).
Optimizes for SIMD extensions of the used processor on Intel processors.
Optimizes for Intel processors with Streaming SIMD Extensions 2 (SSE2).
Optimizes for Intel processors with Streaming SIMD Extensions 3 (SSE3).
Optimizes for Streaming SIMD Extensions 3 (SSE3) implementation of Intel Atom processors.
Optimizes for Intel processors with Supplemental Streaming SIMD Extensions 3 (SSSE3).
Optimizes for Intel processors with Streaming SIMD Extensions 4.1 (SSE4.1).
Optimizes for Intel processors with Streaming SIMD Extensions 4.2 (SSE4.2).
Optimizes for Intel processors with Advanced Vector Extensions (AVX).
Optimizes for Intel processors with Advanced Vector Extensions 2 (AVX2).
Optimizes for Intel processors with Advanced Vector Extensions (AVX).
Optimizes for Intel processors with Advanced Vector Extensions 512 (AVX-512).
Enables the parallelizer to generate multithreaded code based on OpenMP* directives.
Tells the auto-parallelizer to generate multithreaded code for loops that can be safely executed in parallel. To use this option, you must also specify option O2 or O3. The default numbers of threads spawned is equal to the number of processors detected in the system where the binary is compiled. Can be changed by setting the environment variable OMP_NUM_THREADS
This is the same as specifying O2.
Disables all optimizations.
Enables optimizations for speed and disables some optimizations that increase code size and affect speed.
Enables optimizations for speed. This is the generally recommended optimization level. Vectorization is enabled at O2 and higher levels. On systems using IA-64 architecture, this option enables optimizations for speed, including global code scheduling, software pipelining, predication, and speculation.
Enables O2 optimizations plus more aggressive optimizations, such as prefetching, scalar replacement, and loop and memory access transformations. Enables optimizations for maximum speed.
This option enables optimizations that do not increase code size and produces smaller code size than O2. It disables some optimizations that increase code size for a small speed benefit.
This option enables optimizations that do not increase code size and produces smaller code size than O2. It disables some optimizations that increase code size for a small speed benefit.
Enables additional interprocedural optimizations for single-file compilation.
Disables full and partial inlining enabled by interprocedural optimization options.
Disables partial inlining enabled by interprocedural optimization options.
This option enables interprocedural optimization between files. When you specify this option, the compiler performs inline function expansion for calls to functions defined in separate files.
Tells the compiler the maximum number of times to unroll loops.
Determines whether the compiler uses more aggressive unrolling for certain loops.
Tells the compiler to use aggressive multi-versioning to check for pointer aliasing and scalar replacement.
This option maximizes speed across the entire program by setting: -ipo, -O3, -no-prec-div, -static, and -xHost.
This option prevents linking with shared libraries. It causes the executable to link all libraries statically.
Causes Intel-provided libraries to be linked in statically.
Determines whether aliasing should be assumed in the program.
Determines whether aliasing should be assumed within functions.
This option tells the compiler if the program adheres to ISO C Standard aliasability rules. If the program adheres to these rules, then this option allows the compiler to optimize more aggressively. If it doesn't adhere to these rules, then it can cause the compiler to generate incorrect code.
C/C++: Determines whether variables and arrays are naturally aligned. Fortran: Tells the compiler how to align certain data items.
Tells the compiler to align functions on an optimal byte boundary (default 2).
Tells the compiler the stack alignment to use on entry to routines.
This option instructs the compiler to analyze and transform the program so that 64-bit pointers are shrunk to 32-bit pointers, and 64-bit longs (on Linux) are shrunk into 32-bit longs wherever it is legal and safe to do so. In order for this option to be effective the compiler must be able to optimize using the -ipo option and must be able to analyze all library/external calls the program makes.
This option controls the semantics of floating-point calculations.
-no-prec-div enables optimizations that improve performance but give slightly less precise results than full IEEE division -prec-div results in higher precision and less performance
-no-prec-sqrt enables optimizations that improve performance but give slightly less precise results than full IEEE division -prec-sqrt results in higher precision and less performance
Enables the combining or contraction of floating-point multiplications and add or subtract operations. Default is enabled except for fp-model strict.
Tells the compiler to generate code for IA-32 architecture.
Tells the compiler to generate code for Intel 64 architecture.
Enables (Disables) use of faster but slightly less accurate code sequences for math functions.
Enables the compiler to replace calls to transcendental functions with faster but less precise implementations.
Generates code that is not position-independent but has position-independent external references.
Tells the compiler to inline calls to calloc() as calls to malloc() and memset().
Specifies the percentage multiplier that should be applied to all inlining options that define upper limits.
Specifies that an inline routine should be inlined when ever the compiler can do so.
Specifies the level of inline function expansion.
Specifies the maximum number of times inlining may be applied to an entire compilation unit.
Specifies the maximum number of times the inliner may inline into a particular routine.
Specifies the upper limit for the size of what the inliner considers to be a small routine.
Specifies the lower limit for the size of what the inliner considers to be a large routine.
Specifies how much larger a routine can normally grow when inline expansion is performed.
Tells the compiler to inline functions declared with __inline and perform C++ inlining.
Enables function inlining for single file compilation.
Specifies the maximum size of a function to be inlined.
Specifies the maximum size of a function to be inlined.
Enables or disables prefetch insertion optimization.
Enables or disables prefetches that are issued before a loop is entered.
Enables or disables prefetches for a memory access in the next iteration of a loop.
Determines whether the compiler issues prefetches for stores with exclusive hint.
Causes Intel-provided libraries to be linked in dynamically.
Defines the memory model. Possible values are: - small: restrict code and data to the first 2GB of address space. All accesses of code and data can be done with Instruction Pointer (IP)-relative addressing. - medium: restrict code to the first 2GB, places no memory restriction on data. Accesses of code can be done with IP-relative addressing, but accesses of data must be done with absolute addressing. - large: Places no memory restriction on code or data. All accesses of code and data must be done with absolute addressing.
Tells the compiler to conform to the c99 language standard.
This option specifies if source files are in fixed format.
This option specifies if source files are in free format.
Specifies the format of unformatted files containing numeric data.
Specifies the length of the statement field in a fixed-form source file. 72: the statement field ends at column 72. (default if size is not specified) 132: the statement field ends at column 132.
This option flushes denormal results to zero when the application is in the gradual underflow mode. It may improve performance if the denormal values are not critical to your application's behavior.
Determines whether the compiler generates position-independent code.
Tells the compiler to generate position-independent code. The generated code can only be linked into executables.
Disables inline expansion of standard library or intrinsic functions.
This option improves floating-point consistency. It ensures the out-of-range check of operands of transcendental functions and improves the accuracy of floating-point compares.
This option enables improved floating-point consistency and may slightly reduce execution speed. It limits floating-point optimizations and maintains declared precision. It also disables inlining of math library functions.