Intel(R) C++ and Fortran Compiler 9.1 for Itanium --------------------------------------------- Intel(R) C++ and Fortran compiler options. Used for Bull NovaScale submissions. NAMES icc - invokes the Intel(R) C++ compiler ifort - invokes the Intel(R) Fortran Compiler pexec - tools to control placement of processes on CPUs SYNOPSIS icc [ options ] file1 [ file2 ...] where: options represents zero or more compiler options. filen is a C/C++ source (.C .c .cc .cp .cpp .cxx .c++ .i), assembly (.s), object (.o), static library (.a), or other linkable file. Note: The icpc command uses the same compiler options as the icc com- mand. Invoking the compiler using icpc compiles .c, and .i files as C++. Invoking the compiler using icc compiles .c and .i files as C. Using icpc always links in C++ libraries. Using icc only links in C++ libraries if C++ source is provided on the command line. DESCRIPTION The Intel(R) C++ Compiler is designed to process C and C++ programs on Intel architecture based systems. You can preprocess, compile, assem- ble, and link these programs. This document explains how information and instructions apply differ- ently to IA-32 applications, Intel(R) EM64T applications, and Ita- nium(R) architecture-based applications. If a description does not explicitly state a specific architecture, it is applicable to all. See the Intel C++ Compiler user documentation for more complete infor- mation than is presented here. Most language features are available on all supported systems. How- ever, some language features are only available on certain processors or a certain operating system. Such language features are labeled within parenthses as follows: i32 Means the feature is available on IA-32-based systems. i32em Means the feature is available on IA-32-based systems with Intel(R) Extended Memory 64 Technology (Intel(R) EM64T). i64 Means the feature is available on Itanium(R)-based systems. L*X Means the feature is available on Linux* systems. M*X32 Means the feature is available on Intel(R)-based systems run- ning Mac OS*. If a labeled feature is only available on certain processors or oper- ating systems, you will see the word ( only) within the label along with the appropriate abbreviation(s). If a labeled feature is not available on a certain processor or operating system, you will see the words (not on ) within the label along with the appropriate abbrevia- tion. If no label appears, the feature is available on all supported systems. gcc* Interoperability C++ compilers are interoperable if they can link object files and libraries generated by one compiler with object files and libraries generated by the second compiler, and the resulting executable runs successfully. The Intel(R) C++ Compiler options that affect gcc* interoperability include: · -cxxlib- · -gcc-name · -gcc-version · -fabi-version · -no-gcc (see gcc Predefined Macros for more information) · -[no-]gcc-extern-inline In the 9.1 compiler, there is improved compatibility with gcc regard- ing the behavior of extern inline functions. Previously, by default, the C99 standard was followed by always creating a body for extern inline functions. In 9.1, by default, no body is created unless the function cannot be inlined for some reason (for example, its address might be taken). If the C99 behavior, rather than the now default gcc behavior is desired, use the -no-gcc-extern-inline option. The Intel(R) C++ Compiler is interoperable with GNU gcc* compiler ver- sions greater than or equal to 3.2. See the Intel C++ Compiler User's Guide for more information. OPTION SUMMARIES Option Alphabetic Summary All of the Intel C++ Compiler options are listed alphabetically in this section. After each listing is a reference to the Functional area where a detailed description of the option appears. -A- see Preprocessor Options -A[] see Preprocessor Options -[no-]alias-args see Advanced Performance Options -[no]align see Language Options -ansi see Language Options -[no-]ansi-alias see Advanced Performance Options -auto-ilp32 see Advanced Performance Options -ax{K|W|N|B|P} see Performance Options, Optimization Levels, Automatic Processor-specific Optimization, Vectorization Options -B see Miscellaneous Options -c see Output, Debug, and PCH Options -C see Preprocessor Options -[no-]c99 see Language Options -[no-]clomp-sharable-info see Advanced Performance Options, Paral- lelization with OpenMP* -[no-]clomp-sharable-propagation see Advanced Performance Options, Paral- lelization with OpenMP* -[no-]cluster-openmp-profile see Advanced Performance Options, Paral- lelization with OpenMP* -[no-]cluster-openmp see Advanced Performance Options, Paral- lelization with OpenMP* -[no-]complex-limited-range see Advanced Performance Options -create-pch see Output, Debug, and PCH Options; Precom- piled Headers -cxxlib- see Linking or Linker Options -D[=] see Preprocessor Options -[no-]debug [keyword] see Output, Debug, and PCH Options -dD see Preprocessor Options -dM see Preprocessor Options -dN see Preprocessor Options -dryrun see Miscellaneous Options -dynamic-linker see Linking or Linker Options -dynamiclib see Linking or Linker Options -E see Preprocessor Options -EP see Preprocessor Options -export see Language Options -export-dir see Language Options -F see Mac OS Options -fabi-version= see Miscellaneous Options -f[no-]alias see Performance Options -fargument-[no-]alias see Advanced Performance Options -fargument-noalias-global see Advanced Performance Options -fast see Performance Options, Optimization Levels -fcode-asm see Output, Debug, and PCH Options -f[no-]common see Miscellaneous Options -fdata-sections see Performance Options -f[no-]exceptions see Performance Options -f[no-]fnalias see Performance Options -ffunction-sections see Performance Options -f[no-]inline see Performance Options -f[no-]inline-functions see Performance Options -finline-limit= see Performance Options -f[no-]math-errno see Miscellaneous Options -fminshared see Miscellaneous Options -fno-builtin see Miscellaneous Options -fno-builtin- see Performance Options, Miscellaneous Options -fno-gnu-keywords see Language Options -fno-implicit-inline-templates see Language Options -fno-implicit-templates see Language Options -f[no-]omit-frame-pointer see Performance Options -f[no-]non-lvalue-assign see Language Options -fno-operator-names see Language Options -[no-]fnsplit see Advanced Performance Options -fp see Performance Options -fpack-struct see Miscellaneous Options -fpascal-strings see Mac OS Options -fpermissive see Language Options -f[no-]pic see Miscellaneous Options -f[no-]PIC see Miscellaneous Options -fp-model see Advanced Performance Options -[no-]fp-port see Performance Options -fpstkchk see Performance Options -fr32 see Miscellaneous Options -f[no-]rtti see Language Options -freg-struct-return see Miscellaneous Options -fshort-enums see Language Options -fsource-asm see Output, Debug, and PCH Options -fstack-security-check see Miscellaneous Options -fsyntax-only see Language Options -ftemplate-depth- see Language Options -ftls-model= see Advanced Performance Options -ftrapuv see Output, Debug, and PCH Options -[no-]ftz see Advanced Performance Options -funroll-loops see Advanced Performance Options -funsigned-bitfields see Language Options -funsigned-char see Language Options -f[no]verbose-asm see Output, Debug, and PCH Options -fvisibility=[extern|default|protected|hidden|internal] see Miscellaneous Options -fvisibility-default= see Miscellaneous Options -fvisibility-extern= see Miscellaneous Options -fvisibility-hidden= see Miscellaneous Options -fvisibility-internal= see Miscellaneous Options -fvisibility-protected= see Miscellaneous Options -g see Output, Debug, and PCH Options -g0 see Output, Debug, and PCH Options -[no-]gcc-extern-inline see Miscellaneous Options -gcc-name= see Miscellaneous Options -gcc-version= see Miscellaneous Options -[no-]global-hoist see Miscellaneous Options -H see Preprocessor Options -help see Miscellaneous Options -I see Preprocessor Options -idirafter see Preprocessor Options -i-dynamic see Linking or Linker Options -imacros see Preprocessor Options -inline-debug-info see Output, Debug, and PCH Options -inline-factor see Advanced Performance Options -inline-forceinline see Advanced Performance Options -inline-max-per-compile see Advanced Performance Options -inline-max-per-routine see Advanced Performance Options -inline-max-size see Advanced Performance Options -inline-max-total-size see Advanced Performance Options -inline-min-size see Advanced Performance Options -ip see Advanced Performance Options, Interproce- dural Optimizations (IPO) -[no-]IPF-fltacc see Advanced Performance Options -IPF-flt-eval-method0 see Advanced Performance Options -[no-]IPF-fma see Advanced Performance Options -[no-]IPF-fp-relaxed see Advanced Performance Options -IPF-fp-speculation{fast|safe|strict|off} see Advanced Performance Options -ip-no-inlining see Advanced Performance Options -ip-no-pinlining see Advanced Performance Options -ipo[value] see Advanced Performance Options, Interproce- dural Optimizations (IPO) -ipo-c see Advanced Performance Options, Interproce- dural Optimizations (IPO) -ipo-S see Advanced Performance Options, Interproce- dural Optimizations (IPO) -ipo-separate see Advanced Performance Options, Interproce- dural Optimizations (IPO) -iprefix see Preprocessor Options -iquote see Preprocessor Options -i-static see Linking or Linker Options -isystem see Preprocessor Options -ivdep-parallel see Advanced Performance Options -iwithprefix see Preprocessor Options -iwithprefixbefore see Preprocessor Options -Kc++ see Language Options -kernel see Miscellaneous Options -l see Linking or Linker Options -L see Linking or Linker Options -long_double see Miscellaneous Options -M see Preprocessor Options -malign-double see Language Options -malign-mac68k see Mac OS Options -malign-natural see Mac OS Options -malign-power see Mac OS Options -map-opts see Output, Debug, and PCH Options -march={pentiumpro | pentiumii | pentiumiii | pentium2 | pen- tium3 | pentium4} see Performance Options -mcmodel= see Linking or Linker Options -mcpu={pentium | pentiumpro | pentium4 | itanium | itanium2 | itanium2-p9000} see Performance Options -MD see Preprocessor Options -mdynamic-no-pic see Mac OS Options -MF see Preprocessor Options -mfixed-range=f12-f15,f32-f127 see Miscellaneous Options -MG see Preprocessor Options -m[no-]ieee-fp see Performance Options -MM see Preprocessor Options -MMD see Preprocessor Options -mno-serialize-volatile see Advanced Performance Options -mp see Performance Options -MP see Preprocessor Options -mp1 see Performance Options -MQ see Preprocessor Options -m[no-]relax see Linking or Linker Options -mserialize-volatile see Advanced Performance Options -msse see Performance Options -msse2 see Performance Options -msse3 see Performance Options -MT see Preprocessor Options -mtune= see Performance Options -[no-]multibyte-chars see Miscellaneous Options -nobss-init see Miscellaneous Options -no-cpprt see Linking or Linker Options -nodefaultlibs see Linking or Linker Options -no-gcc see Preprocessor Options -nostartfiles see Linking or Linker Options -nostdinc see Preprocessor Options -nostdlib see Linking or Linker Options -o see Output, Debug, and PCH Options -O see Performance Options -O0 see Performance Options, Optimization Levels -O1 see Performance Options, Optimization Levels -O2 see Performance Options, Optimization Levels -O3 see Performance Options, Optimization Levels -Ob see Performance Options -openmp see Advanced Performance Options, Paral- lelization with OpenMP* -openmp-profile see Advanced Performance Options, Paral- lelization with OpenMP* -openmp-report{0|1|2} see Advanced Performance Options, Paral- lelization with OpenMP* -openmp-stubs see Advanced Performance Options, Paral- lelization with OpenMP* -opt-mem-bandwidth see Advanced Performance Options -opt-report see Advanced Performance Options -opt-report-file see Advanced Performance Options -opt-report-help see Advanced Performance Options -opt-report-level[{min|med|max}] see Advanced Performance Options -opt-report-phase{ipo|hlo|ilo|ecg|omp|all} see Advanced Performance Options, Paral- lelization with OpenMP* -opt-report-routine see Advanced Performance Options -Os see Performance Options -p see Advanced Performance Options -P see Preprocessor Options -parallel see Advanced Performance Options, Auto Paral- lelization Options -par-report{0|1|2|3} see Advanced Performance Options, Auto Paral- lelization Options -par-threshold[] see Advanced Performance Options, Auto Paral- lelization Options -pc{32|64|80} see Performance Options -pch see Output, Debug, and PCH Options; Precom- piled Headers -pch-dir see Output, Debug, and PCH Options; Precom- piled Headers -[no-]prec-div see Performance Options -[no-]prec-sqrt see Performance Options -[no-]prefetch see Advanced Performance Options -print-multi-lib see Output, Debug, and PCH Options -prof-dir see Advanced Performance Options, Pro- file-guided Optimizations (PGO) -prof-file see Advanced Performance Options, Pro- file-guided Optimizations (PGO) -prof-gen[x] see Advanced Performance Options, Pro- file-guided Optimizations (PGO) -prof-gen-sampling see Advanced Performance Options, Pro- file-guided Optimizations (PGO) -prof-use see Advanced Performance Options, Pro- file-guided Optimizations (PGO) -Qinstall see Component Control Options -Qlocation,, see Component Control Options -Qoption,, see Component Control Options -qp see Advanced Performance Options -rcd see Performance Options -reserve-kernel-regs see Miscellaneous Options -[no]restrict see Language Options -S see Output, Debug, and PCH Options -shared see Linking or Linker Options -shared-libcxa see Linking or Linker Options -[no-]sox see Miscellaneous Options -ssp see Advanced Performance Options -static see Linking or Linker Options -static-libcxa see Linking or Linker Options -std=c99 see Language Options -strict-ansi see Language Options -T see Linking or Linker Options -tcheck see Advanced Performance Options -[no]traceback see Compiler Diagnostics Options -u see Linking or Linker Options -U see Preprocessor Options -unroll see Advanced Performance Options -unroll0 see Advanced Performance Options -use-asm see Output, Debug, and PCH Options -use-msasm see Output, Debug, and PCH Options -use-pch see Output, Debug, and PCH Options; Precom- piled Headers -V see Miscellaneous Options -v see Miscellaneous Options -vec-report[{0|1|2|3|4|5}] see Advanced Performance Options --version see Miscellaneous Options -w see Compiler Diagnostics Options -w see Compiler Diagnostics Options -Wa[,,...] see Linking or Linker Options -W[no-]abi see Compiler Diagnostics Options -Wall see Compiler Diagnostics Options -Wbrief see Compiler Diagnostics Options -Wcheck see Compiler Diagnostics Options -W[no-]comment[s] see Compiler Diagnostics Options -Wcontext-limit= see Compiler Diagnostics Options -wd[,,...] see Compiler Diagnostics Options -W[no-]deprecated see Compiler Diagnostics Options -we[,,...] see Compiler Diagnostics Options -Werror see Compiler Diagnostics Options -Winline see Compiler Diagnostics Options -Wl,[,,...] see Linking or Linker Options -W[no-]main see Compiler Diagnostics Options -W[no-]missing-prototypes see Compiler Diagnostics Options -wn see Compiler Diagnostics Options -Wp64 see Compiler Diagnostics Options -Wp,[,,...] see Linking or Linker Options, Precompiled Headers -W[no-]pointer-arith see Compiler Diagnostics Options -wr[,,...] see Compiler Diagnostics Options -W[no-]return-type see Compiler Diagnostics Options -W[no-]shadow see Compiler Diagnostics Options -W[no-]uninitialized see Compiler Diagnostics Options -W[no-]unknown-pragmas see Compiler Diagnostics Options -W[no-]unused-function see Compiler Diagnostics Options -ww[,,...] see Compiler Diagnostics Options -X see Preprocessor Options -x see Miscellaneous Options -x{K|W|N|B|P} see Performance Options, Optimization Levels, Optimizing Exclusively for Specific Proces- sors, Vectorization Options -Xlinker see Linking or Linker Options -Zp[n] see Language Options Option Functional Summary All the options listed in the following summary are described in more detail in the sections that follow. Performance Options -ax{K|W|N|B|P} -f[no-]alias -fast -fdata-sections -f[no-]exceptions -f[no-]fnalias -ffunction-sections -f[no-]inline -f[no-]inline-functions -fin- line-limit= -fno-builtin- -f[no-]omit-frame-pointer -fp -[no-]fp-port -fpstkchk -march={pentiumpro | pentiumii | pentiumiii | pentium2 | pentium3 | pentium4} -mcpu={pentium | pentiumpro | pen- tium4 | itanium | itanium2 | itanium2-p9000} -m[no-]ieee-fp -mp -mp1 -msse -msse2 -msse3 -mtune= -O -O0 -O1 -O2 -O3 -Ob -Os -pc{32|64|80} -[no-]prec-div -[no-]prec-sqrt -rcd -x{K|W|N|B|P} Advanced Performance Options -[no-]alias-args -[no-]ansi-alias -auto-ilp32 -[no-]clomp-sharable-info -[no-]clomp-sharable-propaga- tion -[no-]cluster-openmp-profile -[no-]cluster-openmp -[no-]complex-limited-range -fargument[no-]-alias -far- gument-noalias-global -[no-]fnsplit -fp-model -ftls-model= -[no-]ftz -funroll-loops -inline-factor -inline-forceinline -inline-max-per-compile -inline-max-per-routine -inline-max-size -inline-max-total-size -inline-min-size -ip -[no-]IPF-fltacc -IPF-flt-eval-method0 -[no-]IPF-fma -[no-]IPF-fp-relaxed -IPF-fp-specula- tion{fast|safe|strict|off} -ip-no-inlining -ip-no-pin- lining -ipo[value] -ipo-c -ipo-S -ipo-separate -ivdep-parallel -mno-serialize-volatile -mserial- ize-volatile -openmp -openmp-profile -openmp-report{0|1|2} -openmp-stubs -opt-mem-band- width -opt-report -opt-report-file -opt-report-help -opt-report-level[{min|med|max}] -opt-report-phaseipo|hlo|ilo|ecg|omp|all -opt-report-routine -p -parallel -par-report{0|1|2|3} -par-threshold[] -[no-]prefetch -prof-dir -prof-file -prof-gen[x] -prof-gen-sampling -prof-use -qp -ssp -tcheck -unroll -unroll0 -vec-report[{0|1|2|3|4|5}] Output, Debug, and PCH Options -c -create-pch -[no-]debug[keyword] -fcode-asm -fsource-asm -ftrapuv -f[no]verbose-asm -g -g0 -inline-debug-info -map-opts -o -pch -pch-dir -print-multi-lib -S -use-asm -use-msasm -use-pch Preprocessor Options -A- -A[] -C -D[=] -dD -dM -dN -E -EP -H -I -idirafter -imacros -iprefix -iquote -isys- tem -iwithprefix -iwithprefixbefore -M -MD -MF -MG -MM -MMD -MP -MQ -MT -no-gcc -nostdinc -P -U -X Component Control Options -Qinstall -Qlocation,, -Qop- tion,, Language Options -[no]align -ansi -[no-]c99 -export -export-dir -fno-gnu-keywords -fno-implicit-inline-templates -fno-implicit-templates -f[no-]non-lvalue-assign -fno-operator-names -fpermissive -f[no-]rtti -fshort-enums -fsyntax-only -ftemplate-depth- -fun- signed-bitfields -funsigned-char -Kc++ -malign-double -[no]restrict -std=c99 -strict-ansi -Zp[n] Compiler Diagnostics Options -[no]traceback -w -w -W[no-]abi -Wall -Wbrief -Wcheck -W[no-]comment[s] -Wcontext-limit= -wd[,,...] -W[no-]deprecated -we[,,...] -Werror -Winline -W[no-]main -W[no-]missing-prototypes -wn -Wp64 -W[no-]pointer-arith -wr[,,...] -W[no-]return-type -W[no-]shadow -W[no-]uninitialized -W[no-]unknown-pragmas -W[no-]unused-function -ww[,,...] Miscellaneous Options -B -dryrun -fabi-version= -f[no-]common -f[no-]math-errno -fminshared -fno-builtin -fno-builtin- -fpack-struct -f[no-]pic -f[no-]PIC -fr32 -freg-struct-return -fstack-secu- rity-check -fvisibility=[extern | default | protected | hidden | internal] -fvisibility-default= -fvisi- bility-extern= -fvisibility-hidden= -fvisi- bility-internal= -fvisibility-protected= -[no-]gcc-extern-inline -gcc-name= -gcc-ver- sion= -[no-]global-hoist -help -kernel -long_dou- ble -mfixed-range=f12-f15,f32-f127 -[no-]multi- byte-chars -nobss-init -reserve-kernel-regs -[no-]sox -V -v --version -x Linking or Linker Options -cxxlib- -dynamic-linker -dynamiclib -i-dynamic -i-static -L -l -mcmodel -m[no-]relax -no-cpprt -node- faultlibs -nostartfiles -nostdlib -shared -shared-libcxa -static -static-libcxa -T -u -Wa[,,...] -Wl,[,,...] -Wp,[,,...] -Xlinker Mac OS Options -F -fpascal-strings -malign-mac68k -malign-natu- ral -malign-power -mdynamic-no-pic OPTION DESCRIPTIONS Performance Options The performance options act using general criteria to optimize code. The optimizations listed in this section are available for Intel architectures or are compatible with gcc compiler options. -ax (i32, i32em only) (not on M*X32) Generates code for Intel(R) Core(TM) Duo processors, Intel(R) Core(TM) Solo processors, Intel(R) Pentium(R) 4 processors with Streaming SIMD Extensions 3, and compat- ible Intel processors with Streaming SIMD Extensions 3. Generate code specialized for processor extensions spec- ified by while also generating generic IA-32 code. includes one or more of the following characters: K -- Intel Pentium III processors and compatible Intel processors W -- Intel Pentium 4 processors and compatible Intel processors N -- Intel Pentium 4 processors and compatible Intel processors. Enables new optimizations in addition to Intel processor-specific optimizations. B -- Intel Pentium M processors and compatible Intel processors. Enables new optimizations in addition to Intel processor-specific optimizations. P -- Intel(R) Core(TM) Duo, Intel(R) Core(TM) Solo, and Intel(R) Pentium(R) 4 Processors with Streaming SIMD Extensions 3 (SSE3) instruction support. Enables new optimizations in addition to Intel processor-specific optimizations. Note: The only -ax options available on Intel(R) EM64T-based systems are -axW and -axP. -f[no-]alias Assume [do not assume] aliasing in the program (DEFAULT = -falias). -fast The -fast option maximizes speed across the entire pro- gram. It sets command options that can improve run-time performance, as follows: i32, i32em: The -fast option turns on -O3, -ipo, -static, -no-prec-div, and -xP. IA-32 programs compiled with -fast will execute only on Intel(R) Pentium(R) 4 processors with Streaming SIMD Extensions 3 (SSE3). Programs compiled with this option will detect non-com- patible processors and generate an error message during execution. i64: The -fast option turns on -O3, -ipo, and -static. M*X32: The -fast option turns on -O3, -ipo, -mdy- namic-no-pic, and -no-prec-div. -fdata-sections Separate functions for the linker (COMDAT). Same as -ffunction-sections. -f[no-]exceptions The -f[no-]exceptions option turns off exception han- dling table generation, resulting in smaller code. Any use of exception handling constructs - try blocks, throw statements will produce an error. Exception specifica- tions are parsed but ignored. A preprocessor symbol __EXCEPTIONS is defined when this option is not used. It is undefined when this option is present. -f[no-]fnalias Assume [do not assume, but assume aliasing across calls] aliasing within functions (DEFAULT = -ffnalias). -ffunction-sections Separate functions for the linker (COMDAT). Same as -fdata-sections. -f[no-]inline Enables [disables] inlining of functions declared with the __inline keyword. Also enables inlining according to the C++ language. Same as -Ob1. -f[no-]inline-functions Inline [do not inline] certain interprocedural optimiza- tions for single file compilation. These optimizations are a subset of full intra-file interprocedural opti- mizations. Enables [does not enable] the compiler to perform inline function expansion for calls to functions defined within the current source file -finline-limit= Lets you specify the maximum size of a function to be inlined. -fno-builtin- Disable the intrinsic. -f[no-]omit-frame-pointer (i32, i32em only) The negative version is the same as -fp. -fp (i32, i32em only) Disable using EBP as general purpose register. -[no-]fp-port (i32, i32em only) Round floating-point results at assignments and casts (some speed impact). -fpstkchk (i32, i32em only) Generate extra code after every function call to assure that the FP stack is in the expected state. Generally, when the FP stack overflows, a NaN value is put into FP calculations, and the program's results differ. Unfortu- nately, the overflow point can be far away from the point of the actual bug. The -fpstkchk option places code that would access violate immediately after an incorrect call occurred, thus making it easier to locate these issues. -march= (i32, i32em only) Generate code exclusively for a given cpu, where is one of the following: pentiumpro -- Intel Pentium Pro processors pentiumii -- Intel Pentium II processors pentiumiii -- Intel Pentium III processors pentium2 -- Intel Pentium II processors pentium3 -- Intel Pentium III processors pentium4 -- Intel Pentium 4 processors -mcpu= Optimize for a specific cpu, where is one of the following: pentium -- (i32 only) Optimize for Intel Pentium proces- sor. pentiumpro -- (i32 only) Optimize for Intel Pentium Pro, Intel Pentium II and Intel Pentium III processors. pentium4 -- (i32 only; DEFAULT on IA-32) Optimize for Intel Pentium 4 processors. itanium -- (i64 only) Optimize for Intel Itanium proces- sor itanium2 -- (i64 only) Optimize for Intel Itanium 2 pro- cessor. itanium2-9000 -- (i64, L*X only) Optimize for Dual-Core Intel(R) Itanium(R) 2 Processor 9000 Sequence proces- sors. -m[no-]ieee-fp Same as -mp. -mp Maintain floating-point precision (disables some opti- mizations). The -mp option restricts optimization to maintain declared precision and to ensure that float- ing-point arithmetic conforms more closely to the ANSI and IEEE standards. For most programs, specifying this option adversely affects performance. If you are not sure whether your application needs this option, try compiling and running your program both with and without it to evaluate the effects on both performance and pre- cision. -mp1 Improve floating-point precision. -mp1 disables fewer optimizations and has less impact on performance than -mp. -msse (i32 only) Generate code for Intel Pentium III and compatible Intel processors. -msse2 (i32 only) Generate code for Intel Pentium 4 and compatible Intel processors. -msse3 (i32, i32em only) Generate code for Intel Pentium 4 processors with SSE3 extensions. -mtune= Optimize for a specific cpu, where is one of the following: pentium -- (i32 only) Optimize for Intel Pentium proces- sor. pentiumpro -- (i32 only) Optimize for Intel Pentium Pro, Intel Pentium II and Intel Pentium III processors. pentium4 -- (i32 only; DEFAULT on IA-32) Optimize for Intel Pentium 4 processors. itanium -- (i64 only) Optimize for Intel Itanium proces- sor itanium2 -- (i64 only) Optimize for Intel Itanium 2 pro- cessor. itanium2-9000 -- (i64, L*X only) Optimize for Dual-Core Intel(R) Itanium(R) 2 Processor 9000 Sequence proces- sors. -O0 Disable optimizations. -O Same as -O2 -O1 Optimize to favor code size and code locality. Disables loop unrolling. -O1 may improve performance for appli- cations with very large code size, many branches, and execution time not dominated by code within loops. In most cases, -O2 is recommended over -O1. i32: Disable intrinsics inlining to reduce code size. i64: Disable software pipelining and global code scheduling. -O2 (DEFAULT) Optimize for code speed. This is the generally recom- mended optimization level. i64: Turn software pipelining ON. -O3 Enable -O2 optimizations and in addition, enable more aggressive optimizations such as loop and memory access transformation, and prefetching. The -O3 option opti- mizes for maximum speed, but may not improve performance for some programs. The -O3 optimizations may slow down code in some cases compared to -O2 optimizations. Rec- ommended for applications that have loops with heavy use of floating point calculations and process large data sets. Turn on high-level optimizations. Enable -O2 plus more aggressive optimizations, such as loop transformation. i32, i32em: In conjunction with -ax{K|W|N|B|P} and -x{K|W|N|B|P} options, this option causes the compiler to perform more aggressive data dependency analysis than for -O2. This may result in longer compilation times. -Ob Control inline expansion, where is one of the fol- lowing values: 0 -- Disables inlining. 1 -- (DEFAULT) Enables inlining of functions declared with the __inline keyword. Also enables inlining accord- ing to the C++ language. 2 -- Inlines any function, at the compiler's discretion. Enables interprocedural optimizations and has the same effect as -ip. -Os Enable speed optimizations, but disable some optimiza- tions that increase code size for small speed benefit. -pc (i32, i32em only) Enable floating-point significand precision control. Some floating-point algorithms are sensitive to the accuracy of the significand, or fractional part of the floating-point value. For example, iterative operations like division and finding the square root can run faster if you lower the precision with the -pc option. Set to one of the following values to round the signifi- cand to the indicated number of bits: 32: 24 bits (single precision) -- Caution: A change of the default precision control or rounding mode (for example, by using the -pc32 flag or by user interven- tion) may affect the results returned by some of the mathematical functions. 64: 53 bits (double precision) 80: 64 bits (extended precision) -- DEFAULT -[no-]prec-div (i32, i32em only) Improve precision of floating-point divides (some speed impact). With some optimizations the Intel C++ Compiler changes floating-point division computations into multi- plication by the reciprocal of the denominator. For example, A/B is computed as A x (1/B) to improve the speed of the computation. However, for values of B greater than 2126, the value of 1/B is "flushed" (changed) to 0. When it is important to maintain the value of 1/B, use -no-prec-div to disable the float- ing-point division-to-multiplication optimization. The result of -no-prec-div is more accurate, with some loss of performance. -[no-]prec-sqrt (i32, i32em only) Determine if certain square root optimizations are enabled. -rcd (i32, i32em only) Enable fast float-to-int conversions. The Intel compiler uses the -rcd option to improve the performance of code that requires floating-point-to-integer conversions. The system default floating point rounding mode is round-to-nearest. However, the C language requires floating point values to be truncated when a conversion to an integer is involved. To do this, the compiler must change the rounding mode to truncation before each floating-point-to-integer conversion and change it back afterwards. The -rcd option disables the change to trun- cation of the rounding mode for all floating point cal- culations, including floating point-to-integer conver- sions. Turning on this option can improve performance, but floating point conversions to integer will not con- form to C semantics. -x (i32, i32em only) (not on M*X32) Generates code for Intel(R) Core(TM) Duo processors, Intel(R) Core(TM) Solo processors, Intel(R) Pentium(R) 4 processors with Streaming SIMD Extensions 3, and compat- ible Intel processors with Streaming SIMD Extensions 3. Generate specialized code to run exclusively on proces- sors supporting the extensions indicated by . includes one or more of the following charac- ters: K -- Intel Pentium III processors and compatible Intel processors W -- Intel Pentium 4 processors and compatible Intel processors N -- Intel Pentium 4 processors and compatible Intel processors with Streaming SIMD Extensions 2 (SSE2) instruction support. Enables new optimizations in addi- tion to Intel processor-specific optimizations. B -- Intel Pentium M processors and compatible Intel processors. Enables new optimizations in addition to Intel processor-specific optimizations. P -- Intel(R) Core(TM) Duo, Intel(R) Core(TM) Solo, and Intel(R) Pentium(R) 4 Processors with Streaming SIMD Extensions 3 (SSE3) instruction support. Enables new optimizations in addition to Intel processor-specific optimizations. Note: The only options available on Intel(R) EM64T-based systems are -xW and -xP. Note: If you specify more than one processor value, code is generated for only the highest-performing processor specified. For example, if you specify -xKW, only spe- cialized code for the Intel Pentium 4 processor is gen- erated. Note: Programs compiled using option -xN, -xB, or -xP will display a fatal run-time error if executed by an unsupported processor. For more information, see the Intel C++ Compiler User's Guide. Note: The -x option is not supported on M*X32 for this release. Compilations for M*X32 use the -xP option values to generate code for Intel Pentium 4 Processors with Streaming SIMD Extensions 3 (SSE3). Advanced Performance Options The advanced performance options allow fine tuning of compila- tion or allow control over advanced features of the compiler. -[no-]alias-args Assume [do not assume] arguments may be aliased. (DEFAULT = -no-alias-args). -[no-]ansi-alias The -[no-]ansi-alias option directs the compiler to assume that the program adheres to the rules defined in the ISO C Standard. If your program adheres to these rules, then this option will allow the compiler to opti- mize more aggressively. If it doesn't adhere to these rules, then it can cause the compiler to generate incor- rect code. -auto-ilp32 (i32em, i64 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. Note: The -auto-ilp32 option applies to i64 and i32em, but with i32em it has no effect unless option -xP or option -axP is also specified. It does not apply to i32. -[no-]complex-limited-range Tell the compiler to use the highest performance formu- lations of complex arithmetic operations, which may not produce acceptable results for input values near the top or bottom of the legal range. Without this option, the compiler uses a better formulation of complex arithmetic operations, thus producing acceptable results for the full range of input values, though at some loss in per- formance. -[no-]clomp-sharable-info (i32em, i64 only) Reports variables that the compiler automatically makes sharable for Cluster OpenMP*. -[no-]clomp-sharable-propagation (i32em, i64 only) Reports variables that need to be made sharable by the user with Cluster OpenMP*. -[no-]cluster-openmp (i32em, i64 only) Compiles an OpenMP* program for execution on a cluster. -[no-]cluster-openmp-profile (i32em, i64 only) Compiles an OpenMP* program for execution on a cluster, and links with a performance statistics library. -fargument-[no-]alias Same as -[no-]alias-args. -fargument-noalias-global Arguments do not alias each other and do not alias global storage. -[no-]fnsplit (i64 only) Enable[disable] function splitting. Function splitting is enabled by -prof-use in Phase 3 to improve code locality by splitting routines into different sections: one section to contain the cold or very infrequently executed code, and one section to contain the rest of the code (hot code). You can use -[no-]fnsplit to disable function splitting for the following reasons: · Most importantly, to get improved debugging capa- bility. In the debug symbol table, it is difficult to represent a split routine, that is, a routine with some of its code in the hot code section and some of its code in the cold code section. · The -no-fnsplit option disables the splitting within a routine but enables function grouping, an optimization in which entire routines are placed either in the cold code section or the hot code section. Function grouping does not degrade debug- ging capability. · When the profile data does not represent the actual program behavior, that is, when the routine is actually used frequently rather than infrequently. -fp-model Enable floating point model variation. -ftls-model= Change thread-local storage model, where can be the following: · global-dynamic · local-dynamic · initial-exec · local-exec -ftz (i64 only) Flush denormal results to zero. -funroll-loops Unroll loops based on default heuristics. -[no-]inline-factor= Specifies the percentage multiplier that should be applied to all inlining options that define upper limits. The value is a positive integer specifying the percentage value. The default value is 100 (a factor of 1). -inline-forceinline Specifies that an inline routine should be inlined whenever the compiler can do so. (Default OFF) -[no-]inline-max-per-compile= Specifies the maximum number of times inlining may be applied to an entire compilation unit. The value is a positive integer that specifies the number of times inlining may be applied. (Default OFF) -[no-]inline-max-per-routine= Specifies the maximum number of times the inliner may inline into a particular routine. The value is a positive integer that specifies the maxi- mum number of times the inliner may inline into a particular routine. (Default OFF) -[no-]inline-max-size= Specifies the lower limit for the size of what the inliner considers to be a large routine. The value is a positive integer that specifies the mini- mum size of what the inliner considers to be a large routine. (Default OFF) -[no-]inline-max-total-size= Specifies how much larger a routine can normally grow when inline expansion is performed. The value is a positive integer that specifies the per- mitted increase in the routine's size when inline expansion is performed. (Default OFF) -[no-]inline-min-size= Specifies the upper limit for the size of what the inliner considers to be a small routine. The value is a positive integer that specifies the maxi- mum size of what the inliner considers to be a small routine. (Default OFF) -ip Enable additional interprocedural optimizations for single file compilation. These optimizations are a subset of full intra-file interprocedural optimiza- tions. -IPF-flt-eval-method0 (i64 only) Direct the compiler to evaluate the expressions involving floating-point operands in the precision indicated by the variable types declared in the program. -[no-]IPF-fltacc (i64 only) Enable [disable] optimizations that affect floating point accuracy. By default (-IPF-fltacc-) the compiler may apply optimizations that reduce float- ing-point accuracy. You may use -IPF-fltacc or -mp to improve floating-point accuracy, but at the cost of disabling some optimizations. -[no-]IPF-fma (i64 only) Enable [disable] the combining of floating point multiplies and add/subtract operations. -IPF-fma[-] enables [disables] the contraction of float- ing-point multiply and add/subtract operations into a single operation. Unless -mp is specified, the compiler contracts these operations whenever possi- ble. The -mp option disables the contractions. -IPF-fma and -IPF-fma- can be used to override the default compiler behavior. -[no-]IPF-fp-relaxed (i64 only) Enable [disable] use of faster but slightly less accurate code sequences for math functions, such as divide and square root. -IPF-fp-speculation{fast|safe|strict|off} (i64 only) Enable floating point speculations with the follow- ing conditions: fast -- Speculate floating point operations safe -- Speculate only when safe strict -- Same as off off -- Disables speculation of floating-point oper- ations -ip-no-inlining Disable inlining that would result from the -ip interprocedural optimization, but has no effect on other interprocedural optimizations. -ip-no-pinlining (i32, i32em only) Disable partial inlining (requires -ip or -ipo) -ipo[value] 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. The [value] argument is an optional integer that specifies the number of object files the compiler should create. Any integer greater than or equal to 0 is valid. If [value] is 0, the compiler decides whether to create one or more object files based on an esti- mate of the size of the object file. It generates one object file for small applications, and two or more object files for large applications. If [value] is positive, the compiler generates [value] object files, unless [value] exceeds the number of source files (m), in which case the com- piler generates only m object files. If you do not specify [value], the default is 1. -ipo-c Generate a multi-file object file (ipo-out.o) that can be used in further link steps. -ipo-S Generate a multi-file assembly file (ipo-out.s) that can be used in further link steps. -ipo-separate Creates one object file for every source file. This option overrides -ipo[value]. -ivdep-parallel (i64 only) Indicate there is absolutely no loop-carried memory dependency in any loop where IVDEP directive is specified. This technique is useful for some sparse matrix applications. -mno-serialize-volatile (i64 only) Memory access ordering for volatile data object references may be suppressed. -mserialize-volatile (i64 only) Enable strict memory access ordering for volatile data object references. -openmp Enable the parallelizer to generate multi-threaded code based on the OpenMP* directives. The code can be executed in parallel on both uniprocessor and multiprocessor systems. The -openmp option works with both -O0 (no optimization) and any optimiza- tion level of -O1, -O2 (default) and -O3. Specify- ing -O0 with -openmp helps to debug OpenMP applica- tions. -openmp-profile Enables analysis of OpenMP* applications with Intel(R) Thread Profiler, which is required to use this option. -openmp-report[] Control the OpenMP parallelizer's level of diagnos- tic messages, where is one of the following: 0 -- no diagnostic information is displayed. 1 -- Display diagnostics indicating loops, regions, and sections successfully parallelized. (DEFAULT) 2 -- same as -openmp-report1 plus diagnostics indi- cating MASTER constructs, SINGLE constructs, CRITI- CAL constructs, ORDERED constructs, ATOMIC direc- tives, etc. successfully handled. -openmp-stubs Enable the user to compile OpenMP programs in sequential mode. The openmp directives are ignored and a stub OpenMP library is linked (sequential). -opt-mem-bandwidth (i64, L*X only) Enables or disables performance tuning and heuris- tics that control memory bandwidth use among pro- cessors. It allows the compiler to be less aggres- sive with optimizations that might consume more bandwidth, so that the bandwidth can be well-shared among multiple processors for a parallel program. For values of greater than 0, the option tells the compiler to enable a set of performance tuning and heuristics in compiler optimizations such as prefetching, privatization, aggressive code motion, and so forth, for reducing memory bandwidth pres- sure and balancing memory bandwidth traffic among threads. The value is the level of optimizing for memory bandwidth usage. You can specify one of the following values for : 0 -- Disables a set of performance tuning and heuristics in compiler optimizations for parallel code. This is the default for serial code. 1 -- Enables a set of performance tuning and heuristics in compiler optimizations for multi- threaded code generated by the compiler. This is the default if compiler option -parallel or -openmp is specified, or Cluster OpenMP option -clus- ter-openmp is specified (see the Cluster OpenMP documentation). 2 -- Enables a set of performance tuning and heuristics in compiler optimizations for parallel code such as Windows Threads, pthreads, and MPI code, besides multithreaded code generated by the compiler. -opt-report Generate an optimization report and direct it to stderr. DEFAULT: The compiler does not generate optimiza- tion reports. -opt-report-file Specify the filename for the generated report -opt-report-help List the logical names of optimizers available for report generation. -opt-report-level[] Specify the level of report verbosity, where is one of the following: min -- The min argument provides the minimal sum- mary (DEFAULT) med -- The med argument produces an intermedi- ate-level report. max -- The max argument produces the full report. -opt-report-phase Specify the optimizer phase against which reports are generated. The compiler generates reports for the optimizer you specify in the . This option can be used multiple times on the same com- mand line to generate reports for multiple optimiz- ers. Currently, the following optimizer reports are supported: ipo -- Interprocedural Optimizer hlo -- High Level Optimizer ilo -- Intermediate Language Scalar Optimizer ecg -- Code Generator omp -- OpenMP all -- All phases When one of the above logical names for optimizers is specified for , all reports from that optimizer are generated. -opt-report-routine Generate reports from all routines with names con- taining as part of their name. If is not specified, reports from all routines are generated. DEFAULT: The compiler generates reports for all routines. -p Compile and link for function profiling with Linux gprof* tool. Same as -qp. -parallel Enable the auto-parallelizer to generate multi-threaded code for loops that can be safely executed in parallel. The -parallel option enables the auto-parallelizer if either the -O2 or -O3 optimization option is also on (the default is -O2). -par-report[] Control the level of auto-parallelizer diagnostic messages, where is one of the following: 0 -- no diagnostic information is displayed. 1 -- indicates loops successfully auto-parallelized (DEFAULT). Issues a "LOOP AUTO-PARALLELIZED" mes- sage for parallel loops. 2 -- indicates successfully auto-parallelized loops as well as unsuccessful loops. 3 -- same as 2 plus additional information about any proven or assumed dependencies inhibiting auto-parallelization (reasons for not paralleliz- ing). -par-threshold[] Set a threshold for the auto-parallelization of loops based on the probability of profitable execution of the loop in parallel. This option is used for loops whose computation work volume cannot be determined at compile-time. The threshold is usually relevant when the loop trip count is unknown at compile-time. =0-100. (DEFAULT: =75) The compiler applies a heuristic that tries to bal- ance the overhead of creating multiple threads ver- sus the amount of work available to be shared amongst the threads. -[no-]prefetch (i64 only) Enables [disables] the insertion of software prefetching by the compiler. Default is -prefetch. -prof-dir Specify directory for profiling output files (*.dyn and *.dpi). Use the -prof-dir option with prof-gen as recommended for most programs, espe- cially if the application includes the source files located in multiple directories. -prof-dir ensures that the profile information is generated in one consistent place. -prof-file Specify file name for profiling summary file -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-gen-sampling Prepare code for use with the profrun sample gath- ering tool. -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. -qp Compile and link for function profiling with Linux gprof* tool. Same as -p. -ssp (i32 only) Enable software-based speculative pre-computation. -tcheck The -tcheck compiler option enables analysis of threaded applications with Intel(R) Thread Checker, which is required to use this option. -unroll (i32, i32em only) Set maximum number of times to unroll loops. This applies only to loops that the compiler determines should be unrolled. Omit n to let the compiler decide whether to perform unrolling or not. Use n=0 to disable loop unrolling. -unroll0 (i64 only) Disable loop unrolling. For i64: the only allowed value is 0. -vec-report[] (i32, i32em only) Control the vectorizer's level of diagnostic mes- sages, where is one of the following: 0 -- No diagnostic information 1 -- Indicate vectorized loops (DEFAULT) 2 -- Indicate vectorized/non-vectorized loops 3 -- Indicate vectorized/non-vectorized loops and prohibiting data dependence information 4 -- Indicate non-vectorized loops 5 -- Indicate non-vectorized loops and prohibiting data dependence information If you use -c, -ipo with -vec-report{n} option or -c, -x{K|W|N|B|P} or -ax{K|W|N|B|P} with -vec-report[], the compiler issues a warning and no report is generated. Output, Debug, and PCH Options The output, debug, and PCH options provide control over com- piler output, setup for debugging, and use of the precompiled header features of the compiler. -c Compile to object (.o) only, do not link. -create-pch Manual creation of precompiled header . Use the -create-pch option if you want the com- piler to create a PCH file called . The file- name parameter must be specified. The filename parame- ter can be a full path name. The full path to filename must exist. The .pchi extension is not automatically appended to filename. This option cannot be used in the same compilation as -use-pch filename. The -create-pch filename option is supported for single source file compilations only. -[no-]debug[keyword] Enable debug information and control output of enhanced debug information. The supported [keywords] are extended, [no]variable-locations, [no]semantic-stepping, [no-]expr-source-pos, and [no]inline_debug_info}. The debug switches control emission of enhanced debug infor- mation. They must be used in conjunction with the basic -g switches that request debug information. extended -- Turns on the -debug options; · -debug [no-]expr-source-pos, · -debug [no]variable-locations, · -debug [no]semantic-stepping, and · -debug [no]inline_debug_info. [no-]expr-source-pos -- Determines whether source position information at the expression level of granularity is produced. [no]variable-locations -- Determines whether enhanced debug information useful in finding scalar local variables is produced. [no]semantic-stepping -- Determines whether enhanced debug information useful for breakpoints and stepping is produced. [no]inline_debug_info -- Determines whether enhanced debug information is produced for inlined code. -fcode-asm Produce assembly file with optional code annota- tions. -fsource-asm Produce assembly file with optional code annota- tions. -ftrapuv Initializes stack local variables to an unusual value to help error detection. -f[no]verbose-asm Produce assembly file with compiler comments (DEFAULT). -g Produce symbolic debug information in object file. The compiler does not support the generation of debugging information in assemblable files. If you specify the -g option, the resulting object file will contain debugging information, but the assem- blable file will not. The -g option changes the default optimization from -O2 to -O0. If you specify -g with -O1, -O2, or -O3, then -fp is disabled and allows the compiler to use the EBP register as a general-purpose register in optimiza- tions. However, most debuggers expect EBP to be used as a stack frame pointer, and cannot produce a stack backtrace unless this is so. Using the -fp option can result in slightly less efficient code. i32 only: Specifying the -g or -O0 option automati- cally enables the -fp option. -g0 Disable generation of symbolic debug information. -inline-debug-info Preserve the source position of inlined code instead of assigning the call-site source position to inlined code. -map-opts (not on M*X32) Enable option mapping tool. -o This option specifies the name of an output file as follows: · If the -c option is specified, it specifies the name of the generated object file. · If the -S option is specified, it specifies the name of the generated assembly listing file. · If the -P option is specified, it specifies the name of the generated preprocessor file. Otherwise, it specifies the name of the executable file. -pch Automatic processing for precompiled headers. Direct the compiler to use appropriate PCH files. If none are available, they are created as source- file.pchi. This option supports multiple source files. Note: The -pch option uses PCH files created from other sources if the headers files are the same. For example, if you compile source1.cpp using -pch, then source1.pchi is created. If you then compile source2.cpp using -pch, the compiler will use source1.pchi if it detects the same headers. -pch-dir Directs the compiler to find and/or create a file for pre-compiled headers in dirname. Use the -pch-dir option to specify the path (dirname) to the PCH file. You can use this option with -pch, -create-pch filename, and -use-pch file- name. -print-multi-lib Print information about libraries being used. -S Compile to an assemblable file (.s), then stop the compilation. -use-asm Produce objects through the assembler. Note: GNU inline assembler (asm) code and Microsoft inline assembler (msasm) code cannot be used together in the same translation unit. -use-msasm (i32, i32em only) Support Microsoft* style assembly language inser- tion using MASM style syntax and, if requested, output assembly in MASM format. Note: GNU inline assembler (asm) code and Microsoft inline assembler (msasm) code cannot be used together in the same translation unit. -use-pch Manual use of precompiled header (filename.pchi). This option directs the compiler to use the PCH file specified by filename. It cannot be used in the same compilation as -create-pch . The -use-pch option supports full path names and supports multiple source files when all source files use the same .pchi file. Preprocessor Options The preprocessor options listed here control preprocessing operations for the compiler. -A- Remove all predefined macros. Causes all predefined macros and assertions to be inactive. -A[] Associate a symbol with the specified sequence of . Equivalent to an #assert preprocessing directive. -C Preserve comments in preprocessed source output. Com- ments following preprocessing directives are not pre- served. -D[=] Define the macro and associate it with the speci- fied . Equivalent to a #define preprocessing directive. DEFAULT: -D defines the macro with a of 1. -dD Same as -dM, but outputs #define directives in prepro- cessed source. -dM Output macro definitions in effect after preprocessing (use with -E). -dN Same as -dD, but #define directives contain only macro names. -E Direct the preprocessor to expand your source module and write the result to standard output. The preprocessed source contains #line directives, which the compiler uses to determine the source file and line number. -EP Direct the preprocessor to expand your source module and write the result to standard output. Does not include #line directives in the output. -EP is equivalent to -E -P. -H Print "include" file order and continue compilation. -I Add directory to include file search path. For multiple search directories, multiple I commands must be used. The compiler searches directories for include files in the following order: 1. Directory of the source file that contains the include. 2. Directo- ries specified by the -I option. -idirafter Add directory to the second include file search path (after -I). -imacros Treat as an #include file, but throw away all preprocessing while the macros that are defined remain defined. -iprefix Use with -iwithprefix as a prefix. -iquote Add to the front of the include file search path for files included with quotes but not brackets. (DEFAULT = OFF) -isystem Add directory to the start of the system include path. -iwithprefix Append to the prefix passed in by -iprefix and put it on the include search path at the end of the include directories. -iwithprefixbefore Similar to -iwithprefix except the include directory is placed in the same place as the -I command line include directories. -M Generate makefile dependency lines for each source file, based on the #include lines found in the source file. -MD Preprocess and compile. Generate output file (.d exten- sion) containing dependency information. -MF Generate makefile dependency information in . Must specify -M or -MM. -MG Similar to -M, but treats missing header files as gener- ated files. -MM Similar to -M, but does not include system header files. -MMD Similar to -MD, but does not include system header files. -MP Add a phony target for each dependency. -MQ Same as -MT, but quotes special Make characters. -MT Change the default target rule for dependency genera- tion. -no-gcc Do not predefine the __GNUC__, __GNUC_MINOR__, and __GNUC_PATCHLEVEL__ macros. -nostdinc Same as -X. -P Direct the preprocessor to expand your source module and store the result in a .i file in the current directory. Unlike the -E option, the output from -P does not include #line number directives. By default, the prepro- cessor creates the name of the output file using the prefix of the source file name with a .i extension. Caution: When you use the -P option, any existing files with the same name and extension are overwritten. -U Remove predefined macro. Equivalent to a #undef prepro- cessing directive. -X Remove standard directories from include file search path. You can use the -X option with the -I option to prevent the compiler from searching the default path for include files and direct it to use an alternate path. Component Control Options You can direct the compiler to specify alternate tools for pre- processing, compilation, assembly, and linking. Further, you can invoke options specific to your alternate tools on the com- mand line. These are the component control options. -Qinstall Set as the root of the compiler installation. -Qlocation,, Set as the location of the tool specified by . may be cpp, c, asm, or ld. is the complete path to the tool. For example: -Qlocation,gas, Specifies the GNU assembler. -Qlocation,gld, Specifies the GNU linker. -Qoption,, Pass options to the tool specified by . may be cpp, c, asm, or ld. The argu- ment indicates one or more valid argument strings for the designated program. If the argument is a com- mand-line option, you must include the hyphen. If the argument contains a space or tab character, you must enclose the entire argument in quotation characters (""). You must separate multiple arguments with commas. Language Options The language options define parameters and standards for the compiler with reference to the C/C++ source files. -[no]align (i32, i32em only) Analyze and reorder memory layout for variables and arrays. -ansi Support all ANSI standard C programs, equivalent to the -ansi option of gcc. -[no-]c99 Enable [disable] C99 support for C programs. -export Enable recognition of exported templates. Supported in C++ mode only. -export-dir Specifies a directory name for the exported template search path. -fno-gnu-keywords Do not recognize 'typeof' as a keyword. -fno-implicit-inline-templates Do not emit code for implicit instantiations of inline templates. -fno-implicit-templates Never emit code for non-inline templates which are instantiated implicitly (i.e. by use); only emit code for explicit instantiations. -f[no-]non-lvalue-assign Allow [disallow] casts and conditional expressions to be used as lvalues. (DEFAULT = allow) -fno-operator-names Disable support for operator name keywords. -fpermissive Allow for non-conformant code. -f[no-]rtti Enable [disable] RTTI support. -fshort-enums Allocate as many bytes as needed for enumerated types. -fsyntax-only Same as -syntax. -ftemplate-depth- Control the depth to which recursive templates are expanded. -funsigned-bitfields Change default bitfield type to unsigned. -funsigned-char Change default char type to unsigned. -Kc++ Compile all source or unrecognized file types as C++ source files. -malign-double (i32, i32em only) Same as -align. -[no]restrict Enable [disable] the "restrict" keyword for disambiguat- ing pointers. -std=c99 Enable C99 support for C programs -strict-ansi Select strict ANSI C/C++ conformance dialect -Zp[n] Specify alignment constraint for structure and union types, where n is one of the following: 1,2,4,8,16. Compiler Diagnostics Options The compiler diagnostics options define and control aspects of the compilation associated with diagnostics. -[no]traceback Tells the compiler to generate [not generate] extra information in the object file to allow the display of source file traceback information at run time when a severe error occurs. This is intended for use with C code that is to be linked into a Fortran program. -w Disable all warnings. Displays error messages only. -w Control diagnostics, where is one of the following: 0 -- Display errors (same as -w) 1 -- Display warnings and errors (DEFAULT) 2 -- Display remarks, warnings, and errors -W[no-]abi Warn [do not warn] if generated code is not C++ ABI com- pliant (Default = -Wno-abi). -Wall Enable all warnings. -Wbrief Print brief one-line diagnostics. When enabled, the original source line is not displayed and the error mes- sage text is not wrapped when too long to fit on a sin- gle line. -Wcheck Enable more strict diagnostics. Performs compile-time code checking for code that exhibits non-portable behav- ior, represents a possible unintended code sequence, or possibly affects operation of the program because of a quiet change in the ANSI C Standard. -W[no-]comment[s] Warn when /* appears in the middle of a /* */ comment. -Wcontext-limit= Set maximum number of template instantiation contexts shown in diagnostic. -wd[,,...] Disable diagnostics L1 through LN. -W[no-]deprecated Print warnings related to deprecated features. -we[,,...] Change severity of diagnostics L1 through LN to error. -Werror Force warnings to be reported as errors. -Winline Enable inline diagnostics. -W[no-]main Warn if return type of main is not expected. -W[no-]missing-prototypes Warn for missing prototypes. -wn Print a maximum of errors displayed before the com- piler aborts. By default, if more than 100 errors are displayed, compilation aborts. Remarks and warnings do not count towards this limit. -Wp64 Print diagnostics for 64-bit porting. -W[no-]pointer-arith Warn for questionable pointer arithmetic. -wr[,,...] Change severity of diagnostics L1 through LN to remark. -W[no-]return-type Warn when a function uses the default int return type and warn when a return statement is used in a void func- tion. -W[no-]shadow Warn if a variable declaration hides a previous variable declaration. -W[no-]uninitialized Warn if a variable is used before being initialized. -W[no-]unknown-pragmas Warn if an unknown #pragma directive is used (DEFAULT). -W[no-]unused-function Warn if declared function is not used. -ww[,,...] Change severity of diagnostics L1 through LN to warning. Miscellaneous Options The miscellaneous options cover a variety of unrelated tasks related to the compiler. -B Specifies the directory (dir) that can be used to find libraries, headers, and executables for the compiler itself. -dryrun Show driver tool commands but do not execute tools. -fabi-version= Instructs the compiler to select a specific ABI imple- mentation, where is the ABI implementation. Pos- sible values are:. 0 -- Requests all the latest ABI fixes. Default if gcc version 3.2 is installed. 1 -- Requests the ABI used in gcc 3.3. Default if gcc version 3.3 is installed. 2 -- Requests the ABI used in gcc 3.4 and higher. Default if gcc version 3.4 or higher is installed. -f[no-]common Enables the compiler to treat common variables as if they were defined, allowing the use of gprel addressing of common data variables. -f[no-]math-errno Set ERRNO after calling standard math library functions. -fminshared Compilation is for the main executable. Absolute addressing can be used and non-position independent code generated for symbols that are at least protected. -fno-builtin Disable inline expansion of intrinsic functions. -fno-builtin- Disable the intrinsic. -fpack-struct Pack structure members together. -f[no-]pic, -f[no-]PIC i32: This option generates position independent code. By default this option is OFF. i64: This option generates code allowing full symbol preemption. By default this option is OFF. -fr32 (i64 only) Disable use of high floating point registers. Use only lower 32 floating-point registers. -freg-struct-return Return struct and union values in registers when possi- ble. -fstack-security-check (i32, i32em only) Enable overflow security checks. -fvisibility=[extern|default|protected|hidden|internal] Global symbols (data and functions) will get the visi- bility attribute given by default. Symbol visibility attributes explicitly set in the source code or using the symbol visibility attribute file options will over- ride the -fvisibility setting. -fvisibility-default= Space separated symbols listed in the argument will get visibility set to default. -fvisibility-extern= Space separated symbols listed in the argument will get visibility set to extern. -fvisibility-hidden= Space separated symbols listed in the argument will get visibility set to hidden. -fvisibility-internal= (not on M*X32) Space separated symbols listed in the argument will get visibility set to internal. -fvisibility-protected= (not on M*X32) Space separated symbols listed in the argument will get visibility set to protected. -[no-]gcc-extern-inline The -gcc-extern-inline flag, by default, lays down a body for a function declared to be extern inline. The gcc compiler, however, never lays down a body for a function declared to be extern inline. Instead, gcc treats the function as if it were declared extern but with no definition in the compilation unit. No body is created unless the function cannot be inlined for some reason (for example, its address might be taken). The body laid down for a function because of this flag will always be weak so a non-weak definition elsewhere in the compilation will be used instead. If you want the C99 behavior rather than the now default (more) gcc like behavior, use the -no-gcc-extern-inline flag. This flag is on (i.e. -gcc-extern-inline) by default. -gcc-name= Use this option to specify the location of g++ when com- piler cannot locate gcc C++ libraries. For use with -cxxlib- configuration. The argument is the full path location of g++. Use this option when refer- encing a non-standard gcc installation. -gcc-version= This option provides compatible behavior with gcc, where indicates the gcc version. The required values for are: not set -- if gcc version is older than 3.2 320 -- if gcc version is 3.2 330 -- if gcc version is 3.3 340 -- if gcc version is 3.4 400 -- if gcc version is 4.0 410 -- if gcc version is 4.1 Note: The version number follows a format where the first number represents the major version, the sec- ond number represents the minor version, and the third number is normally zero. For example, the 3.3.1 gcc version is represented as 330. -[no-]global-hoist Enables [disables] hoisting and speculative loads of global variables. -help Print list of compiler options. -kernel (i64 only) Generates code for inclusion in the kernel. Prevents generation of speculation as support may not be avail- able when code runs. Suppresses software pipelining. -long_double (i32, i32em only) Enable 80-bit 'long double'. The -long_double option is ON by default (80-bit) for L*X and M*X32. -mfixed-range= (i64 only) Reserves certain registers (=f12-f15, f32-f127) for use by the kernel. -[no-]multibyte-chars Provide support for multi-byte characters. -nobss-init Place variables that are initialized with zeroes in the DATA section instead of the BSS section. -reserve-kernel-regs (i64 only) Reserves registers f12-f15 and f32-f127 for use by the kernel. These will not be used by the compiler. -[no-]sox Enable (DEFAULT) [disable] saving of compiler options and version in the executable. -V Display compiler version information. -v Show driver tool commands and execute tools. --version Display GCC style version information. Note that two '-'s are required. -x All source files found subsequent to -x will be recognized as one of the following types: c -- C source file c++ -- C++ source file c-header -- C header file cpp-output -- C pre-processed file c++-cpp-output -- C++ pre-processed file assembler -- Assembly file assembler-with-cpp -- Assembly file that needs to be preprocessed none -- Disable recognition, and revert to file exten- sion Linking or Linker Options The linking/linker options group all link-related options together. -cxxlib- Tells the compiler to link using certain C++ runtime libraries. You can specify one of the following values for : gcc[=] -- Link using the C++ run-time libraries provided with the gcc compiler. The parameter is an optional top-level location for the gcc binaries and libraries. icc -- Link using the C++ run-time libraries provided by Intel. -dynamic-linker Select a dynamic linker (filename) other than the default. -dynamiclib (i32, M*X32 only) Invokes the libtool command to generate dynamic libraries. -i-dynamic Link Intel provided libraries dynamically. -i-static Links Intel-provided libraries statically. -L or -l Instruct the linker to search for a specified library when linking. Because the linker searches and processes libraries and object files in the order they are specified, specify this option following the last applicable object file. -mcmodel= (i32, L*X only) Tells the compiler to use a specific memory model to generate code and store data. Default is -mcmodel=small. -m[no-]relax (i64 only) Pass [do not pass] -relax to the linker. (DEFAULT = -mno-relax) -no-cpprt Do not link in C++ runtime libraries. -nodefaultlibs Do not use standard libraries when linking. -nostartfiles Do not use standard startup files when linking. -nostdlib Do not use standard libraries and startup files when linking. -shared (not on M*X32) Produce a shared object. -shared-libcxa Link Intel libcxa C++ library dynamically, overriding the default behavior when -static is used. This option has the opposite effect of -static-libcxa. When this option is used, the Intel-provided libcxa C++ library is linked in dynamically, allowing the user to override the static linking behavior when the -static option is used. -static (not on M*X32) Prevent linking with shared libraries. Causes the exe- cutable to link all libraries statically, as opposed to dynamically. -static-libcxa Link Intel libcxa C++ library statically. By default, the Intel-provided libcxa C++ library is linked in dynamically. Use -static-libcxa on the command line to link libcxa statically, while still allowing the stan- dard libraries to be linked in by the default behavior. -T Direct linker to read link commands from . -u Pretend the is undefined. -Wa[,,...] -Wl,[,,...] -Wl,[,,...] Pass options o1, o2, etc. to the linker for processing. -Xlinker (i32, i32em only) Pass directly to the linker for processing. Mac OS Options The Mac OS options provide specific capabilities that apply only to the Intel C++ compiler for the Mac OS. Most other i32 C++ compiler options (except those identified with a (not on M*X32) notation) also apply to the Mac OS. -F (M*X32 only) Add a framework directory to the head of an include file search path. -fpascal-strings (M*X32 only) Allow for Pascal-style string literals. -malign-mac68k (M*X32 only) Aligns structure fields on 2-byte boundaries (m68k com- patible). -malign-natural (M*X32 only) Aligns larger types on natural size-based boundaries (overrides ABI). -malign-power (M*X32 only) Aligns based on ABI-specified alignment rules (default for M*X32 only). -mdynamic-no-pic (M*X32 only) Code is not relocatable, but external references are relocatable. Optimization Levels 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/induction variable simplification · Variable renaming · Exception handling optimizations · Tail recursions · Peephole optimizations · Structure assignment lowering and optimizations · Dead store elimination · Loop-invariant code motion. Depending on the Intel architecture, optimization options can have different effects. To specify optimizations for your tar- get architecture, refer to the -O[0|1|2|3], -fast, -ax, -x, and related options. Optimizing Exclusively for Specific Processors (i32, i32em only) (not on M*X32) The -x{K|W|N|B|P} options target your program to run on a spe- cific Intel processor. The resulting code might contain uncon- ditional use of features that are not supported on other pro- cessors. If these options are used on a non-compatible proces- sor, the program might fail with an illegal instruction excep- tion, or it might display other unexpected behavior. Do not specify this option if the program will be executed on x86 pro- cessors not provided by Intel Corporation. For more informa- tion, see the Intel C++ Compiler User's Guide. Note: The -x option is not supported on M*X32 for this release. Compilations for M*X32 use the -xP option values to generate code for Intel Pentium 4 Processors with Streaming SIMD Extensions 3 (SSE3). Automatic Processor-specific Optimization (i32, i32em only) (not on M*X32) The -ax{K|W|N|B|P} options direct the compiler to find opportu- nities to generate separate versions of functions that use instructions supported on the specified processors. If the com- piler finds such an opportunity, it first checks whether gener- ating a processor-specific version of a function is likely to result in a performance gain. If so, the compiler generates both a processor-specific version of a function and a generic version of the function. The generic version will run on any IA-32 processor. At run time, one of the versions is chosen to execute, depend- ing on the current processor. In this way, the program can ben- efit from performance gains on more advanced processors, while still working properly on older processors. The disadvantages of using -ax{K|W|N|B|P} are: · The size of the compiled binary increases because it con- tains both a processor-specific version of some of the code and a generic version of the code. · Performance is affected by the run-time checks to determine which code to run. Interprocedural Optimizations (IPO) Use -ip and -ipo[value] to enable interprocedural optimizations (IPO), which allow the compiler to analyze your code to deter- mine where to apply the following optimizations: inline func- tion expansion, interprocedural constant propagation, monitor- ing module-level static variables, dead code elimination, prop- agation of function characteristics, and multifile optimiza- tion. For IA-32, IPO also passes arguments in registers. Inline function expansion is one of the main optimizations per- formed by the interprocedural optimizer. For function calls that the compiler believes are frequently executed, the com- piler might decide to replace the instructions of the call with code for the function itself (inline the call). See the Intel C++ Compiler User's Guide for more complete information on IPO. Profile-guided Optimizations (PGO) Profile-guided optimizations (PGO) tell the compiler which areas of an application are most frequently executed. By know- ing these areas, the compiler is able to use feedback from a previous compilation to be more selective in optimizing the application. For example, the use of PGO often enables the com- piler to make better decisions about function inlining, thereby increasing the effectiveness of interprocedural optimizations. PGO creates an instrumented program from your source code and special code from the compiler. Each time this instrumented code is executed, the instrumented program generates a dynamic information file. When you compile a second time, the dynamic information files are merged into a summary file. Using the profile information in this file, the compiler attempts to optimize the execution of the most heavily traveled paths in the program. The PGO methodology requires three phases: Phase 1: Instrumentation compilation and linking with -prof-gen[x] Phase 2: Instrumented execution by running the executable Phase 3: Feedback compilation with -prof-use See the Intel C++ Compiler User's Guide for more complete information on PGO. High-level Language Optimizations (HLO) High-level language optimizations (HLO) exploit the properties of source code constructs, such as loops and arrays, in appli- cations developed in high-level programming languages, such as C++. They include loop interchange, loop fusion, loop unrolling, loop distribution, unroll-and-jam, blocking, data prefetch, scalar replacement, data layout optimizations, and others. Vectorization Options (i32 only) The vectorizer is a component of the Intel C++ Compiler that automatically uses SIMD instructions in the MMX, SSE, and SSE2 instruction sets. The vectorizer detects operations in the pro- gram that can be executed in parallel, and then converts the sequential program to process 2, 4, 8, or 16 elements in one operation, depending on the data type. The -x{K|W|N|B|P} and -ax{K|W|N|B|P} options enable the vector- izer. See the Intel C++ Compiler User's Guide for more com- plete information on the vectorizer. Auto Parallelization Options The auto-parallelization feature of the Intel C++ Compiler automatically translates serial portions of the input program into equivalent multithreaded code. The auto-parallelizer ana- lyzes the dataflow of the program's loops and generates multi- threaded code for those loops which can be safely and effi- ciently executed in parallel. This enables the potential exploitation of the parallel architecture found in symmetric multiprocessor (SMP) systems. The parallel run-time support provides the same run-time fea- tures found in OpenMP*, such as handling the details of loop iteration modification, thread scheduling, and synchronization. While OpenMP directives enable serial applications to transform into parallel applications quickly, the programmer must explic- itly identify specific portions of the application code that contain parallelism and add the appropriate compiler direc- tives. Auto-parallelization triggered by the -parallel option automatically identifies those loop structures that contain parallelism. During compilation, the compiler automatically attempts to decompose the code sequences into separate threads for parallel processing. No other effort by the programmer is needed. Parallelization with OpenMP* The Intel C++ Compiler supports the OpenMP* C++ version 2.0 API specification. The compiler performs transformations to gener- ate multithreaded code based on the user's placement of OpenMP directives in the source program making it easy to add thread- ing to existing software. The Intel compiler supports all of the current industry-standard OpenMP directives, except WORK- SHARE, and compiles parallel programs annotated with OpenMP directives. In addition, the compiler provides Intel-specific extensions to the OpenMP C++ version 2.0 specification includ- ing run-time library routines and environment variables. Note: As with many advanced features of compilers, you must properly understand the functionality of the OpenMP directives in order to use them effectively and avoid unwanted program behavior. The Cluster OpenMP* (CLOMP or Cluster OMP) options are avail- able under a separate license for the Cluster OpenMP product (i32em, i64 only). Precompiled Headers The Intel C++ Compiler supports precompiled header (PCH) files to significantly reduce compile times using the options described below. If many of your source files include a common set of header files, place the common headers first, followed by the #pragma hdrstop directive. This pragma instructs the compiler to stop generating PCH files. For example, if source1.cpp, source2.cpp, and source3.cpp all include common.h, then place #pragma hdrstop after common.h to optimize compile times. See the Intel C++ Compiler User's Guide for more complete information on Precompiled Headers. Caution: Depending on how you organize the header files listed in your sources, these options might increase compile time. PREDEFINED MACROS The predefined macros available for the Intel C++ Compiler are described below. Intel C++ Compiler Predefined Macros __ARRAY_OPERATORS Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 __BASE_FILE__ Value on IA-32 -- Name of source file Value on EM64T -- Name of source file Value on Itanium Architecture -- Name of source file _BOOL Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 __cplusplus Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 __DEPRECATED Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 __EDG__ Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 __EDG_VERSION__ Value on IA-32 -- 304 Value on EM64T -- 304 Value on Itanium Architecture -- 304 __ELF__ Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 __EXCEPTIONS Value on IA-32 -- Defined as 1 when -fno-exceptions is not used. Value on EM64T -- Defined as 1 when -fno-exceptions is not used. Value on Itanium Architecture -- Defined as 1 when -fno-exceptions is not used. __extension__ Value on IA-32 -- no value Value on EM64T -- no value Value on Itanium Architecture -- no value __GNUC__ Values on IA-32, EM64T, or Itanium Architecture -- 2 -- if gcc version is less than 3.2 3 -- if gcc version is 3.2, 3.3, or 3.4 4 -- if gcc version is 4.x __GNUC_MINOR__ Values on IA-32, EM64T, or Itanium Architecture -- 95 -- if gcc version is less than 3.2 2 -- if gcc version is 3.2 3 -- if gcc version is 3.3 4 -- if gcc version is 3.4 __GNUC_PATCHLEVEL__ Values on IA-32, EM64T, or Itanium Architecture -- 3 -- if gcc version is 3.x __gnu_linux__ Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 __GXX_ABI_VERSION Value on IA-32 -- 102 Value on EM64T -- 102 Value on Itanium Architecture -- 102 __HONOR_STD Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- NA __i386 Value on IA-32 -- 1 Value on EM64T -- NA Value on Itanium Architecture -- NA __i386__ Value on IA-32 or EM64T -- 1 Value on EM64T -- NA Value on Itanium Architecture -- NA i386 Value on IA-32 -- 1 Value on EM64T -- NA Value on Itanium Architecture -- NA __ia64 Value on IA-32 -- NA Value on EM64T -- NA Value on Itanium Architecture -- 1 __ia64__ Value on IA-32 -- NA Value on EM64T -- NA Value on Itanium Architecture -- 1 __ICC Value on IA-32 -- 910 Value on EM64T -- 910 Value on Itanium Architecture -- NA Notes -- Assigned value refers to the compiler (e.g., 800 is 8.00). Supported for legacy reasons. Use __INTEL_COMPILER instead. _INTEGRAL_MAX_BITS Value on IA-32 -- NA Value on EM64T -- NA Value on Itanium Architecture -- 64 __INTEL_COMPILER Value on IA-32 -- 910 Value on EM64T -- 910 Value on Itanium Architecture -- 910 Notes -- Defines the compiler version. Defined as 910 for the Intel C++ Compiler 9.1. __INTEL_COMPILER_BUILD_DATE= Notes -- Defines the compiler build date. This date should correspond to the date on the compiler version banner. Applies to IA-32, EM64T, and Itanium Architec- ture. __INTEL_CXXLIB_ICC Notes -- Is defined (default) as 1 when the -cxxlib-icc option is specified during compilation. Applies to both IA-32 and Itanium Architecture, but not to EM64T. __INTEL_RTTI__ Notes -- Is defined (default) when the -frtti option is specified for the Intel Linux C++ compiler (i.e., when RTTI support is enabled). It is disabled when the the -fno-rtti option is specified for the Intel Linux C++ compiler. Applies to IA-32, EM64T, and Itanium Archi- tecture. __INTEL_STRICT_ANSI__ Notes -- Is defined (default) as 1 when the -strict_ansi option is specified for the Intel Linux C++ compiler (i.e., strict ANSI conformance dialect). Applies to IA-32, EM64T, and Itanium Architecture. __itanium__ Value on IA-32 -- NA Value on EM64T -- NA Value on Itanium Architecture -- 1 __linux Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 __linux__ Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 linux Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 __LONG_DOUBLE_SIZE__ Value on IA-32 -- 80 Value on EM64T -- 80 Value on Itanium Architecture -- 80 __LONG_MAX__ Value on IA-32 -- NA Value on EM64T -- 9223372036854775807L Value on Itanium Architecture -- 9223372036854775807L __lp64 Value on IA-32 -- NA Value on EM64T -- NA Value on Itanium Architecture -- 1 __LP64__ Value on IA-32 -- NA Value on EM64T -- 1 Value on Itanium Architecture -- 1 _LP64 Value on IA-32 -- NA Value on EM64T -- 1 Value on Itanium Architecture -- 1 _MT Value on IA-32 -- NA Value on EM64T -- 1 Value on Itanium Architecture -- NA __MMX__ Value on IA-32 -- NA Value on EM64T -- 1 Value on Itanium Architecture -- NA __NO_INLINE__ Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 __NO_MATH_INLINES Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 __NO_STRING_INLINES Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 _OPENMP Value on IA-32 -- 200203 Value on EM64T -- 200203 Value on Itanium Architecture -- 200203 Notes -- Defined when -openmp is used. __OPTIMIZE__ Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 Notes -- Not enabled if all optimizations are turned off. __pentium4 Value on IA-32 -- NA Value on EM64T -- 1 Value on Itanium Architecture -- NA __pentium4__ Value on IA-32 -- NA Value on EM64T -- 1 Value on Itanium Architecture -- NA __PIC__ Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 Notes -- Defined when -fPIC is used. __pic__ Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 Notes -- Defined when -fPIC is used. _PGO_INSTRUMENT Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 Notes -- Defined when compiled with either -prof_gen or -prof_genx. _PLACEMENT_DELETE Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 __PTRDIFF_TYPE__ Value on IA-32 -- int Value on EM64T -- long Value on Itanium Architecture -- long __REGISTER_PREFIX__ Value on IA-32 -- no value Value on EM64T -- no value Value on Itanium Architecture -- no value __SIGNED_CHARS__ Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 __SIZE_TYPE__ Value on IA-32 -- unsigned Value on EM64T -- unsigned long Value on Itanium Architecture -- unsigned long __SSE__ Value on IA-32 -- NA Value on EM64T -- 1 Value on Itanium Architecture -- NA __SSE2__ Value on IA-32 -- NA Value on EM64T -- 1 Value on Itanium Architecture -- NA __unix Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 __unix__ Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 unix Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 __USER_LABEL_PREFIX__ Value on IA-32 -- (no value) Value on EM64T -- (no value) Value on Itanium Architecture -- (no value) __WCHAR_T Value on IA-32 -- 1 Value on EM64T -- 1 Value on Itanium Architecture -- 1 __WCHAR_TYPE__ Value on IA-32 -- long int Value on EM64T -- int Value on Itanium Architecture -- int __WINT_TYPE__ Value on IA-32 -- unsigned int Value on EM64T -- unsigned int Value on Itanium Architecture -- unsigned int __x86_64 Value on IA-32 -- NA Value on EM64T -- 1 Value on Itanium Architecture -- NA __x86_64__ Value on IA-32 -- NA Value on EM64T -- 1 Value on Itanium Architecture -- NA ANSI/ISO Macros Included with the Compiler The ANSI/ISO standard for C language requires that cer- tain predefined macros be supplied with conforming com- pilers. The Intel C++ Compiler supplies the following macros in accordance with this standard, as well as additional predefined macros: __DATE__ The date of compilation as a string literal in the form Mmm dd yyyy. __FILE__ A string literal representing the name of the file being compiled. __LINE__ The current line number as a decimal constant. __STDC__ The name __STDC__ is defined when compiling a C translation unit. __STDC_HOSTED__ The __STDC_HOSTED__ macro has a value of 1. __TIME__ The time of compilation. As a string literal in the form hh:mm:ss. gcc Predefined Macros The Intel C++ Compiler includes the following predefined interoperability macros also supportedby gcc: __GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__ You can specify the -no-gcc option if you do not want these macros defined. If you need gcc interoperability (-cxxlib-gcc), do not use the -no-gcc compiler option. Suppress Macro Definition Use the -Uname option to suppress any macro definition currently in effect for the specified name. The -U option performs the same function as an #undef prepro- cessor directive. ENVIRONMENT VARIABLES You can customize your environment by setting the fol- lowing environment variables. You can specify paths where the compiler can search for special files such as libraries and include files. DYLD_LIBRARY_PATH (M*X32 only) Specifies the location for all Intel-provided shared dynamic libraries. At runtime, the linker will search the colon-separated list of directo- ries defined by the DYLD_LIBRARY_PATH environment variable. A DYLD_* set of environment variables are all used by "dyld", the dynamic link editor. The full DYLD_* set is documented in "man dyld" on the MacOS*. GXX_ROOT Specifies the location of the gcc binaries. Set this variable only when the compiler cannot locate the gcc binaries when using the -gcc-name option. GXX_INCLUDE Specifies the location of the gcc headers. Set this variable only when the compiler cannot locate the gcc headers when using the -gcc-name option. IA32ROOT (i32, 132em only) Points to the directory containing the bin, lib, include and substitute header directories. IA64ROOT (i64 only) Points to the directory containing the bin, lib, include and substitute header directories. ICCCFG Specifies the configuration file for customizing compilations with the icc compiler. ICPCCFG Specifies the configuration file for customizing compilations with the icpc compiler. INTEL_LICENSE_FILE Specifies the location for the Intel license file. LD_LIBRARY_PATH (L*X only) Specifies the location for all Intel-provided libraries. The LD_LIBRARY_PATH environment vari- able contains a colon-separated list of directo- ries in which the linker will search for library (.a) files. If you want the linker to search additional libraries, you can add their names to LD_LIBRARY_PATH, to the command line, to a response file, or to the configuration file. In each case, the names of these libraries are passed to the linker before the names of the Intel libraries that the driver always specifies. PATH Specifies the directories the system searches for binary executable files. TMP Specifies the directory in which to store tempo- rary files. If the directory specified by TMP does not exist, the compiler places the temporary files in the current directory. If a directory is not specified, the compiler stores temporary files in /tmp. TMPDIR Same as TMP. TEMP Same as TMP. GNU* Environment Variables The Intel C++ Compiler supports the following GNU envi- ronment variables: C_INCLUDE_PATH Specifies a list of directories to include for C compilations. CPATH Specifies a list of directories to include for C or C++ compilations. CPLUS_INCLUDE_PATH Specifies a list of directories to include for C++ compilations. DEPENDENCIES_OUTPUT If this variable is set, its value specifies how to output dependencies for Make based on the non- system header files processed by the compiler. System header files are ignored in the dependency output. LIBRARY_PATH The value of LIBRARY_PATH is a colon-separated list of directories, much like PATH. SUNPRO_DEPENDENCIES This variable is the same as DEPENDENCIES_OUTPUT, except that system header files are not ignored. Compilation Environment Options The Intel C++ Compiler installation includes shell scripts that you can use to set environment variables. See the Intel C++ User's Guide for more information. Standard OpenMP Environment Variables OMP_DYNAMIC Enables (.TRUE.) or disables (.FALSE.) the dynamic adjustment of the number of threads. DEFAULT: .FALSE. OMP_NESTED Enables (.TRUE.) or disables (.FALSE.) nested parallelism. DEFAULT: .FALSE. OMP_NUM_THREADS Sets the number of threads to use during execu- tion. DEFAULT: Number of processors currently installed in the system while generating the executable OMP_SCHEDULE Specifies the run-time schedule type and chunk size. DEFAULT: STATIC, no chunk size specified Intel Extensions to OpenMP Environment Variables KMP_ALL_THREADS Sets the maximum number of threads that can be used by any parallel region. DEFAULT: max(32, 4 * OMP_NUM_THREADS, 4 * number of processors) KMP_BLOCKTIME Sets the time (in milliseconds) that a thread should wait after completing the execution of a parallel region, before sleeping. See also the throughput execution mode section of the User documentation, and the KMP_LIBRARY environment variable. Use the optional character suffix s, m, h, or d, to specify seconds, minutes, hours, or days DEFAULT: 200 milliseconds KMP_LIBRARY Selects the OpenMP run-time library throughput. The options for the variable value are: serial, turnaround, or throughput indicating the execu- tion mode. The default value of throughput is used if this variable is not specified. DEFAULT: throughput (execution mode) KMP_MONITOR_STACKSIZE Sets the number of bytes to allocate for the mon- itor thread (used for book-keeping during program execution). U se the optional suffix b, k, m, g, or t, to specify bytes, kilobytes, megabytes, gigabytes, or terabytes. DEFAULT: max(32k, system minimum thread stack size) KMP_STACKSIZE Sets the number of bytes to allocate for each parallel thread to use as its private stack. Use the optional suffix b, k, m, g, or t, to specify bytes, kilobytes, megabytes, gigabytes, or ter- abytes. DEFAULT: i32: 2m i64: 4m KMP_VERSION Enables (set) or disables (unset) the printing of OpenMP run-time library version information dur- ing program execution. DEFAULT: Disabled PGO Environment Variables The following environment values determine the directory in which to store dynamic information files or whether to overwrite pgopti.dpi. PROF_DIR Specifies the directory in which dynamic informa- tion files are created. This variable applies to all three phases of the profiling process. PROF_DUMP_INTERVAL Initiate Interval Profile Dumping in an instru- mented application. The _PGOPTI_Set_Inter- val_Prof_Dump(int interval) function activates Interval Profile Dumping and sets the approximate frequency at which dumps will occur. The inter- val parameter is measured in milliseconds and specifies the time interval at which profile dumping will occur. An alternative method of ini- tiating Interval Profile Dumping is by setting this environment variable. Set this environment variable to the desired interval value prior to starting the application. PROF_NO_CLOBBER Alters the feedback compilation phase slightly. By default, during the feedback compilation phase, the compiler merges the data from all dynamic information files and creates a new pgopti.dpi file, if the .dyn files are newer than an existing pgopti.dpi file. When this variable is set, the compiler does not overwrite the existing pgopti.dpi file. Instead, the compiler issues a warning and you must remove the pgopti.dpi file if you want to use additional dynamic information files. EXAMPLES The following examples demonstrate optimizing across multiple input files: 1. icc ax.cpp This command compiles the C++ file 'ax.cpp' producing executable file 'a.out'. Optimizations occur by default. 2. icc -o abc ax.cpp bx.cpp cx.cpp This command uses option -o to name the executable file 'abc' and compiles 'ax.cpp', 'bx.cpp', and 'cx.cpp' as one program. 3. icc -c ax.cpp bx.cpp cx.cpp This command uses option -c to suppress linking and produce individual object files 'ax.o', 'bx.o', and 'cx.o'. Interprocedural optimizations are prevented. 4. icc -c ay.c This command compiles the C file 'ay.c' and the -c option suppresses linking to produce of an object file 'ay.o'. 5. icpc -c by.cpp This command compiles the C++ file 'by.cpp' and the -c option suppresses linking to produce an object file 'by.o'. 6. icpc ay.o by.o This command links the two object files 'ay.o' and 'by.o' and produces an executable file 'a.out'. 7. icc -c -O1 sub2.cpp icc -c -O1 sub3.cpp icc -o main.exe -g -O0 main.cpp sub2.o sub3.o The first two commands show incremental compilation with minimal optimization. The first command generates an object file of 'sub2'; the second generates an object file of 'sub3'. The last command uses option -O0 to disable all compiler default optimizations. It uses option -g to generate symbolic debugging information and line numbers in the object code, which can be used by a source-level debugger. TECHNICAL SUPPORT The Intel C++ Compiler product web site offers timely and comprehensive product information, including product features, white papers, and technical articles. For the latest information, visit http://devel- oper.intel.com/software/products/. Intel also provides a support web site that contains a rich repository of self help information, including get- ting started tips, known product issues, product errata, license information, user forums, and more. Registering your product entitles you to one year of technical support and product updates through Intel Pre- mier Support. Intel Premier Support is an interactive issue management and communication web site that enables you to submit issues and review their status, and to download product updates anytime of the day. To register your product, contact Intel, or seek product support, please visit: http://www.intel.com/soft- ware/products/support. SEE ALSO The Intel C++ Compiler User's Guide is the definitive source for detailed information on using the Intel C++ Compiler, including a complete listing of all compiler options, and much more. In addition, see these other documents: · Product Release Notes · Intel Itanium Assembler User's Guide · Intel Itanium Architecture Assembly Language Refer- ence Guide You can access these documents from /doc/Doc_Index.htm or from http://devel- oper.intel.com/software/products/compilers/ . COPYRIGHT INFORMATION Copyright (C) 2002 - 2006, Intel Corporation. All rights reserved. * Other brands and names are the property of their respective owners. SYNOPSIS ifort [ options ] file1 [ file2 ]... options Are zero or more compiler options. fileN Is a Fortran source file, assembly file, object file, object library, or other linkable file. DESCRIPTION The ifort command invokes the Intel(R) Fortran Compiler that is designed to preprocess, compile, assemble, and link Fortran programs on Intel(R) IA-32-based systems, Intel IA-32-based systems with Intel(R) Extended Memory 64 Technology (Intel(R) EM64T), or Intel(R) Itanium(R)-based systems. For more information on this compiler, see the Intel(R) Fortran Building Applications guide. The ifort command interprets input files by their filename suffix as follows: · Filenames with the suffix .f90 are interpreted as free-form Fortran 95/90 source files. · Filenames with the suffix .f, .for, or .ftn are interpreted as fixed-form Fortran source files. · Filenames with the suffix .fpp, .F, .FOR, .FTN, or .FPP are interpreted as fixed-form Fortran source files, which must be preprocessed by the fpp preprocessor before being compiled. · Filenames with the suffix .F90 are interpreted as free-form Fortran source files, which must be preprocessed by the fpp preprocessor before being compiled. · Filenames with the suffix .s are interpreted as assembler files and are passed to the assembler. · Filenames with the suffix .S are interpreted as assembler files and are preprocessed by the fpp preprocessor before being passed to the assembler. · Filenames with the suffix .a are interpreted as object libraries and are passed to ld(1). · Filenames with the suffix .o are interpreted as compiled object files and are passed to ld(1). You can override some options specified on the command line by using the OPTIONS statement in your Fortran source program. An OPTIONS statement affects only the program unit in which the statement occurs. For more information, see the Intel(R) Fortran Language Reference. Most language features are available on all supported systems. How- ever, some language features are only available on certain processors or a certain operating system. Such language features are labeled within parentheses as follows: i32 Means the feature is available on IA-32-based systems. i32em Means the feature is available on IA-32-based systems with Intel(R) Extended Memory 64 Technology (Intel(R) EM64T). i64 Means the feature is available on Itanium(R)-based systems. L*X Means the feature is available on Linux* systems. M*X32 Means the feature is available on Intel(R)-based systems run- ning Mac OS*. If a labeled feature is only available on one processor or one operat- ing system, you will see the word "only" within the label. If no label appears, the language feature is available on all supported sys- tems. Performance Enhancing Options The following command line options can be used to increase the run- time performance of code generated by the Intel Fortran compiler: · On IA-32-based systems (including those with Intel(R) EM64T): -ax

