Hewlett-Packard Company SPEC CPU2000 Flags Descriptions Intel C/C++/FORTRAN Compilers Version 8.0 ----------------------- Fortran Compiler Flags ------------------------- 'Version 8.0' as reported by ifort -v -FI Specifies source files are in fixed format (same as the -fixed option). -O2 or -O This option is the default for optimizations. How­ ever, if -g is specified, the default is -O0. On Itanium-based systems, the -O2 option enables optimizations for speed, including global code scheduling, software pipelining, predication, and speculation. It also enables: · Inlining of intrinsics · The following capabilities for performance gain: constant propagation, copy propagation, dead-code elimination, global register allocation, global instruction scheduling and control speculation, loop unrolling, optimized code selection, partial redundancy elimination, strength reduction/induc­ tion variable simplification, variable renaming, exception handling optimizations, tail recur­ sions, peephole optimizations, structure assign­ ment lowering and optimizations, and dead store elimination. -O3 Enables -O2 optimizations plus more aggressive optimizations, such as prefetching, scalar replace­ ment, and loop transformations. Enables optimiza­ tions for maximum speed, but does not guarantee higher performance unless loop and memory access transformations take place. On Itanium-based systems, the -O3 option enables optimizations for technical computing applications (loop-intensive code): loop optimizations and data prefetch. -ipo Enables multifile IP optimizations (between files). When you specify this option, the compiler performs inline function expansion for calls to functions defined in separate files. For this reason, it is important to compile the entire application or mul­ tiple, related source files together when you spec­ ify -ipo. -prof_gen Instruments a program for profiling. -prof_use Enables use of profiling information during opti­ mization. -------------------------- C Compiler Flags ----------------------------- 'Version 8.0' as reported by icc -v The Intel C++ Compiler applies the following optimizations when you invoke the -O1, -O2, or -O3 options: Constant propagation, copy propagation, dead-code elimination, global register allocation, instruction scheduling, loop unrolling (-O2, -O3 only), loop-invariant code movement, partial redundancy elimination, strength reduction/induc­ tion variable simplification, variable renaming, exception handling optimizations, tail recursions, peephole opti­ mizations, structure assignment lowering and optimiza­ tions, dead store elimination, and loop-invariant code motion. Depending on the Intel architecture, optimization options can have different effects. To specify optimizations for your target architecture, refer to the following: -O2 (DEFAULT) Optimize for code speed. This is the generally rec­ ommended optimization level. Itanium architecture-based systems: Turn software pipelining ON. -O3 Enable -O2 optimizations and in addition, enable more aggressive optimizations such as loop and mem­ ory access transformation. The -O3 optimizations may slow down code in some cases compared to -O2 optimizations. Recommended for applications that have loops with heavy use of floating point calcu­ lations and process large data sets. -ansi_alias[-] Enable(DEFAULT)[disable] stating ANSI compliance of the compiled program and that optimizations can be based on the ANSI rules (Itanium architecture-based systems: implies -restrict). This option directs the compiler to assume the following: · Arrays are not accessed out of bounds. · Pointers are not cast to non-pointer types, and vice-versa. · References to objects of two different scalar types cannot alias. For example, an object of type int cannot alias with an object of type float, or an object of type float cannot alias with an object of type double. If your program satisfies the above conditions, setting the -ansi_alias flag helps the compiler better optimize the program. However, if your pro­ gram does not satisfy one of the above conditions, the -ansi_alias flag may lead the compiler to gen­ erate incorrect code. -auto_ilp32 (Itanium architecture-based systems only) Specifies that the application should run within a 32-bit address space. Also tells the compiler to use 32-bit pointers whenever possible. To use this option, you must specify -ipo. -fast Enhance speed across the entire program. Sets the following command options that can improve run-time performance: -O3, -ipo, and -static. -ipo Enable multi-file IP optimizations (between files). When you use -ipo to specify multifile IPO, the compiler performs inline function expansion for calls to functions defined in separate files. For this reason, it is important to compile the entire application or multiple, related source files together when you specify -ipo. -prof_gen[x] Instruct the compiler to produce instrumented code in your object files in preparation for instru­ mented execution. With the x qualifier, extra information is gathered. This option is used in Phase 1 of PGO to instruct the compiler to produce instrumented code in your object files in prepara­ tion for instrumented execution. Parallel make is automatically supported for -prof_genx compila­ tions. -prof_use Instruct the compiler to produce a profile-opti­ mized executable and merge available dynamic infor­ mation (.dyn) files into a pgopti.dpi file. Use the -prof_use option in Phase 3 of PGO. -[no]restrict Enable [disable] the "restrict" keyword for disam­ biguating pointers. -static Prevent linking with shared libraries. Causes the executable to link all libraries statically, as opposed to dynamically.