, -ftz, -ip, -ipo, -O[n], -openmp, -parallel, -prof-use, -tpp, -x

. · On Itanium(R)-based systems: -fnsplit, -ftz, -ip, -ipo, -O[n], -openmp, -parallel, -prof-use, -tpp. Configuration and Indirect Files Command options to be used whenever the compiler is invoked can be put into a system configuration file named ifort.cfg, which resides in the same area as the compiler. The text in this file is processed by ifort before the text on the command line. To use a personal configu- ration file, set the environment variable IFORTCFG to point to the path and filename to be used. An indirect file contains text that can be included on the ifort com- mand line. Precede the filename with an at symbol (@) on the command line at the point where the options are to be inserted. For example, assume file double_size contains options "-i8 -r8" and file my_includes contains options "-I/bld/inc -I/bld/headers". In this case, the following command line: ifort -O3 @double_size myprog.f90 @my_includes passes "-O3 -i8 -r8 myprog.f90 -I/bld/inc -I/bld/headers" to the com- piler. OPTIONS Some compiler options have the form -name keyword. -name must be spelled out completely, but keyword can be abbreviated to its shortest unique prefix (4 characters are recommended). For example, -assume buffered_io can be specified as -assume buff. For information on linker and load-time options, see ld(1). For some options, you can (or must) specify additional information, such as a keyword, a directory, a file name, a number, and so forth. When this information is required, it is shown in angle brackets (<>); when it is optional, it is shown in square brackets ([]). For exam- ple, in option -align , keyword is required; in option -unroll[n], n (a number) is optional. The ifort command takes the following options: -1 Tells the compiler to execute at least one iteration of DO loops (same as the -onetrip option). This option has the same effect as -f66. -66 Enforces FORTRAN 66 semantics (same as the -f66 option). -72 Specifies that the statement field of each fixed-form source line ends at column 72. This is the default. -80 Specifies that the statement field of each fixed-form source line ends at column 80. -132 Specifies that the statement field of each fixed-form source line ends at column 132 (same as the -extend_source option). -align [keyword] Tells the compiler how to align certain data items. The follow- ing are -align options: · -align all Tells the compiler to add padding bytes whenever possible to obtain the natural alignment of data items in common blocks, derived types, and record structures. Specifies -align nocommons, -align dcommons, -align records, -align nose- quence. This is the same as specifying -align with no key- word. · -align commons Aligns all common block entities on natural boundaries up to 4 bytes, by adding padding bytes as needed. The default is -align nocommons, which adds no padding to common blocks. · -align dcommons Aligns all common block entities on natural boundaries up to 8 bytes, by adding padding bytes as needed. If you specify any -std option or the -stand f90 or -stand f95 option, this option is ignored. The default is -align nodcommons, which adds no padding to common blocks. · -align none Tells the compiler not to add padding bytes anywhere in com- mon blocks or structures. This is the same as specifying -noalign. The default is to add no padding to common blocks but to add padding to structures. · -align norecords Aligns components of derived types and fields within record structures on arbitrary byte boundaries with no padding. The default is -align records. · -align recbyte Aligns fields of records and components of derived types on the smaller of the size boundary specified or the boundary that will naturally align them. can be 1, 2, 4, 8, or 16. · -align sequence Aligns components of a derived type declared with the SEQUENCE statement (sequenced components) according to the alignment rules that are currently in use. The default alignment rules are to align unsequenced components on natu- ral boundaries. The default is -align nosequence, which requests that sequenced components be packed regardless of any other alignment rules. If you specify any -std option or the -stand f90 or -stand f95 option, this option is ignored. The defaults f