Intel(R) C++ Compiler 9.1 for Linux --------------------------------------------- Intel(R) C++ compiler options. Used for SGI Altix 350, 3000, 3700 Bx2, and 4700 submissions. ICC(1) Intel(R) C++ Compiler Options ICC(1) NAME icc - invokes the Intel(R) C++ compiler 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 command. Invoking the compiler using icpc com­ piles .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, assemble, and link these programs. This document explains how information and instructions apply differently to IA-32 applications, Intel(R) EM64T applications, and Itanium(R) architecture-based applica­ tions. If a description does not explicitly state a spe­ cific architecture, it is applicable to all. See the Intel C++ Compiler user documentation for more complete information than is presented here. Most language features are available on all supported sys­ tems. However, some language features are only available on certain processors or a certain operating system. Such language features are labeled within parenthses as fol­ lows: i32 Means the feature is available on IA-32-based sys­ tems. i32em Means the feature is available on IA-32-based sys­ tems 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 running Mac OS*. If a labeled feature is only available on certain proces­ sors or operating 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 appropri­ ate abbreviation. 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 informa­ tion) ⋠-[no-]gcc-extern-inline In the 9.1 compiler, there is improved compatibility with gcc regarding 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 versions 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 alphabet­ ically 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|T} see Performance Options, Opti­ mization Levels, Automatic Pro­ cessor-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, Parallelization with OpenMP* -[no-]clomp-sharable-propagation see Advanced Performance Options, Parallelization with OpenMP* -[no-]cluster-openmp-profile see Advanced Performance Options, Parallelization with OpenMP* -[no-]cluster-openmp see Advanced Performance Options, Parallelization with OpenMP* -[no-]complex-limited-range see Advanced Performance Options -create-pch see Output, Debug, and PCH Options; Precompiled 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 -dumpversion 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, Opti­ mization 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, Miscel­ laneous 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|hid­ den|internal] see Miscellaneous Options -fvisibility-default= see Miscellaneous Options -fvisibility-extern= see Miscellaneous Options -fvisibility-hidden= see Miscellaneous Options -fvisibility-inlines-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, Interprocedural 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, Interprocedural Optimizations (IPO) -ipo-c see Advanced Performance Options, Interprocedural Optimizations (IPO) -ipo-S see Advanced Performance Options, Interprocedural Optimizations (IPO) -ipo-separate see Advanced Performance Options, Interprocedural 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 | pen­ tium2 | pentium3 | pentium4} see Performance Options -mcmodel= see Linking or Linker Options -mcpu= 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, Opti­ mization Levels -O1 see Performance Options, Opti­ mization Levels -O2 see Performance Options, Opti­ mization Levels -O3 see Performance Options, Opti­ mization Levels -Ob see Performance Options -openmp see Advanced Performance Options, Parallelization with OpenMP* -openmp-profile see Advanced Performance Options, Parallelization with OpenMP* -openmp-report{0|1|2} see Advanced Performance Options, Parallelization with OpenMP* -openmp-stubs see Advanced Performance Options, Parallelization 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, Parallelization 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 Parallelization Options -par-report{0|1|2|3} see Advanced Performance Options, Auto Parallelization Options -par-threshold[] see Advanced Performance Options, Auto Parallelization Options -pc{32|64|80} see Performance Options -pch see Output, Debug, and PCH Options; Precompiled Headers -pch-dir see Output, Debug, and PCH Options; Precompiled 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, Profile-guided Optimizations (PGO) -prof-file see Advanced Performance Options, Profile-guided Optimizations (PGO) -prof-gen[x] see Advanced Performance Options, Profile-guided Optimizations (PGO) -prof-gen-sampling see Advanced Performance Options, Profile-guided Optimizations (PGO) -prof-use see Advanced Performance Options, Profile-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; Precompiled 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|T} see Performance Options, Opti­ mization 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 fol­ low. Performance Options -ax{K|W|N|B|P|T} -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 | pen­ tium3 | pentium4} -mcpu= -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|T} Advanced Performance Options -[no-]alias-args -[no-]ansi-alias -auto-ilp32 -[no-]clomp-sharable-info -[no-]clomp-sharable-propagation -[no-]clus­ ter-openmp-profile -[no-]cluster-openmp -[no-]complex-limited-range -fargu­ ment[no-]-alias -fargument-noalias-global -[no-]fnsplit -fp-model -ftls- model= -[no-]ftz -funroll-loops -inline-factor -inline-forceinline -inline-max-per-compile -inline-max-per-rou­ tine -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-speculation{fast|safe|strict|off} -ip-no-inlining -ip-no-pinlining -ipo[value] -ipo-c -ipo-S -ipo-separate -ivdep-parallel -mno-serialize-volatile -mserialize-volatile -openmp -openmp-pro­ file -openmp-report{0|1|2} -openmp-stubs -opt-mem-bandwidth -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 -iwithprefixbe­ fore -M -MD -MF -MG -MM -MMD -MP -MQ -MT -no-gcc -nostdinc -P -U -X Component Control Options -Qinstall -Qlocation,, -Qoption,, 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] -Wcon­ text-limit= -wd[,,...] -W[no-]deprecated -we[,,...] -Wer­ ror -Winline -W[no-]main -W[no-]miss­ ing-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 -dumpversion -fabi-ver­ sion= -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-security-check -fvisibility=[extern | default | protected | hidden | internal] -fvisibil­ ity-default= -fvisibil­ ity-extern= -fvisibility-hid­ den= -fvisibility-inlines-hidden -fvisibility-internal= -fvisibil­ ity-protected= -[no-]gcc-extern-inline -gcc-name= -gcc-version= -[no-]global-hoist -help -kernel -long_double -mfixed-range=f12-f15,f32-f127 -[no-]multibyte-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 -nodefaultlibs -nostartfiles -nostdlib -shared -shared-libcxa -static -static-libcxa -T -u -Wa[,,...] -Wl,[,,...] -Wp,[,,...] -Xlinker Mac OS Options -F -fpascal-strings -malign-mac68k -malign-natural -malign-power -mdy­ namic-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) Generates code for Intel(R) Core(TM) Duo processors, Intel(R) Core(TM) Solo proces­ sors, Intel(R) Pentium(R) 4 processors with Streaming SIMD Extensions 3, and compatible Intel processors with Streaming SIMD Exten­ sions 3. Generate code specialized for pro­ cessor extensions specified by while also generating generic IA-32 code. includes one or more of the following char­ acters: K -- Intel Pentium III processors and com­ patible Intel processors W -- Intel Pentium 4 processors and compati­ ble Intel processors N -- Intel Pentium 4 processors and compati­ ble Intel processors. Enables new optimiza­ tions in addition to Intel processor-spe­ cific optimizations. B -- Intel Pentium M processors and compati­ ble Intel processors. Enables new optimiza­ tions in addition to Intel processor-spe­ cific optimizations. P -- Intel(R) Core(TM) Duo, Intel(R) Core Solo(TM), and Intel(R) Pentium(R) 4 Proces­ sors with Streaming SIMD Extensions 3 (SSE3) instruction support. Enables new optimiza­ tions in addition to Intel processor-spe­ cific optimizations. T -- Intel(R) Core(TM)2 Duo, Intel(R) Core(TM)2 Extreme, and the Dual-Core Intel(R) Xeon(R) processor 5100 series. Note: The only -ax options available on Intel(R) EM64T-based systems are -axW, -axP, and -axT. Note: On M*X32 systems, P is the only valid processor value. On these systems, -axP is equivalent to -xP, which is the default and is always set. -f[no-]alias Assume [do not assume] aliasing in the pro­ gram (DEFAULT = -falias). -fast The -fast option maximizes speed across the entire program. 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-compatible processors and gener­ ate an error message during execution. i64: The -fast option turns on -O3, -ipo, and -static. M*X32: The -fast option turns on -O3, -ipo, -mdynamic-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 handling table generation, result­ ing in smaller code. Any use of exception handling constructs - try blocks, throw statements will produce an error. Exception specifications are parsed but ignored. A preprocessor symbol __EXCEPTIONS is defined when this option is not used. It is unde­ fined 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++ lan­ guage. Same as -Ob1. -f[no-]inline-functions Inline [do not inline] certain interprocedu­ ral optimizations for single file compilation. These optimizations are a sub­ set of full intra-file interprocedural opti­ mizations. Enables [does not enable] the compiler to perform inline function expan­ sion for calls to functions defined within the current source file -finline-limit= Lets you specify the maximum size of a func­ tion 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 regis­ ter. -[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 calcu­ lations, and the program's results differ. Unfortunately, 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 incor­ rect 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 processor. pentiumpro -- (i32 only) Optimize for Intel Pentium Pro, Intel Pentium II and Intel Pen­ tium III processors. pentium4 -- (i32 only; DEFAULT on IA-32) Optimize for Intel Pentium 4 processors. itanium -- (i64 only) Optimize for Intel Itanium processor itanium2 -- (i64 only) Optimize for Intel Itanium 2 processor. itanium2-9000 -- (i64, L*X only) Optimize for Dual-Core Intel(R) Itanium(R) 2 Proces­ sor 9000 Sequence processors. -m[no-]ieee-fp Same as -mp. -mp Maintain floating-point precision (disables some optimizations). The -mp option restricts optimization to maintain declared precision and to ensure that floating-point arithmetic conforms more closely to the ANSI and IEEE standards. For most programs, spec­ ifying this option adversely affects perfor­ mance. If you are not sure whether your application needs this option, try compiling and running your program both with and with­ out it to evaluate the effects on both per­ formance and precision. -mp1 Improve floating-point precision. -mp1 dis­ ables fewer optimizations and has less impact on performance than -mp. -msse (i32 only) Generate code for Intel Pentium III and com­ patible Intel processors. -msse2 (i32 only) Generate code for Intel Pentium 4 and com­ patible 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 processor. pentiumpro -- (i32 only) Optimize for Intel Pentium Pro, Intel Pentium II and Intel Pen­ tium III processors. pentium4 -- (i32 only; DEFAULT on IA-32) Optimize for Intel Pentium 4 processors. itanium -- (i64 only) Optimize for Intel Itanium processor itanium2 -- (i64 only) Optimize for Intel Itanium 2 processor. itanium2-9000 -- (i64, L*X only) Optimize for Dual-Core Intel(R) Itanium(R) 2 Proces­ sor 9000 Sequence processors. -O0 Disable optimizations. -O Same as -O2 -O1 Optimize to favor code size and code local­ ity. Disables loop unrolling. -O1 may improve performance for applications 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 gener­ ally recommended 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 optimizes for maximum speed, but may not improve perfor­ mance for some programs. The -O3 optimiza­ tions may slow down code in some cases com­ pared to -O2 optimizations. Recommended 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|T} and -x{K|W|N|B|P|T} 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 following values: 0 -- Disables inlining. 1 -- (DEFAULT) Enables inlining of functions declared with the __inline keyword. Also enables inlining according to the C++ lan­ guage. 2 -- Inlines any function, at the compiler's discretion. Enables interprocedural opti­ mizations and has the same effect as -ip. -Os Enable speed optimizations, but disable some optimizations 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 signifi­ cand, or fractional part of the float­ ing-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 significand 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 intervention) 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 float­ ing-point division computations into multi­ plication by the reciprocal of the denomina­ tor. For example, A/B is computed as A x (1/B) to improve the speed of the computa­ tion. 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 floating-point divi­ sion-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 optimiza­ tions 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 conver­ sions. The system default floating point rounding mode is round-to-nearest. However, the C language requires floating point val­ ues to be truncated when a conversion to an integer is involved. To do this, the com­ piler must change the rounding mode to trun­ cation 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 calculations, including floating point-to-integer conversions. Turning on this option can improve performance, but floating point conversions to integer will not conform 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 proces­ sors, Intel(R) Pentium(R) 4 processors with Streaming SIMD Extensions 3, and compatible Intel processors with Streaming SIMD Exten­ sions 3. Generate specialized code to run exclusively on processors supporting the extensions indicated by . includes one or more of the following char­ acters: K -- Intel Pentium III processors and com­ patible Intel processors W -- Intel Pentium 4 processors and compati­ ble Intel processors. Default for Intel(R) EM64T-based systems. N -- Intel Pentium 4 processors and compati­ ble Intel processors with Streaming SIMD Extensions 2 (SSE2) instruction support. Enables new optimizations in addition to Intel processor-specific optimizations. B -- Intel Pentium M processors and compati­ ble Intel processors. Enables new optimiza­ tions in addition to Intel processor-spe­ cific optimizations. P -- Intel(R) Core(TM) Duo, Intel(R) Core Solo(TM), and Intel(R) Pentium(R) 4 Proces­ sors with Streaming SIMD Extensions 3 (SSE3) instruction support. Enables new optimiza­ tions in addition to Intel processor-spe­ cific optimizations including advanced data layout and code restructuring optimizations to improve memory accesses for Intel proces­ sors. Default for M*X32 systems. T -- Intel(R) Core(TM)2 Duo, Intel(R) Core(TM)2 Extreme, and the Dual-Core Intel(R) Xeon(R) processor 5100 series. Enables new optimizations in addition to Intel processor-specific optimizations including advanced data layout and code restructuring optimizations to improve mem­ ory accesses for Intel processors. Note: The only -x options available on Intel(R) EM64T-based systems are -xW, -xP, and -xT. Note: On M*X32 systems, P is the only valid processor value. On these systems, -xP is the default and is always set. Note: If you specify more than one processor value, code is generated for only the high­ est-performing processor specified. For example, if you specify -xKW, only special­ ized code for the Intel Pentium 4 processor is generated. The highest-performing to lowest-performing processor values are: T, P, B, N, W, K. Note: Programs compiled using option -xN, -xB, or -xP will display a fatal run-time error if executed by an unsupported proces­ sor. For more information, see the Intel C++ Compiler User's Guide. Advanced Performance Options The advanced performance options allow fine tuning of compilation or allow control over advanced fea­ tures of the compiler. -[no-]alias-args Assume [do not assume] arguments may be aliased. (DEFAULT = -no-alias-args). -[no-]ansi-alias -[no-]ansi_alias The -[no-]ansi-alias option directs the com­ piler 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 incorrect code. -auto-ilp32 (i32em, i64 only) (not on M*X32) Instructs the compiler to analyze and trans­ form the program so that 64-bit pointers are shrunk to 32-bit pointers, and 64-bit longs (on Linux) are shrunk into 32-bit longs wherever it is legal and safe to do so. In order for this option to be effective the compiler must be able to optimize using the -ipo option and must be able to analyze all library or external calls the program makes. This option requires that the size of the program executable never exceeds 2 (to the 32nd power) bytes and all data values can be represented within 32 bits. If the program can run correctly in a 32-bit system, these requirements are implicitly satisfied. If the program violates these size restric­ tions, unpredictable behavior might occur. 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 perfor­ mance formulations 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 formula­ tion of complex arithmetic operations, thus producing acceptable results for the full range of input values, though at some loss in performance. -[no-]clomp-sharable-info (i32em, i64 only) Reports variables that the compiler automat­ ically 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 rou­ tines 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 func­ tion splitting for the following reasons: ⋠Most importantly, to get improved debugging capability. In the debug sym­ bol 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 debugging capability. ⋠When the profile data does not repre­ sent the actual program behavior, that is, when the routine is actually used frequently rather than infrequently. -fp-model Enable floating point model varia­ tion. -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 per­ centage multiplier that should be applied to all inlining options that define upper lim­ its. 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 inlin­ ing 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 rou­ tine. The value is a positive integer that specifies the maximum 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 inte­ ger that specifies the minimum 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 nor­ mally grow when inline expansion is per­ formed. The value is a positive integer that specifies the permitted increase in the routine's size when inline expansion is per­ formed. (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 inte­ ger that specifies the maximum size of what the inliner considers to be a small routine. (Default OFF) -ip Enable additional interprocedural optimiza­ tions for single file compilation. These optimizations are a subset of full intra-file interprocedural optimizations. -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 opti­ mizations that reduce floating-point accu­ racy. 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 opera­ tions. -IPF-fma[-] enables [disables] the contraction of floating-point multiply and add/subtract operations into a single opera­ tion. Unless -mp is specified, the compiler contracts these operations whenever possi­ ble. The -mp option disables the contrac­ tions. -IPF-fma and -IPF-fma- can be used to override the default compiler behavior. -[no-]IPF-fp-relaxed (i64 only) -[no-]IPF_fp_relaxed (i64 only) Enable [disable] use of faster but slightly less accurate code sequences for math func­ tions, such as divide and square root. -IPF-fp-speculation{fast|safe|strict|off} (i64 only) Enable floating point speculations with the following conditions: fast -- Speculate floating point operations safe -- Speculate only when safe strict -- Same as off off -- Disables speculation of float­ ing-point operations -ip-no-inlining Disable inlining that would result from the -ip interprocedural optimization, but has no effect on other interprocedural optimiza­ tions. -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 estimate 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 gener­ ates [value] object files, unless [value] exceeds the number of source files (m), in which case the compiler 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 par­ allel on both uniprocessor and multiproces­ sor systems. The -openmp option works with both -O0 (no optimization) and any optimiza­ tion level of -O1, -O2 (default) and -O3. Specifying -O0 with -openmp helps to debug OpenMP applications. -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 diagnostic messages, where is one of the following: 0 -- no diagnostic information is displayed. 1 -- Display diagnostics indicating loops, regions, and sections successfully paral­ lelized. (DEFAULT) 2 -- same as -openmp-report1 plus diagnos­ tics indicating MASTER constructs, SINGLE constructs, CRITICAL constructs, ORDERED constructs, ATOMIC directives, etc. success­ fully 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 heuristics that control memory bandwidth use among processors. It allows the compiler to be less aggressive with optimizations that might consume more bandwidth, so that the bandwidth can be well-shared among multiple processors for a parallel program. For val­ ues of greater than 0, the option tells the compiler to enable a set of performance tuning and heuristics in compiler optimiza­ tions such as prefetching, privatization, aggressive code motion, and so forth, for reducing memory bandwidth pressure and bal­ ancing 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 multithreaded code generated by the com­ piler. This is the default if compiler option -parallel or -openmp is specified, or Cluster OpenMP option -cluster-openmp is specified (see the Cluster OpenMP documenta­ tion). 2 -- Enables a set of performance tuning and heuristics in compiler optimizations for parallel code such as Windows Threads, pthreads, and MPI code, besides multi­ threaded code generated by the compiler. -opt-report Generate an optimization report and direct it to stderr. DEFAULT: The compiler does not generate optimization reports. -opt-report-file Specify the filename for the generated report -opt-report-help List the logical names of optimizers avail­ able 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 summary (DEFAULT) med -- The med argument produces an interme­ diate-level report. max -- The max argument produces the full report. -opt-report-phase Specify the optimizer phase against which reports are generated. The compiler gener­ ates reports for the optimizer you specify in the . This option can be used mul­ tiple times on the same command line to gen­ erate reports for multiple optimizers. Cur­ rently, the following optimizer reports are supported: ipo -- Interprocedural Optimizer hlo -- High Level Optimizer ilo -- Intermediate Language Scalar Opti­ mizer 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 containing 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 diag­ nostic messages, where is one of the following: 0 -- no diagnostic information is displayed. 1 -- indicates loops successfully auto-par­ allelized (DEFAULT). Issues a "LOOP AUTO-PARALLELIZED" message for parallel loops. 2 -- indicates successfully auto-paral­ lelized 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 parallelizing). -par-threshold[] Set a threshold for the auto-parallelization of loops based on the probability of prof­ itable execution of the loop in parallel. This option is used for loops whose computa­ tion work volume cannot be determined at compile-time. The threshold is usually rele­ vant when the loop trip count is unknown at compile-time. =0-100. (DEFAULT: =75) The compiler applies a heuristic that tries to balance the overhead of creating multiple threads versus 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, especially if the application includes the source files located in multi­ ple directories. -prof-dir ensures that the profile information is generated in one con­ sistent place. -prof-file Specify file name for profiling sum­ mary file -prof-gen[x] Instruct the compiler to produce instru­ mented code in your object files in prepara­ tion for instrumented execution. With the x qualifier, extra information is gathered. This option is used in Phase 1 of PGO to instruct the compiler to produce instru­ mented code in your object files in prepara­ tion for instrumented execution. Parallel make is automatically supported for -prof-genx compilations. -prof-gen-sampling Prepare code for use with the profrun sample gathering tool. -prof-use Instruct the compiler to produce a pro­ file-optimized executable and merge avail­ able dynamic information (.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-compu­ tation. -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 messages, 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 infor­ mation 4 -- Indicate non-vectorized loops 5 -- Indicate non-vectorized loops and pro­ hibiting data dependence information If you use -c, -ipo with -vec-report{n} option or -c, -x{K|W|N|B|P|T} or -ax{K|W|N|B|P|T} 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 compiler 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 compiler to create a PCH file called . The filename param­ eter must be specified. The filename param­ eter 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 com­ pilation as -use-pch filename. The -cre­ ate-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 sup­ ported [keywords] are extended, [no]variable-locations, [no]semantic-step­ ping, [no-]expr-source-pos, and [no]inline_debug_info}. The debug switches control emission of enhanced debug informa­ tion. 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 expres­ sion 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 break­ points 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 annotations. -fsource-asm Produce assembly file with optional code annotations. -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 gen­ eration of debugging information in assem­ blable files. If you specify the -g option, the resulting object file will contain debugging information, but the assemblable 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 optimizations. 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 automatically enables the -fp option. -g0 Disable generation of symbolic debug infor­ mation. -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 spec­ ifies the name of the generated object file. ⋠If the -S option is specified, it spec­ ifies the name of the generated assem­ bly listing file. ⋠If the -P option is specified, it spec­ ifies the name of the generated prepro­ cessor file. Otherwise, it specifies the name of the exe­ cutable file. -pch Automatic processing for precompiled head­ ers. Direct the compiler to use appropriate PCH files. If none are available, they are created as sourcefile.pchi. This option sup­ ports 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 file­ name, and -use-pch filename. -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 can­ not be used together in the same translation unit. -use-msasm (i32, i32em only) Support Microsoft* style assembly language insertion using MASM style syntax and, if requested, output assembly in MASM format. Note: GNU inline assembler (asm) code and Microsoft inline assembler (msasm) code can­ not be used together in the same translation unit. -use-pch Manual use of precompiled header (file­ name.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 pre­ processing operations for the compiler. -A- Remove all predefined macros. Causes all predefined macros and assertions to be inac­ tive. -A[] Associate a symbol with the specified sequence of . Equivalent to an #assert preprocessing directive. -C Preserve comments in preprocessed source output. Comments following preprocessing directives are not preserved. -D[=] Define the macro and associate it with the specified . Equivalent to a #define preprocessing directive. DEFAULT: -D defines the macro with a of 1. -dD Same as -dM, but outputs #define directives in preprocessed 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 stan­ dard output. The preprocessed source con­ tains #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 stan­ dard output. Does not include #line direc­ tives in the output. -EP is equivalent to -E -P. -H Print "include" file order and continue com­ pilation. -I Add directory to include file search path. For multiple search directories, mul­ tiple 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. Directories 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 sys­ tem 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 extension) containing dependency infor­ mation. -MF Generate makefile dependency information in . Must specify -M or -MM. -MG Similar to -M, but treats missing header files as generated 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 charac­ ters. -MT Change the default target rule for depen­ dency generation. -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 preprocessor 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 exten­ sion are overwritten. -U Remove predefined macro. Equivalent to a #undef preprocessing 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 preprocessing, compilation, assembly, and linking. Further, you can invoke options specific to your alternate tools on the command line. These are the component control options. -Qinstall Set as the root of the compiler installation. -Qlocation,, Set as the location of the tool spec­ ified 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 argument indicates one or more valid argument strings for the designated program. If the argument is a command-line option, you must include the hyphen. If the argument contains a space or tab character, you must enclose the entire argument in quo­ tation characters (""). You must separate multiple arguments with commas. Language Options The language options define parameters and stan­ dards for the compiler with reference to the C/C++ source files. -[no]align (i32, i32em only) Analyze and reorder memory layout for vari­ ables and arrays. -ansi Support all ANSI standard C programs, equiv­ alent 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 instantia­ tions. -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 enumer­ ated types. -fsyntax-only Same as -syntax. -ftemplate-depth- Control the depth to which recursive tem­ plates 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 disambiguating 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 fol­ lowing: 1,2,4,8,16. Compiler Diagnostics Options The compiler diagnostics options define and control aspects of the compilation associated with diagnos­ tics. -[no]traceback Tells the compiler to generate [not gener­ ate] 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 mes­ sages 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 compliant (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 message text is not wrapped when too long to fit on a single line. -Wcheck Enable more strict diagnostics. Performs compile-time code checking for code that exhibits non-portable behavior, represents a possible unintended code sequence, or possi­ bly 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 fea­ tures. -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 compiler aborts. By default, if more than 100 errors are displayed, compila­ tion 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 function. -W[no-]shadow Warn if a variable declaration hides a pre­ vious variable declaration. -W[no-]uninitialized Warn if a variable is used before being ini­ tialized. -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 unre­ lated tasks related to the compiler. -B Specifies the directory (dir) that can be used to find libraries, headers, and exe­ cutables for the compiler itself. -dryrun Show driver tool commands but do not execute tools. -dumpversion (not on M*X32) Return the version number of the compiler. -fabi-version= Instructs the compiler to select a specific ABI implementation, where is the ABI implementation. Possible 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 vari­ ables as if they were defined, allowing the use of gprel addressing of common data vari­ ables. -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 func­ tions. -fno-builtin- Disable the intrinsic. -fpack-struct Pack structure members together. -f[no-]pic, -f[no-]PIC i32: This option generates position indepen­ dent 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 regis­ ters. Use only lower 32 floating-point reg­ isters. -freg-struct-return Return struct and union values in registers when possible. -fstack-security-check (i32, i32em only) Enable overflow security checks. -fvisibility=[extern|default|protected|hid­ den|internal] Global symbols (data and functions) will get the visibility attribute given by default. Symbol visibility attributes explicitly set in the source code or using the symbol visi­ bility attribute file options will override 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-inlines-hidden (i32 only) Causes inline member functions (those defined in the class declaration) to be marked hidden. -fvisibility-internal= (not on M*X32) Space separated symbols listed in the argument will get visibility set to inter­ nal. -fvisibility-protected= (not on M*X32) Space separated symbols listed in the argument will get visibility set to pro­ tected. -[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 compi­ lation unit. No body is created unless the function can­ not 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 compiler cannot locate gcc C++ libraries. For use with -cxxlib- con­ figuration. The argument is the full path location of g++. Use this option when referencing a non-standard gcc installation. -gcc-version= This option provides compatible behavior with gcc, where indicates the gcc ver­ sion. 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 second 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 sup­ port may not be available when code runs. Suppresses software pipelining. -long_double (i32, i32em only) Enable 80-bit 'long double'. The -long_dou­ ble 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 com­ piler 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 fol­ lowing 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 extension 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 speci­ fied 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 link­ ing. -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 executable 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 standard 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 pro­ cessing. 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 compatible). -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 refer­ ences are relocatable. Optimization Levels The Intel C++ Compiler applies the following opti­ mizations 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 simplifi­ cation ⋠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 target 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|T} options target your program to run on a specific Intel processor. The resulting code might contain unconditional use of features that are not supported on other processors. If these options are used on a non-compatible proces­ sor, the program might fail with an illegal instruction exception, or it might display other unexpected behavior. Do not specify this option if the program will be executed on x86 processors not provided by Intel Corporation. For more infor­ mation, 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|T} options direct the compiler to find opportunities to generate separate versions of functions that use instructions supported on the specified processors. If the compiler finds such an opportunity, it first checks whether generating a processor-specific version of a function is likely to result in a performance gain. If so, the com­ piler generates both a processor-specific version of a function and a generic version of the func­ tion. The generic version will run on any IA-32 processor. At run time, one of the versions is chosen to exe­ cute, depending on the current processor. In this way, the program can benefit from performance gains on more advanced processors, while still working properly on older processors. The disadvantages of using -ax{K|W|N|B|P|T} are: ⋠The size of the compiled binary increases because it contains both a processor-specific version of some of the code and a generic ver­ sion 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 determine where to apply the following optimizations: inline function expansion, interprocedural constant propagation, monitoring module-level static variables, dead code elimina­ tion, propagation of function characteristics, and multifile optimization. For IA-32, IPO also passes arguments in registers. Inline function expansion is one of the main opti­ mizations performed by the interprocedural opti­ mizer. For function calls that the compiler believes are frequently executed, the compiler 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 com­ piler which areas of an application are most fre­ quently executed. By knowing these areas, the com­ piler is able to use feedback from a previous com­ pilation to be more selective in optimizing the application. For example, the use of PGO often enables the compiler to make better decisions about function inlining, thereby increasing the effec­ tiveness 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 informa­ tion 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 applications 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 optimiza­ tions, and others. Vectorization Options (i32 only) The vectorizer is a component of the Intel C++ Com­ piler that automatically uses SIMD instructions in the MMX, SSE, and SSE2 instruction sets. The vec­ torizer detects operations in the program that can be executed in parallel, and then converts the sequential program to process 2, 4, 8, or 16 ele­ ments in one operation, depending on the data type. The -x{K|W|N|B|P|T} and -ax{K|W|N|B|P|T} options enable the vectorizer. See the Intel C++ Compiler User's Guide for more complete 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 analyzes the dataflow of the program's loops and generates multithreaded 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 features found in OpenMP*, such as han­ dling 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 explicitly identify specific portions of the application code that contain par­ allelism and add the appropriate compiler direc­ tives. Auto-parallelization triggered by the -par­ allel option automatically identifies those loop structures that contain parallelism. During compi­ lation, 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 per­ forms transformations to generate multithreaded code based on the user's placement of OpenMP direc­ tives in the source program making it easy to add threading to existing software. The Intel compiler supports all of the current industry-standard OpenMP directives, except WORKSHARE, and compiles parallel programs annotated with OpenMP directives. In addition, the compiler provides Intel-specific extensions to the OpenMP C++ version 2.0 specifica­ tion including run-time library routines and envi­ ronment variables. Note: As with many advanced features of compilers, you must properly understand the functionality of the OpenMP directives in order to use them effec­ tively and avoid unwanted program behavior. The Cluster OpenMP* (CLOMP or Cluster OMP) options are available 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. DEPRECATED AND REMOVED OPTIONS Occasionally, compiler options are marked as "dep­ recated." Deprecated options are still supported in the current release, but are planned to be unsupported in future releases. Some compiler options are no longer supported and have been removed. If you use one of these options, the compiler issues a warning, ignores the option, and then proceeds with compilation. Deprecated Options The following options are deprecated in this release of the compiler: -F Suggested replacement -P. -fwritable-strings No suggested replacement. -Knopic, -KNOPIC Suggested replacement -fpic. -Kpic, -KPIC Suggested replacement -fpic. -Knopic, -KNOPIC Suggested replacement -fpic. -march=pentiumii Suggested replacement -march=pentium2. -march=pentiumiii Suggested replacement -march=pentium3. -pro-format-32 No suggested replacement. -syntax Suggested replacement -fsyntax-only. -tpp5 No suggested replacement. -tpp6 No suggested replacement. -tpp7 No suggested replacement. Removed Options The following options are removed in this release of the compiler: -axi -axm -fdiv_check -ipo-obj, and -ipo_obj -0f_check -xi -xM 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 Architec­ ture -- 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 Architec­ ture -- 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 Architec­ ture -- 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 com­ piler (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 Architecture. __INTEL_CXXLIB_ICC Notes -- Is defined (default) as 1 when the -cxxlib-icc option is specified during com­ pilation. 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 Architecture. __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 certain predefined macros be supplied with conforming compilers. 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 follow­ ing predefined interoperability macros also supported by 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 spec­ ified name. The -U option performs the same function as an #undef preprocessor direc­ tive. ENVIRONMENT VARIABLES You can customize your environment by set­ ting the following 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 directories defined by the DYLD_LIBRARY_PATH environment vari­ able. 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 variable contains a colon-separated list of directories 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 config­ uration 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 temporary files. If the direc­ tory 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 follow­ ing GNU environment 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 com­ piler. 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 DEPEN­ DENCIES_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 envi­ ronment 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 execution. DEFAULT: Number of processors cur­ rently installed in the system while generating the executable OMP_SCHEDULE Specifies the run-time schedule type and chunk size. DEFAULT: STATIC, no chunk size speci­ fied 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 vari­ able 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 monitor thread (used for book-keeping during program execu­ tion). U se the optional suffix b, k, m, g, or t, to specify bytes, kilo­ bytes, megabytes, gigabytes, or ter­ abytes. 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, giga­ bytes, or terabytes. DEFAULT: i32: 2m i64: 4m KMP_VERSION Enables (set) or disables (unset) the printing of OpenMP run-time library version information during 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 information files are cre­ ated. This variable applies to all three phases of the profiling pro­ cess. PROF_DUMP_INTERVAL Initiate Interval Profile Dumping in an instrumented application. The _PGOPTI_Set_Interval_Prof_Dump(int interval) function activates Interval Profile Dumping and sets the approxi­ mate frequency at which dumps will occur. The interval parameter is measured in milliseconds and speci­ fies the time interval at which pro­ file dumping will occur. An alterna­ tive method of initiating Interval Profile Dumping is by setting this environment variable. Set this envi­ ronment 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 com­ piler 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 com­ piler does not overwrite the existing pgopti.dpi file. Instead, the com­ piler issues a warning and you must remove the pgopti.dpi file if you want to use additional dynamic infor­ mation files. EXAMPLES The following examples demonstrate optimiz­ ing 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 sup­ press 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 pro­ duce 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 incremen­ tal 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 optimiza­ tions. 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 getting 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 Premier Support. Intel Premier Support is an interactive issue man­ agement 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/software/products/sup­ port. 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 Lan­ guage Reference Guide You can access these documents from /doc/Doc_Index.htm or from http://developer.intel.com/software/prod­ ucts/compilers/ . COPYRIGHT INFORMATION Copyright (C) 2002 - 2006, Intel Corpora­ tion. All rights reserved. * Other brands and names are the property of their respective owners. Copyright(C) 2002 - 2006Intel Corporation ICC(1) Intel(R) Fortran Compiler 9.1 for Linux --------------------------------------------- Intel(R) Fortran compiler options. Used for SGI Altix 350, 3000, 3700 Bx2, and 4700 submissions. ifort(1) Intel(R) Fortran Compiler Options ifort(1) NAME ifort - invokes the Intel(R) Fortran Compiler 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 pre­ processor before being compiled. ⋠Filenames with the suffix .F90 are interpreted as free-form Fortran source files, which must be pre­ processed by the fpp preprocessor before being com­ piled. ⋠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 sys­ tems. However, some language features are only available on certain processors or a certain operating system. Such language features are labeled within parentheses as fol­ lows: i32 Means the feature is available on IA-32-based sys­ tems. i32em Means the feature is available on IA-32-based sys­ tems 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 running Mac OS*. If a labeled feature is only available on one processor or one operating system, you will see the word "only" within the label. If no label appears, the language feature is available on all supported systems. 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, -par­ allel, -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 configuration 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 command line. Precede the filename with an at sym­ bol (@) 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 compiler. OPTIONS Some compiler options have the form -name keyword. -name must be spelled out completely, but keyword can be abbre­ viated 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 itera­ tion 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 following 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 nosequence. This is the same as specifying -align with no keyword. ⋠-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 any­ where in common 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 bound­ aries 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 cur­ rently in use. The default alignment rules are to align unsequenced components on natural bound­ aries. 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 for -align are nocommons, nodcommons, records, and nosequence. -allow nofpp_comments Tells the compiler to disallow Fortran-style end- of-line comments on preprocessor lines. This means comment indicators have no special meaning. This option can be useful when you want to have a Fortran directive as a define value. The default is -allow fpp_comments, which tells the compiler to recognize Fortran-style end-of-line comments on preprocessor lines. -arch (i32 and i32em) Determines the version of the architecture for which the compiler generates instructions. The fol­ lowing are -arch options: ⋠-arch pn1 Optimizes for the Intel(R) Pentium(R) processor. ⋠-arch pn2 Optimizes for the Intel(R) Pentium(R) Pro, Intel(R) Pentium(R) II, and Intel(R) Pentium(R) III processors. ⋠-arch pn3 Optimizes for the Intel(R) Pentium(R) Pro, Intel(R) Pentium(R) II, and Intel(R) Pentium(R) III processors. This is the same as specifying the -arch pn2 option. ⋠-arch pn4 Optimizes for the Intel(R) Pentium(R) 4 proces­ sor. This is the default. ⋠-arch SSE Optimizes for Intel Pentium 4 processors with Streaming SIMD Extensions (SSE). ⋠-arch SSE2 Optimizes for Intel Pentium 4 processors with Streaming SIMD Extensions 2 (SSE2). The only options available on Intel(R) EM64T sys­ tems are -arch pn1, -arch pn2, -arch pn3, and -arch pn4. -assume Tells the compiler to make certain assumptions. The following are -assume options: ⋠-assume bscc Tells the compiler to treat the backslash charac­ ter (\) as a C-style control (escape) character syntax in character literals. The default is -assume nobscc, which tells the compiler to treat the backslash character as a normal character instead of a control character in character lit­ erals. ⋠-assume buffered_io Tells the compiler to accumulate records in a buffer. This sets the default for opening sequen­ tial output files to BUFFERED='YES', which also occurs if the FORT_BUFFERED run-time environment variable is specified. The default is -assume nobuffered_io, which means that data will be immediately written to disk. ⋠-assume byterecl Specifies that the units for the OPEN statement RECL specifier (record length) value are in bytes for unformatted data files, not longwords (four- byte units). For formatted files, the RECL unit is always in bytes. The default is -assume nobyterecl. INQUIRE returns RECL in bytes if the unit is not open. INQUIRE returns RECL in longwords if the file is open for unformatted data (and -assume byterecl is not specified); otherwise, it returns RECL in bytes. ⋠-assume cc_omp Enables conditional compilation as defined by the OpenMP Fortran API. That is, when !$space appears in free-form source or c$spaces appears in column 1 of fixed-form source, the rest of the line is accepted as a Fortran line. If -openmp is specified, the default is -assume cc_omp; oth­ erwise, the default is -assume nocc_omp. ⋠-assume dummy_aliases Tells the compiler that dummy (formal) arguments to procedures share memory locations with other dummy arguments (aliases) or with variables shared through use association, host association, or common block use. These program semantics slow performance and do not strictly obey the Fortran 95/90 Standards. The default is -assume nodummy_aliases. ⋠-assume minus0 Tells the compiler to use Fortran 95 standard semantics for the treatment of the IEEE* floating value -0.0 in the SIGN intrinsic, which distin­ guishes the difference between -0.0 and +0.0, and to write a value of -0.0 with a negative sign on formatted output. The default is -assume nominus0, which tells the compiler to use Fortran 90/77 standard semantics in the SIGN intrinsic to treat -0.0 and +0.0 as 0.0, and to write a value of 0.0 with no sign on formatted output. ⋠-assume none Disables all the -assume options. ⋠-assume noprotect_constants Tells the compiler to pass a copy of a constant actual argument. This copy can be modified by the called routine, even though the Fortran standard prohibits such modification. The calling routine does not see any modification to the constant. The default is -assume protect_constants, which passes the constant actual argument. Any attempt to modify it results in an error. ⋠-assume nosource_include Tells the compiler to search the default direc­ tory for module files specified by a USE state­ ment or source files specified by an INCLUDE statement. The default is -assume source_include, which tells the compiler to search the directory the source file is in for any INCLUDE files or modules. ⋠-assume nounderscore Tells the compiler not to append an underscore character to external user-defined names: the main program name, named common blocks, BLOCK DATA blocks, global data names in MODULEs, and names implicitly or explicitly declared EXTERNAL. The name of a blank (unnamed) common block remains _BLNK__, and Fortran intrinsic names are not affected. The default is -assume underscore. ⋠-assume 2underscores Tells the compiler to append two underscore char­ acters to external user-defined names that contain an embedded underscore: the main program name, named common blocks, BLOCK DATA blocks, global data names in MODULEs, and names implic­ itly or explicitly declared EXTERNAL. The name of a blank (unnamed) common block remains _BLNK__, and Fortran intrinsic names are not affected. The default is -assume no2underscores. This option does not affect external names that do not contain an embedded underscore. By default, the compiler only appends one underscore to those names. ⋠-assume writeable-strings Tells the compiler to put character constants into non-read-only memory. The default is -assume nowriteable-strings. -auto Causes all local, non-SAVEd variables to be allo­ cated on the run-time stack (same as -automatic or -nosave). The default is -auto-scalar. However, if you specify -recursive or -openmp, the default is -automatic. -auto-scalar Causes allocation of scalar variables of intrinsic types INTEGER, REAL, COMPLEX, and LOGICAL to the run-time stack. This is the default. However, if you specify -recursive or -openmp, the default is -automatic. You cannot specify -save, -auto, or -automatic with this option. -autodouble Makes default real and complex variables 8 bytes long. REAL declarations are treated as DOUBLE PRE­ CISION (REAL(KIND=8)) and COMPLEX declarations are treated as DOUBLE COMPLEX (COMPLEX(KIND=8)). This option is the same as specifying -real_size 64 or -r8. -automatic Causes all local, non-SAVEd variables to be allo­ cated on the run-time stack (same as -auto or -nosave). The default is -auto-scalar. However, if you specify -recursive or -openmp, the default is -automatic. -ax

(i32 and i32em) Generates processor-specific code if there is a performance benefit, while also generating generic IA-32 code. The characters K, W, N, B, P, and T denote the processor types (

). The following are -ax options: ⋠-axK Generates code for Intel Pentium III processors and compatible Intel processors. ⋠-axW Generates code for Intel Pentium 4 processors and compatible Intel processors. ⋠-axN Generates code for Intel Pentium 4 processors and compatible Intel processors. Also enables new optimizations in addition to Intel processor-spe­ cific optimizations. ⋠-axB Generates code for Intel Pentium M processors and compatible Intel processors. Also enables new optimizations in addition to Intel processor-spe­ cific optimizations. ⋠-axP Generates code for Intel(R) Core(TM) Duo proces­ sors, Intel(R) Core(TM) Solo processors, Intel(R) Pentium(R) 4 processors with Streaming SIMD Extensions 3, and compatible Intel processors with Streaming SIMD Extensions 3. This option also enables new optimizations in addition to Intel processor-specific optimizations. ⋠-axT Generates code for Intel(R) Core(TM)2 Duo proces­ sors, Intel(R) Core(TM)2 Extreme processors, and the Dual-Core Intel(R) Xeon(R) processor 5100 series. The only options available on Intel(R) EM64T sys­ tems are -axW, -axP, and -axT. On Mac OS systems, the only valid option is -axP. On these systems, it is equivalent to -xP, which is the default and is always set. You can use more than one of the -ax options by combining the characters that denote the processor type. For example, you can specify -axNB to gener­ ate code for Intel(R) Pentium(R) 4 processors and Intel Pentium M processors. If you specify both the -ax and -x options, the generic code will only execute on processors com­ patible with the processor type specified by the -x option. -B

Specifies a directory that can be used to find include files, libraries, and executables. The com­ piler uses as a prefix. For include files, the is converted to -I//include. This command is added to the front of the includes passed to the preprocessor. For libraries, the is converted to -L/. This command is added to the front of the standard -L inclusions before system libraries are added. For executables, if contains the name of a tool, such as ld or as, the compiler will use it instead of those found in the default directories. The compiler looks for include files in /include while library files are looked for in . -Bdynamic (L*X only) Enables dynamic linking of libraries at run time. Smaller executables are created than with static linking. -Bstatic (L*X only) Enables static linking of a user-created library. -c Prevents linking. It causes the compiler to com­ pile to an object (.o) file only. -C Enables all checks on run-time conditions (same as the -check all option). -CB Performs run-time checks on whether array subscript and substring references are within declared bounds (same as the -check bounds option). -ccdefault Specifies the type of carriage control used when a file is displayed at a terminal screen (units 6 and *). The following are -ccdefault options: ⋠-ccdefault default Specifies that the compiler is to use the default carriage-control setting. This is the default. The default setting can be affected by the -vms option: if "-vms -ccdefault default" is speci­ fied, carriage control defaults to FORTRAN if the file is formatted, and the unit is connected to a terminal; if "-novms -ccdefault default" is spec­ ified, carriage control defaults to LIST. ⋠-ccdefault fortran Specifies normal Fortran interpretation of the first character. ⋠-ccdefault list Specifies one line feed between records. ⋠-ccdefault none Specifies no carriage control processing. -check [keyword] Checks for certain conditions at run time. The following are -check options: ⋠-check all Enables all -check options. This is the same as specifying -check with no keyword. ⋠-check arg_temp_created Generates code to check if actual arguments are copied into temporary storage before routine calls. If a copy is made at run time, an informative message is displayed. The default is -check noarg_temp_created. ⋠-check bounds Performs run-time checks on whether array sub­ script and substring references are within declared bounds. The default is -check nobounds. ⋠-check format Issues the run-time FORVARMIS fatal error when the data type of an item being formatted for out­ put does not match the format descriptor being used (for example, a REAL*4 item formatted with an I edit descriptor). If -vms is specified, the default is -check format; otherwise, the default is -check noformat. With -check noformat, the data item is formatted using the specified descriptor unless the length of the item cannot accommodate the descriptor (for example, it is still an error to pass an INTEGER*2 item to an E edit descriptor). ⋠-check none Disables all -check options. This is the default. This is the same as specifying -nocheck. ⋠-check output_conversion Issues the run-time OUTCONERR continuable error message when a data item is too large to fit in a designated format descriptor field. The field is filled with asterisks (*) and execution contin­ ues. If -vms is specified, the default is -check output_conversion; otherwise, the default is -check nooutput_conversion. ⋠-check uninit Generates code to check for uninitialized vari­ ables. If a variable is read before written, a run-time error routine will be called. The default is -check nounit. To get more detailed location information about where the error occurred, use -traceback. -cm Suppresses all messages about questionable program­ ming practices (same as the -warn nousage option). -common-args Tells the compiler that dummy (formal) arguments to procedures share memory locations with other dummy arguments or with variables shared through use association, host association, or common block use. This is the same as specifying -assume dummy_aliases. -complex-limited-range Enables the use of basic algebraic expansions of some arithmetic operations involving data of type COMPLEX. This can cause some performance improvements in programs that use a lot of COMPLEX arithmetic, but values at the extremes of the expo­ nent range may not compute correctly. The default is -no-complex-limited-range, which disables this option. -convert Specifies the format for unformatted files contain­ ing numeric data. The following are -convert options: ⋠-convert big_endian Specifies that the format will be big endian for INTEGER*1, INTEGER*2, INTEGER*4, or INTEGER*8, and big endian IEEE floating-point for REAL*4, REAL*8, REAL*16, COMPLEX*8, COMPLEX*16, or COM­ PLEX*32. ⋠-convert cray Specifies that the format will be big endian for INTEGER*1, INTEGER*2, INTEGER*4, or INTEGER*8, and CRAY* floating-point for REAL*8 or COM­ PLEX*16. ⋠-convert fdx Specifies that the format will be little endian for INTEGER*1, INTEGER*2, INTEGER*4, or INTE­ GER*8, and VAX processor floating-point format F_floating for REAL*4 or COMPLEX*8, D_floating for REAL*8 or COMPLEX*16, and X_floating for REAL*16 or COMPLEX*32. ⋠-convert fgx Specifies that the format will be little endian for INTEGER*1, INTEGER*2, INTEGER*4, or INTE­ GER*8, and VAX processor floating-point format F_floating for REAL*4 or COMPLEX*8, G_floating for REAL*8 or COMPLEX*16, and X_floating for REAL*16 or COMPLEX*32. ⋠-convert ibm Specifies that the format will be big endian for INTEGER*1, INTEGER*2, or INTEGER*4, and IBM* Sys­ tem\370 floating-point format for REAL*4 or COM­ PLEX*8 (IBM short 4) and REAL*8 or COMPLEX*16 (IBM long 8). ⋠-convert little_endian Specifies that the format will be little endian for INTEGER*1, INTEGER*2, INTEGER*4, or INTE­ GER*8, and little endian IEEE floating-point for REAL*4, REAL*8, REAL*16, COMPLEX*8, COMPLEX*16, or COMPLEX*32. ⋠-convert native Specifies that unformatted data should not be converted. This is the default. ⋠-convert vaxd Specifies that the format will be little endian for INTEGER*1, INTEGER*2, INTEGER*4, or INTE­ GER*8, and VAX processor floating-point format F_floating for REAL*4 or COMPLEX*8, D_floating for REAL*8 or COMPLEX*16, and H_floating for REAL*16 or COMPLEX*32. ⋠-convert vaxg Specifies that the format will be little endian for INTEGER*1, INTEGER*2, INTEGER*4, or INTE­ GER*8, and VAX processor floating-point format F_floating for REAL*4 or COMPLEX*8, G_floating for REAL*8 or COMPLEX*16, and H_floating for REAL*16 or COMPLEX*32. -cpp Runs the Fortran preprocessor on source files prior to compilation (same as the -fpp option). -cxxlib[-] Tells the compiler to link using certain C++ run- time libraries. The following are -cxxlib s: ⋠gcc[=] Tells the compiler to link using the C++ run-time libraries provided with the gcc compiler. is an optional top-level location for the gcc binaries and libraries. ⋠icc Tells the compiler to link using the C++ run-time libraries provided by Intel. -cxxlib-icc is only available on IA-32 and Itanium(R)-based Linux systems. If you specify the option with no , the com­ piler uses the default C++ libraries. The default on Mac OS systems is -cxxlib-gcc. The default on Linux systems is -no-cxxlib, which tells the compiler to use the default run-time libraries and not link to any additional C++ run-time libraries. This is the same as specifying -no- cpprt. -D[=] Specifies as a definition (symbol) to use with conditional compilation directives or the For­ tran preprocessor (-fpp). can be an inte­ ger or it can be a character string delimited by double quotes; for example, -Dname="string". If is not specified, is defined as "1". -DD Compiles debug statements (indicated by D in column 1); this is the same as specifying -d_lines. -d_lines Compiles debug statements (indicated by D in column 1); this is the same as specifying -DD. The default is -nod_lines. -debug [keyword] (L*X only) Specifies settings that enhance debugging. The following are -debug options: ⋠-debug inline_debug_info Produces enhanced debug information for inlined code. It provides more information to debuggers for function call traceback. The default is -debug noinline_debug_info. ⋠-debug semantic_stepping Produces enhanced debug information useful for breakpoints and stepping. It tells the debugger to stop only at machine instructions that achieve the final effect of a source statement. For exam­ ple, in the case of an assignment statement, this might be a store instruction that assigns a value to a program variable; for a function call, it might be the machine instruction that executes the call. Other instructions generated for those source statements are not displayed during step­ ping. The default is -debug nosemantic_stepping. ⋠-debug variable_locations Produces enhanced debug information useful in finding scalar local variables. It uses a fea­ ture of the Dwarf object module known as "loca­ tion lists". This feature allows the run-time locations of local scalar variables to be speci­ fied more accurately; that is, whether, at a given position in the code, a variable value is found in memory or a machine register. The default is -debug novariable_locations. ⋠-debug extended Sets the debug options semantic_stepping and variable_locations. -debug-parameters [keyword] Tells the compiler to generate debug information for PARAMETERs used in a program. The following are -debug-parameters options: ⋠-debug-parameters none Generates no debug information for any PARAMETERs used in the program. This is the default; it is the same as specifying -nodebug-parameters. ⋠-debug-parameters used Generates debug information for only PARAMETERs that have actually been referenced in the pro­ gram. This is the same as specifying -debug-parameters with no keyword. ⋠-debug-parameters all Generates debug information for all PARAMETERs defined in the program. Note that if a .mod file contains PARAMETERs, debug information is only generated for the PARAMETERs that have actually been referenced in the program, even if you specify -debug-parameters all. -double_size Defines the default KIND for DOUBLE PRECISION and DOUBLE COMPLEX declarations, constants, functions, and intrinsics. can be 64 (KIND=8) or 128 (KIND=16). The default is -double_size 64. -dryrun Tells the driver that tool commands should be shown but not executed. See also -v. -dynamic-linker (L*X only) Specifies a dynamic linker () other than the default. -dynamiclib (M*X32 only) Invokes the libtool command to generate dynamic libraries. When passed this option, GCC on Mac OS uses the libtool command to produce a dynamic library instead of an executable when linking. To build static libraries, you should use "libtool -static ". -dyncom "common1,common2,common3" Enables dynamic allocation of the specified COMMON blocks at run time. The quotes must be present. -E Causes the Fortran preprocessor to send output to stdout. -e90 Causes the compiler to issue errors instead of warnings for nonstandard Fortran 90 (same as the -warn stderrors option). No such errors or warn­ ings are issued by default. -e95 Causes the compiler to issue errors instead of warnings for nonstandard Fortran (same as the -warn stderrors option). No such errors or warnings are issued by default. -EP Causes the Fortran preprocessor to send output to stdout, omitting #line directives. -error_limit Specifies the maximum number of error-level or fatal-level compiler errors allowed for a file specified on the command line. If you specify -noerror_limit, there is no limit to the number of errors that are allowed. The default is -error_limit 30 (a maximum of 30 error-level and fatal-level messages before the compiler stops the compilation). -extend_source [size] Specifies the column number to use to end the statement field in fixed-form source files. [size] can be 72, 80, or 132. The default behavior is -noextend_source, which implies column 72. If you do not specify size, it is the same as specifying -extend_source 132. -F Causes the Fortran preprocessor to send output to a file (same as the -preprocess_only and -P options). Note that the source file is not compiled. -f66 Tells the compiler to apply FORTRAN 66 semantics: the execution of at least one iteration of DO loops, different EXTERNAL statement syntax and semantics, and different behavior of the BLANK= and STATUS= specifiers on the OPEN statement. This is the same as specifying the -66 option. By default, the compiler applies Fortran 95 semantics. -f77rtl Tells the compiler to use the run-time behavior of Fortran 77 instead of Intel(R) Fortran. This affects some INQUIRE specifiers when the unit is not connected to a file, PAD= defaults to 'NO' for formatted input, NAMELIST input format is differ­ ent, and NAMELIST and list-directed input of char­ acter strings must be delimited by apostrophes or quotes. The default is -nof77rtl. -fast Maximizes speed across the entire program. On Ita­ nium(R)-based systems, this option sets options -ipo, -O3, and -static. On IA-32 and Intel(R) EM64T systems, this option sets options -ipo, -O3, -no-prec-div, -static, and -xP. Note that programs compiled with the -xP option will detect non-compatible processors and generate an error message during execution. -fcode-asm Produces an assembly file with optional machine code annotations. To use this option, you must also specify -S. -fexceptions Enables C++ exception handling table generation, preventing Fortran routines in mixed-language applications from interfering with exception han­ dling between C++ routines. The default is -fno- exceptions, which disables C++ exception handling table generation, resulting in smaller code. When this option is used, any use of C++ exception han­ dling constructs (such as try blocks and throw statements) when a Fortran routine is in the call chain will produce an error. -FI Specifies source files are in fixed format (same as the -fixed option). -finline-limit= Lets you specify the maximum size of a function to be inlined. n must be an integer greater than or equal to zero. It is the maximum number of lines the function can have to be considered for inlin­ ing. The compiler inlines smaller functions, but this option lets you inline large functions. For exam­ ple, to indicate a large function, you could spec­ ify 100 or 1000 for n. -fixed Specifies source files are in fixed format. By default, source file format is determined by the file suffix. -fltconsistency Enables improved floating-point consistency. Float­ ing-point operations are not reordered and the result of each floating-point operation is stored in the target variable rather than being kept in the floating-point processor for use in a subse­ quent calculation. This is the same as specifying -mp or -mieee-fp. The default, -nofltconsistency, provides better accuracy and run-time performance at the expense of less consistent floating-point results. -fmath-errno Tells the compiler to assume that the program tests errno after calls to math library functions. This restricts optimization because it causes the com­ piler to treat most math functions as having side effects. The default, -fno-math-errno, tells the compiler to assume that the program does not test errno after calls to math library functions. This frequently allows the compiler to generate faster code. Floating-point code that relies on IEEE exceptions instead of errno to detect errors can safely use this option to improve performance. -fminshared Specifies that a compilation unit is a component of a main program and will not be linked as part of a shareable object. -fno-alias Specifies that aliasing should not be assumed in the program. The default is -falias. -fno-fnalias Specifies that aliasing should not be assumed within functions, but should be assumed across calls. The default is -ffnalias. -fno-inline-functions Disables certain interprocedural optimizations for single file compilation. The default is -finline- functions, which tells the compiler to perform inline function expansion for calls to functions defined within the current source file. -fno-omit-frame-pointer (i32 and i32em) Disables use of EBP as a general purpose register so it can be used as a stack frame pointer. This is the same as specifying -fp. The default, -fomit- frame-pointer, enables EBP to be used as a general purpose register. -fnsplit (i64 only; L*X only) Enables function splitting if -prof-use is also specified. Otherwise, the default is -no-fnsplit, which disables the splitting within a routine but leaves function grouping enabled. -fp (i32 and i32em) Disables use of EBP as a general purpose register so it can be used as a stack frame pointer. By default, EBP is used as a general purpose register. This is the same as specifying -fno-omit-frame- pointer. -fpconstant Tells the compiler to extend the precision to dou­ ble precision for single-precision constants assigned to double-precision variables. The default is -nofpconstant. -fpe Specifies floating-point exception handling for the main program at run-time. You can specify one of the following values for : 0 - Floating-point invalid, divide-by-zero, and overflow exceptions are enabled. If any such excep­ tions occur, execution is aborted. Underflow results will be set to zero unless you explicitly specify -no-ftz. On Itanium(R)-based systems, underflow behavior is equivalent to specifying option -ftz. On IA-32 or Intel(R) EM64T systems, underflow results from SSE instructions, as well as x87 instructions, will be set to zero. By contrast, option -ftz only sets SSE underflow results to zero. To get more detailed location information about where the error occurred, use -traceback. 1 - All floating-point exceptions are disabled. Underflow results will be set to zero unless you explicitly specify -no-ftz. 3 - All floating-point exceptions are disabled. Floating-point underflow is gradual, unless you explicitly specify a compiler option that enables flush-to-zero. This is the default; it provides full IEEE support. (Also see -ftz.) -fpic (L*X only) Generates position-independent code. On IA-32 sys­ tems and Intel(R) EM64T systems, this option must be used when building shared objects. This option can also be specified as -fPIC. The default is -fno-pic. -fp-model Controls the semantics of floating-point calcula­ tions. The following are -fp-model options: ⋠-fp-model precise Enables value-safe optimizations on floating- point data and rounds intermediate results to source-defined precision. Disables optimizations that can change the result of floating-point cal­ culations, which is required for strict ANSI con­ formance. These semantics ensure the accuracy of floating-point computations, but they may slow performance. Floating-point exception semantics are disabled by default. This option is equivalent to -fp-model source. ⋠-fp-model fast[=1|2] Enables more aggressive optimizations when imple­ menting floating-point calculations. These opti­ mizations increase speed, but may alter the accu­ racy of floating-point computations. Specifying fast is the same as specifying fast=1. fast=2 may produce faster and less accurate results. Floating-point exception semantics are disabled by default and they cannot be enabled. ⋠-fp-model strict Enables precise and except. This is the strictest floating-point model. ⋠-fp-model source Enables value-safe optimizations on floating- point data and rounds intermediate results to source-defined precision. This option is equiva­ lent to -fp-model precise. ⋠-fp-model [no-]except Determines whether floating-point exception semantics are used. Floating-point exception semantics are enabled if -fp-model except is specified; they are disabled if -fp-model no- except is specified. The default is -fp-model fast=1. However, if you specify -O0, the default is -fltconsistency. The keywords can be considered in groups: ⋠Group A: source, precise, fast, strict ⋠Group B: except or no-except You can use more than one keyword. However, the following rules apply: ⋠You cannot specify fast and except together in the same compilation. You can specify any other combination of group A and group B. Since fast is the default, you must not specify except without a group A keyword. ⋠You should specify only one keyword from group A. If you try to specify more than one keyword from group A, the last (rightmost) one takes effect. ⋠If you specify except more than once, the last (rightmost) one takes effect. -fpp Runs the Fortran preprocessor on source files prior to compilation. -fpscomp [keyword] Specifies the compatibility with Microsoft* Fortran PowerStation or Intel Fortran. The following are -fpscomp options: ⋠-fpscomp all Specifies that all options should be used for Fortran PowerStation compatibility. This is the same as specifying -fpscomp with no keyword. The default is -fpscomp libs. ⋠-fpscomp filesfromcmd Specifies that Fortran PowerStation behavior is used when the OPEN file specifier is blank. The default is -fpscomp nofilesfromcmd. ⋠-fpscomp general Specifies that Fortran PowerStation semantics are used when differences exist with Intel Fortran. The default is -fpscomp nogeneral. ⋠-fpscomp ioformat Specifies that Fortran PowerStation semantics and record format for list-directed formatted and unformatted I/O should be used. The default is -fpscomp noioformat. ⋠-fpscomp ldio_spacing Specifies that a blank should not be inserted after a numeric value before a character value (undelimited character string). This representa­ tion is used by Intel Fortran releases before Version 8.0 and by Fortran PowerStation. If you specify -fpscomp general, it sets -fpscomp ldio_spacing. The default is -fpscomp noldio_spacing, which conforms to the Fortran 95 standard by inserting a blank after a numeric value before a character value. ⋠-fpscomp nolibs Prevents the portability library from being passed to the linker. The default is -fpscomp libs. ⋠-fpscomp logicals Specifies that the integer values 1 and 0 are used to represent the LOGICAL values .TRUE. and .FALSE. respectively. This representation is used by Intel Fortran releases before Version 8.0 and by Fortran PowerStation. The default is -fpscomp nologicals, which speci­ fies that odd integer values are treated as true and even integer values are treated as false; specifically .TRUE. and .FALSE. are -1 and 0 respectively. This representation is used by Compaq Visual Fortran. ⋠-fpscomp none Specifies that no options should be used for Fortran PowerStation compatibility. This is the same as specifying -nofpscomp. -fpstkchk (i32 and i32em) Generates extra code after every function call to ensure that the FP (floating-point) stack is in the expected state. By default, there is no checking. So when the FP stack overflows, a NaN value is put into FP calculations, and the results of the pro­ gram differ. Unfortunately, the overflow point can be far away from the point of the actual bug. The -fpstkchk option places code that causes an access violation exception immediately after an incorrect call occurs, thus making it easier to locate these issues. -FR Specifies source files are in free format (same as the -free option). -fr32 (i64 only; L*X only) Disables use of high floating-point registers. Uses only the lower 32 floating-point registers. -free Specifies source files are in free format. By default, source file format is determined by the file suffix. -fsource-asm Produces an assembly file with optional source code annotations. To use this option, you must also specify -S. -fsyntax-only Specifies that the source file should be checked only for correct syntax (same as the -syntax-only, -y, and -syntax options). -ftrapuv Initializes stack local variables to an unusual value to aid error detection. Normally, these local variables should be initialized in the appli­ cation. The option sets any uninitialized local variables that are allocated on the stack to a value that is typically interpreted as a very large integer or an invalid address. References to these variables are then likely to cause run-time errors that can help you detect coding errors. -ftz Flushes denormal results to zero when the applica­ tion is in the gradual underflow mode. It may improve performance if the denormal values are not critical to the behavior of your application. The default is -no-ftz. The following options set the -ftz option: -fpe0, -fpe1, and on Itanium(R)-based systems, option -O3. Option -O2 sets the -no-ftz option. Note: When SSE instructions are used on IA-32 sys­ tems, option -no-ftz is ignored. However, you can enable gradual underflow by calling a function in C in the main program that clears the FTZ and DAZ bits in the MXCSR or by calling the function for_set_fpe in the main program to clear those bits. Be aware that denormal processing can signif­ icantly slow down computation. -funroll-loops Tells the compiler to use default heuristics to unroll loops. This is the same as specifying -unroll. -fverbose-asm Produces an assembly file with compiler comments, including options and version information. To use this option, you must also specify -S, which sets -fverbose-asm. If you do not want this default when you specify -S, specify -fnoverbose-asm. -fvisibility= -fvisibility-= The first form specifies the default visibility for global symbols. The second form specifies the vis­ ibility for symbols that are in a file (for symbols specified in , this form overrides the first form). is the pathname of a file containing the list of symbols whose visibility you want to set; the symbols are separated by whitespace (spaces, tabs, or newlines). specifies the visibility setting; it can be any of the fol­ lowing: default - This setting means other components can reference the symbol, and the symbol definition can be overridden (preempted) by a definition of the same name in another component. extern - This setting means the symbol is treated as though it is defined in another component. It also means that the symbol can be overridden by a definition of the same name in another component. This setting only applies to functions. hidden - This setting means other components cannot directly reference the symbol. However, its address might be passed to other components indi­ rectly. internal - This setting means the symbol cannot be referenced outside its defining component, either directly or indirectly. protected - This setting means other components can reference the symbol, but it cannot be overridden by a definition of the same name in another compo­ nent. If this option is specified more than once on the command line, the last specification takes prece­ dence over any others. -g Produces symbolic debug information in the 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 assemblable file will not. On IA-32 systems, specifying the -g or -O0 option automatically sets the -fp option. -gen-interfaces Tells the compiler to generate an interface block for each routine (that is, for each SUBROUTINE and FUNCTION statement) defined in the source file. The compiler generates two files for each routine, a .mod file and a .f90 file, and places them in the current directory or in the directory specified by the include ( -I ) or -module option. The .f90 file is the text of the interface block; the .mod file is the interface block compiled into binary form. The default is -nogen-interfaces. -help Displays the list of compiler options. -I Specifies a directory to add to the include path, which is used to search for module files (USE statement) and include files (INCLUDE statement). -i-dynamic Causes Intel-provided libraries to be linked in dynamically. It is the opposite of -i-static. -i-static Causes Intel-provided libraries to be linked in statically. It is the opposite of -i-dynamic. -i2 Makes default integer and logical variables 2 bytes long (same as the -integer_size 16 option). The default is -integer_size 32. -i4 Makes default integer and logical variables 4 bytes long (same as the -integer_size 32 option). This is the default. -i8 Makes default integer and logical variables 8 bytes long (same as the -integer_size 64 option). The default is -integer_size 32. -implicitnone Sets the default type of a variable to undefined (IMPLICIT NONE). This is the same as specifying the -u option. -inline-debug-info (L*X only) Produces enhanced source position information for inlined code. This leads to greater accuracy when reporting the source location of any instruction. It also provides enhanced debug information useful for function call traceback. To use this option for debugging, you must also specify a debug enabling option, such as -g. -inline-factor= Specifies the percentage multiplier that should be applied to all inlining options that define upper limits: -inline-max-size, -inline-max-total-size, -inline-max-per-routine, and -inline-max-per-com­ pile. This option takes the default value for each of the above options and multiplies it by divided by 100. For example, if 200 is specified, all inlining options that define upper limits are multiplied by a factor of 2. is a positive integer specifying the percentage value. The default value is 100 (a factor of 1). If you specify -no-inline-factor, the following occurs: ⋠Every function is considered to be a small or medium function; there are no large functions. ⋠There is no limit to the size a routine may grow when inline expansion is performed. ⋠There is no limit to the number of times some routine may be inlined into a particular routine. ⋠There is no limit to the number of times inlining can be applied to a compilation unit. -inline-forceinline Specifies that an inline routine should be inlined whenever the compiler can do so. This causes the routines marked with an inline keyword or directive to be treated as if they were "forceinline". -inline-max-per-compile= Specifies the maximum number of times inlining may be applied to an entire compilation unit. is a positive integer that specifies the maximum number. For compilations using Interprocedural Optimiza­ tions (IPO), the entire compilation is a compila­ tion unit. For other compilations, a compilation unit is a file. If you specify -no-inline-max-per-compile, there is no limit to the number of times inlining may be applied to a compilation unit. -inline-max-per-routine= Specifies the maximum number of times the inliner may inline into a particular routine. is a pos­ itive integer that specifies the maximum number. If you specify -no-inline-max-per-routine, there is no limit to the number of times some routine may be inlined into a particular routine. -inline-max-size= Specifies the lower limit for the size of what the inliner considers to be a large routine. It speci­ fies the boundary between what the inliner consid­ ers to be medium and large-size routines. is a positive integer that specifies the minimum size of a large routine. The inliner prefers to inline small routines. It has a preference against inlining large routines. So, any large routine is highly unlikely to be inlined. If you specify -no-inline-max-size, there are no large routines. Every routine is either a small or medium routine. -inline-max-total-size= Specifies how much larger a routine can normally grow when inline expansion is performed. It limits the potential size of the routine. is a posi­ tive integer that specifies the permitted increase in the size of the routine. If you specify -no-inline-max-total-size, there is no limit to the size a routine may grow when inline expansion is performed. -inline-min-size= Specifies the upper limit for the size of what the inliner considers to be a small routine. It speci­ fies the boundary between what the inliner consid­ ers to be small and medium-size routines. is a positive integer that specifies the maximum size of a small routine. The inliner has a preference to inline small rou­ tines. So, when a routine is smaller than or equal to the specified size, it is very likely to be inlined. If you specify -no-inline-min-size, there is no limit to the size of small routines. Every routine is a small routine; there are no medium or large routines. -intconstant Tells the compiler to use Fortran 77 semantics, rather than Fortran 95/90 semantics, to determine the KIND for integer constants. The default is -nointconstant. -integer_size Defines the size of INTEGER and LOGICAL variables. can be 16, 32, or 64. The default is -inte­ ger_size 32. -ip Enables additional interprocedural optimizations for single file compilation. One of these opti­ mizations enables the compiler to perform inline function expansion for calls to functions defined within the current source file. -ip-no-inlining Disables full and partial inlining enabled by -ip or -ipo. -ip-no-pinlining (i32 and i32em) Disables partial inlining. To use this option, you must specify -ip or -ipo. -IPF-flt-eval-method0 (i64 only; L*X only) Tells the compiler to evaluate the expressions involving floating-point operands in the precision indicated by the variable types declared in the program. By default, intermediate floating-point expressions are maintained in higher precision. -IPF-fltacc (i64 only; L*X only) Disables optimizations that affect floating-point accuracy. If the default setting is used (-IPF- fltacc-), the compiler may apply optimizations that reduce floating-point accuracy. You can use -IPF- fltacc or -fltconsistency to improve floating-point accuracy, but at the cost of disabling some opti­ mizations. -IPF-fp-relaxed (i64 only; L*X only) -IPF_fp_relaxed (i64 only; L*X only) Enables use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt. When compared to strict IEEE* precision, this option slightly reduces the accuracy of float­ ing-point calculations performed by these func­ tions, usually limited to the least significant digit. This option also enables the performance of more aggressive floating-point transformations, which may affect accuracy. -IPF-fp-speculation (i64 only; L*X only) Tells the compiler to speculate on floating-point (FP) operations in one of the following s: fast - Speculate on floating-point operations. This is the default. safe - Speculate on floating-point operations only when safe. strict - This is the same as specifying off. off - Disables speculation of floating-point opera­ tions. -ipo[n] Enables multifile interprocedural (IP) optimiza­ tions (between files). When you specify this option, the compiler performs inline function expansion for calls to functions defined in sepa­ rate files. n 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 n is 0, the compiler decides whether to create one or more object files based on an estimate of the size of the application. It generates one object file for small applications, and two or more object files for large applications. If n is greater than 0, the compiler generates n object files, unless n exceeds the number of source files (m), in which case the compiler generates only m object files. If you do not specify n, the default is 0. -ipo-c Tells the compiler to generate a multifile object file (ipo_out.o) that can be used in further link steps. -ipo-S Tells the compiler to generate a multifile assembly file (ipo_out.s) that can be used in further link steps. -ipo-separate Tells the compiler to generate one object file per source file. This option overrides any -ipo[n] specification. -isystem Specifies a directory (dir) to add to the start of the system include path. The compiler searches the specified directory for include files after it searches all directories specified by the -I com­ piler option but before it searches the standard system directories. This option is provided for compatibility with gcc. -ivdep-parallel (i64 only; L*X only) Tells the compiler that there is no loop-carried memory dependency in any loop following an IVDEP directive. -Kpic (L*X only) This is a deprecated option; it can also be speci­ fied as -KPIC. Use -fpic instead. -L Tells the linker to search for libraries in before searching the standard directories. -l Tells the linker to search for a specified library (lib) when linking. Because the linker searches and processes libraries and object files in the order they are specified, you should specify this option following the last object file it applies to. -logo Displays the compiler version information (same as the -V option). The default is -nologo. -lowercase Causes the compiler to ignore case differences in identifiers and to convert external names to lower­ case (same as the -names lowercase option). This is the default. -map-opts (L*X only) Maps one or more Linux compiler options to their equivalent on a Windows system and outputs the result to stdout. The tool can be invoked from the compiler command line or it can be used directly. No compilation is performed when the option mapping tool is used. Compiler options are mapped to their equivalent on the architecture you are using. -mcmodel= (i32em only; L*X only) Tells the compiler to use a specific memory model to generate code and store data. This option can affect code size and performance. You can specify one of the following values for : ⋠small Restricts code and data to the first 2GB of address space. All accesses of code and data can be done with Instruction Pointer (IP)-relative addressing. This is the default. ⋠medium Restricts code to the first 2GB; it places no memory restriction on data. Accesses of code can be done with IP-relative addressing, but accesses of data must be done with absolute addressing. ⋠large Places no memory restriction on code or data. All accesses of code and data must be done with abso­ lute addressing. If your program has COMMON blocks and local data with a total size smaller than 2GB, -mcmodel=small is sufficient. COMMONs larger than 2GB require -mcmodel=medium or -mcmodel=large. Allocation of memory larger than 2GB can be done with any setting of -mcmodel. IP-relative addressing requires only 32 bits, whereas absolute addressing requires 64-bits. IP- relative addressing is somewhat faster. So, the small memory model has the least impact on perfor­ mance. Note: When the medium or large memory models are specified, you must also specify option -i-dynamic to ensure that the correct dynamic versions of the Intel run-time libraries are used. When shared objects (.so files) are built, Posi­ tion-Independent Code (PIC) is specified so that a single .so file can support all three memory mod­ els. The compiler driver adds option -fpic to implement the PIC. However, you must specify a memory model for code that is to be placed in a static library or code that will be linked statically. -mieee-fp Enables improved floating-point consistency. Float­ ing-point operations are not reordered and the result of each floating-point operation is stored in the target variable rather than being kept in the floating-point processor for use in a subse­ quent calculation. This is the same as specifying -fltconsistency or -mp. The default, -mno-ieee-fp, provides better accuracy and run-time performance at the expense of less consistent floating-point results. -mixed_str_len_arg Tells the compiler that the hidden length passed for a character argument is to be placed immedi­ ately after its corresponding character argument in the argument list. The default is -nomixed_str_len_arg, which places the hidden lengths in sequential order at the end of the argu­ ment list. -module Specifies the directory where module (.mod) files should be placed when created and where they should be searched for (USE statement). -mp Maintains floating-point precision (while disabling some optimizations). The -mp option restricts opti­ mization to maintain declared precision and to ensure that floating-point arithmetic conforms more closely to the ANSI* and IEEE standards. This is the same as specifying -fltconsistency or -mieee- fp. 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 precision. -mp1 Improves floating-point precision and consistency. This option disables fewer optimizations and has less impact on performance than -fltconsistency or -mp. -mrelax (i64 only; L*X only) Tells the compiler to pass linker option -relax to the linker. The default is -mno-relax. -mtune= Performs optimizations for a specified CPU. On IA-32 systems, you can specify one of the fol­ lowing values for : ⋠pentium Optimizes for Intel(R) Pentium(R) processors. ⋠pentiumpro Optimizes for Intel(R) Pentium(R) Pro, Intel Pen­ tium II, and Intel Pentium III processors. ⋠pentium4 Optimizes for Intel Pentium 4 processors. This is the default. ⋠pentium-mmx Optimizes for Intel(R) Pentium(R) with MMX(TM) technology. On Itanium(R)-based Linux systems, you can specify one of the following values for : ⋠itanium Optimizes for Intel(R) Itanium(R) processors. ⋠itanium2 Optimizes for Intel(R) Itanium(R) 2 processors. This is the default. ⋠itanium2-p9000 Optimizes for Dual-Core Intel(R) Itanium(R) 2 Processor 9000 Sequence processors. This option affects the order of the generated instructions, but the generated instructions are limited to Intel(R) Itanium(R) 2 processor instructions unless the program uses (executes) intrinsics specific to the Dual-Core Intel(R) Itanium(R) 2 Processor 9000 Sequence processors. -names Specifies how source code identifiers and external names are interpreted. The following are -names options: ⋠-names as_is Causes the compiler to distinguish case differ­ ences in identifiers and to preserve the case of external names. ⋠-names lowercase Causes the compiler to ignore case differences in identifiers and to convert external names to low­ ercase. This is the default. ⋠-names uppercase Causes the compiler to ignore case differences in identifiers and to convert external names to uppercase. -nbs Tells the compiler to treat a backslash (\) as a normal character in character literals, not an escape character (same as the -assume nobscc option). This is the default. -no-ansi-alias -no-ansi_alias Tells the compiler to assume the program does not adhere to the Fortran 95 Standard type aliasability rules. The default is -ansi-alias, which tells the compiler to assume that the program adheres to these aliasability rules. -no-cpprt Tells the compiler to use the default run-time libraries and not link to any additional C++ run- time libraries. This is the same as specifying -no- cxxlib. -no-fp-port (i32 and i32em) Tells the compiler to keep results of floating- point operations in higher precision. This pro­ vides better performance but less consistent float­ ing-point results. The default is -fp-port, which rounds floating-point results after floating-point operations so rounding to user-declared precision occurs at assignments and type conversions. This has some impact on speed. -no-global-hoist Disables certain optimizations, such as load hoist­ ing and speculative loads, that can move memory loads to a point earlier in the program execution than where they appear in the source. This option is useful for some applications, such as those that use shared or dynamically mapped mem­ ory, which can fail if a load is moved too early in the execution stream (for example, before the mem­ ory is mapped). In most cases, these optimizations are safe and can improve performance. The default, -global-hoist, enables these optimizations. -no-IPF-fma (i64 only; L*X only) Disables the combining of floating-point multiplies and add/subtract operations. It also disables the contraction of floating-point multiply and add/sub­ tract operations into a single operation. The default is -IPF-fma, which tells the compiler to combine and contract these operations whenever pos­ sible. However, if you specify -mp and do not explicitly specify -IPF-fma, the default is -no- IPF-fma. -no-prec-div (i32 and i32em) Enables optimizations that give slightly less pre­ cise results than full IEEE division. With some optimizations, such as -xN and -xB, the compiler may change floating-point division computations into multiplication by the reciprocal of the denom­ inator. For example, A/B is computed as A * (1/B) to improve the speed of the computation. The default is -prec-div, which provides fully pre­ cise IEEE division. It improves precision of floating-point divides by disabling floating-point division-to-multiplication optimizations, resulting in greater accuracy with some loss of performance. -no-prefetch (i64 only; L*X only) Disables prefetch insertion optimization. To use this option, you must also specify -O3. The default is -prefetch. -noalign Prevents the alignment of data items. This is the same as specifying -align none. The default is -align. -noaltparam Specifies that the alternate form of parameter con­ stant declarations (without parentheses) should not be recognized (same as the -nodps option). This form has no parentheses surrounding the list, and the form of the constant, rather than implicit or explicit typing, determines the data type of the variable. The default is -altparam. -nobss-init Places any variables that are explicitly initial­ ized with zeros in the DATA section. By default, variables explicitly initialized with zeros are placed in the BSS section. -nodefaultlibs Prevents the compiler from using standard libraries when linking. -nodefine Specifies that all preprocessor definitions apply only to -fpp and not to Intel Fortran conditional compilation directives. This is the same as speci­ fying -noD. -nodps Specifies that the alternate form of parameter con­ stant declarations (without parentheses) should not be recognized (same as the -noaltparam option). The default is -dps. -nofor_main Specifies the main program is not written in For­ tran, and prevents the compiler from linking for_main.o into applications. The default is -for_main. -noinclude Prevents the compiler from searching in /usr/include for files specified in an INCLUDE statement. You can specify the -I option along with this option. This option does not affect the fpp preprocessor behavior, and is not related to the Fortran 95/90 USE statement. -nostartfiles Prevents the compiler from using standard startup files when linking. -nostdinc Removes standard directories from the include file search path (same as the -X option). -nostdlib Prevents the compiler from using standard libraries and startup files when linking. -nus Prevents the compiler from appending an underscore character to external user-defined names. This option is the same as the -assume nounderscore option, and is the opposite of -us. -o Specifies the name () for an output file as follows: ⋠If -c is specified, it specifies the name of the generated object file. ⋠If -S is specified, it specifies the name of the generated assembly listing file. ⋠If -preprocess_only or -P is specified, it speci­ fies the name of the generated preprocessor file. Otherwise, -o specifies the name of the executable file. -O0 Disables all -O optimizations. On IA-32 and Intel(R) EM64T systems, this option sets the -fp option. -O1 On IA-32 and Intel(R) EM64T systems, enables opti­ mizations for speed. Also disables intrinsic recog­ nition and the -fp option. This option is the same as the -O2 option. On Itanium(R)-based systems, the -O1 option enables optimizations for server applications (straight- line and branch-like code with a flat profile). Enables optimizations for speed, while being aware of code size. For example, this option disables software pipelining and loop unrolling. -O2 or -O This option is the default for optimizations. How­ ever, if -g is specified, the default is -O0. On Itanium(R)-based systems, the -O2 option enables optimizations for speed, including global code scheduling, software pipelining, predication, and speculation. It also enables: ⋠Inlining of intrinsics ⋠Intra-file interprocedural optimizations, which include: inlining, constant propagation, forward substitution, routine attribute propagation, variable address-taken analysis, dead static function elimination, and removal of unreferenced variables. ⋠The following capabilities for performance gain: constant propagation, copy propagation, dead-code elimination, global register allocation, global instruction scheduling and control speculation, loop unrolling, optimized code selection, partial redundancy elimination, strength reduction/induc­ tion variable simplification, variable renaming, exception handling optimizations, tail recur­ sions, peephole optimizations, structure assign­ ment lowering and optimizations, and dead store elimination. -O3 Enables -O2 optimizations plus more aggressive optimizations, such as prefetching, scalar replace­ ment, and loop transformations. Enables optimiza­ tions for maximum speed, but does not guarantee higher performance unless loop and memory access transformations take place. On IA-32 and Intel(R) EM64T systems, when the -O3 option is used with the -ax and -x options, it causes the compiler to perform more aggressive data dependency analysis than for -O2, which may result in longer compilation times. On Itanium(R)-based systems, the -O3 option enables optimizations for technical computing applications (loop-intensive code): loop optimizations and data prefetch. -Ob Specifies the level of inline function expansion. You can specify one of the following values for : 0 - Disables inlining of user-defined functions. However, statement functions are always inlined. This is the default if -O0 is specified. 1 - Enables inlining when an inline keyword or an inline directive is specified. 2 - Enables inlining of any function at the discre­ tion of the compiler. This is the default if option -O2 is specified or is in effect by default. -onetrip Tells the compiler to execute at least one itera­ tion of DO loops (same as the -1 option). This option has the same effect as -f66. -openmp Enables the parallelizer to generate multithreaded code based on OpenMP* directives. The code can be executed in parallel on both uniprocessor and mul­ tiprocessor systems. The -openmp option works with both -O0 (no optimization) and any optimization level of -O. Specifying -O0 with -openmp helps to debug OpenMP applications. -openmp-profile (L*X only) Enables analysis of OpenMP* applications. To use this option, you must have Intel(R) Thread Profiler installed, which is one of the Intel(R) Threading Tools. If this threading tool is not installed, this option has no effect. -openmp-report[n] Controls the level of diagnostic messages of the OpenMP parallelizer. You can specify one of the following values for [n]: 0 - Displays no diagnostic information. 1 - Displays diagnostics indicating loops, regions, and sections successfully parallelized. This is the default. 2 - Displays the diagnostics specified by -openmp- report1 plus diagnostics indicating successful han­ dling of MASTER constructs, SINGLE constructs, CRITICAL constructs, ORDERED constructs, ATOMIC directives, etc. -openmp-stubs Enables compilation of OpenMP programs in sequen­ tial mode. The OpenMP directives are ignored and a stub OpenMP library is linked. -opt-mem-bandwidth (i64 only; L*X only) Enables performance tuning and heuristics that con­ trol memory bandwidth use among processors. It allows the compiler to be less aggressive with optimizations that might consume more bandwidth, so that the bandwidth can be well-shared among multi­ ple 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. is the level of optimizing for memory bandwidth usage. You can specify one of the following values for : 0 - Enables a set of performance tuning and heuris­ tics in compiler optimizations that is optimal for serial code. This is the default for serial code. 1 - Enables a set of performance tuning and heuris­ tics in compiler optimizations for multithreaded code generated by the compiler. This is the default if compiler option -parallel or -openmp is speci­ fied, or Cluster OpenMP option -cluster-openmp is specified (see the Cluster OpenMP documentation). 2 - Enables a set of performance tuning and heuris­ tics in compiler optimizations for parallel code such as Windows Threads, pthreads, and MPI code, besides multithreaded code generated by the com­ piler. -opt-report Tells the compiler to generate an optimization report to stderr. -opt-report-file Tells the compiler to generate an optimization report named . -opt-report-help Displays the logical names of optimizer phases available for report generation (using -opt-report- phase). -opt-report-level[level] Specifies the detail level of the optimization report. [level] can be min, med, or max. The default is -opt-report-levelmin. -opt-report-phase Specifies the optimizer phase () to generate reports for. This option can be used multiple times on the same command line to generate reports for multiple optimizer phases. Currently, the fol­ lowing optimizer phases are supported: ipo - Interprocedural Optimizer hlo - High Level Optimizer ilo - Intermediate Language Scalar Optimizer ecg - Code Generator (Itanium(R)-based systems only; Linux systems only) ecg_swp - Software pipelining component of the Code Generator (Itanium(R)-based systems only; Linux systems only) pgo - Profile Guided Optimization all - All phases When one of these logical names for optimizer phases is specified for , all reports from that optimizer phase are generated. To use this option, you must also specify option -opt-report. -opt-report-routine[string] Generates a report on the routines containing the specified as part of their name. If is not specified, reports from all rou­ tines are generated. -p Compiles and links for function profiling with gprof(1). This is the same as specifying -pg or -qp, except that -pg is not available on Ita­ nium(R)-based systems. -P Causes the Fortran preprocessor to send output to a file (same as the -preprocess_only and -F options). Note that the source file is not compiled. -pad Enables the changing of the variable and array mem­ ory layout. The default is -nopad. -pad-source Specifies that fixed-form source records shorter than the statement field width are to be padded with spaces (on the right) to the end of the state­ ment field. This affects the interpretation of character and Hollerith literals that are continued across source records. The default is -nopad- source. -par-report[n] Controls the level of diagnostic messages of the auto-parallelizer. You can specify one of the fol­ lowing values for [n]: 0 - Displays no diagnostic information. 1 - Displays diagnostics indicating loops success­ fully auto-parallelized. This is the default. Issues a "LOOP AUTO-PARALLELIZED" message for par­ allel loops. 2 - Displays diagnostics indicating loops success­ fully auto-parallelized, as well as unsuccessful loops. 3 - Displays the diagnostics specified by -par- report2 plus additional information about any proven or assumed dependencies inhibiting auto-par­ allelization (reasons for not parallelizing). -par-threshold[n] Sets a threshold for the auto-parallelization of loops based on the probability of profitable execu­ tion of the loop in parallel. This option is used for loops whose computation work volume cannot be determined at compile-time. The threshold is usu­ ally relevant when the loop trip count is unknown at compile-time. [n] is an integer from 0 to 100. The default value is 100. 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. -parallel Tells the auto-parallelizer to generate multi­ threaded code for loops that can be safely executed in parallel. To use this option, you must also specify -O2 or -O3. -pc (i32 and i32em) Enables control of floating-point significand pre­ cision. Some floating-point algorithms are sensi­ tive to the accuracy of the significand, or frac­ tional part of the floating-point value. For exam­ ple, iterative operations like division and finding the square root can run faster if you lower the precision with the -pc option. You can specify one of the following values for : 32 - Rounds the significand to 24 bits (single pre­ cision). Note that a change of the default preci­ sion control or rounding mode (for example, by using the -pc32 option or by user intervention) may affect the results returned by some of the mathe­ matical functions. 64 - Rounds the significand to 53 bits (double pre­ cision). 80 - Rounds the significand to 64 bits (extended precision). This is the default. -pg (i32 and i32em) Compiles and links for function profiling with gprof(1). This is the same as specifying -p or -qp, except that they are also available on Ita­ nium(R)-based systems. -prec-sqrt (i32 and i32em) Improves precision of square root implementations; it has some speed impact. This option inhibits any optimizations that can adversely affect the preci­ sion of a square root computation. The result is fully precise square root implementations, with some loss of performance. This is the default set­ ting if you specify -O0, -mp, or -mp1. -preprocess_only Causes the Fortran preprocessor to send output to a file (same as the -F and -P options). Note that the source file is not compiled. -print-multi-lib Prints information about where system libraries should be found, but no compilation occurs. It is provided for compatibility with gcc. -prof-dir Specifies a directory () for profiling output files (*.dyn and *.dpi). -prof-file Specifies a file name () for the profiling summary file. -prof-format-32 (i32 and i64; L*X only) Produces profile data with 32-bit counters; this option allows compatibility with earlier compilers. The default is to produce profile data with 64-bit counters to handle large numbers of events. -prof-gen Instruments a program for profiling. -prof-gen-sampling (i32 only; L*X only) Prepares application executables for hardware pro­ filing (sampling) and causes the compiler to gener­ ate source code mapping information. -prof-genx Instruments a program for profiling and gathers extra information for code coverage tools. -prof-use Enables use of profiling information during opti­ mization. -Qinstall Specifies the root directory ()where the com­ piler installation was performed. This option is useful if you want to use a different compiler or if you did not use the ifortvars shell script to set your environment variables. -Qlocation,, Sets as the location of the tool specified by . -Qoption,, Passes options to the tool specified by . -qp Compiles and links for function profiling with gprof(1). This is the same as specifying -p or -pg, except that -pg is not available on Ita­ nium(R)-based systems. -r8 Makes default real and complex variables 8 bytes long. REAL declarations are treated as DOUBLE PRE­ CISION (REAL(KIND=8)) and COMPLEX declarations are treated as DOUBLE COMPLEX (COMPLEX(KIND=8)). This option is the same as specifying -real_size 64 or -autodouble. -r16 Makes default real and complex variables 16 bytes long. REAL declarations are treated as extended precision REAL (REAL(KIND=16); COMPLEX and DOUBLE COMPLEX declarations are treated as extended preci­ sion COMPLEX (COMPLEX(KIND=16)). This option is the same as specifying -real_size 128. -rcd (i32 and i32em) Enables fast float-to-integer conversions. This option can 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 Fortran 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 trun­ cation before each floating-point-to-integer con­ version and change it back afterwards. The -rcd option disables the change to truncation of the rounding mode for all floating-point calcu­ lations, including floating point-to-integer con­ versions. This option can improve performance, but floating-point conversions to integer will not con­ form to Fortran semantics. -real_size Defines the size of REAL and COMPLEX declarations, constants, functions, and intrinsics. can be 32, 64, or 128. The default is -real_size 32. -recursive Specifies that all routines should be compiled for possible recursive execution. This option sets the -auto option. The default is -norecursive. -reentrancy [keyword] Specifies that the compiler should generate reen­ trant code that supports a multithreaded applica­ tion. The following are -reentrancy options: ⋠-reentrancy async Tells the run-time library (RTL) that the program may contain asynchronous (AST) handlers that could call the RTL. This causes the RTL to guard against AST interrupts inside its own critical regions. ⋠-reentrancy none Tells the run-time library (RTL) that the program does not rely on threaded or asynchronous reen­ trancy. The RTL will not guard against such interrupts inside its own critical regions. This is the default. This option is the same as the -noreentrancy option. ⋠-reentrancy threaded Tells the run-time library (RTL) that the program is multithreaded, such as programs using the POSIX threads library. This causes the RTL to use thread locking to guard its own critical regions. If you do not specify a keyword for -reentrancy, it is the same as specifying -reen­ trancy threaded. -S Causes the compiler to compile to an assembly file (.s) only and not link. -safe-cray-ptr Specifies that Cray pointers do not alias other variables. -save Places variables, except those declared as AUTO­ MATIC, in static memory (same as -noauto or -noau­ tomatic). The default is -auto-scalar. However, if you specify -recursive or -openmp, the default is -automatic. -scalar-rep (i32 only) Enables scalar replacement performed during loop transformation. To use this option, you must also specify -O3. The default is -no-scalar-rep. -shared (L*X only) Tells the compiler to produce a dynamic shared object instead of an executable. On IA-32 systems and Intel(R) EM64T systems, you must specify -fpic for the compilation of each object file you want to include in the shared library. -shared-libcxa (L*X only) Links the Intel libcxa C++ library dynamically, overriding the default behavior when -static is used. This option is the opposite of -static- libcxa. -sox Tells the compiler to save the compiler options and version number in the executable. The default is -no-sox. -ssp (i32 only; L*X only) Enables Software-based Speculative Pre-computation (SSP), which is also called Helper-Threading opti­ mization. It provides a way to dynamically prefetch data cache blocks to counterbalance ever-increasing memory latency. It exploits the properties of source code constructs (such as delinquent loads and pointer-chasing loops) in applications. -stand [keyword] Causes the compiler to issue compile-time messages for nonstandard language elements. The following are -stand options: ⋠-stand f90 Causes the compiler to issue messages for lan­ guage elements that are not standard in Fortran 90 (same as the -std90 option). ⋠-stand f95 Causes the compiler to issue messages for lan­ guage elements that are not standard in Fortran 95 (same as the -std95 or -std options). This option is set if you specify -warn stderrors. If you do not specify a keyword for -stand, it is the same as specifying -stand 95. ⋠-stand none Causes the compiler to issue no messages for non­ standard language elements. This is the same as specifying -nostand. This is the default. -static (L*X only) Prevents linking with shared libraries. Causes the executable to link all libraries statically. -static-libcxa (L*X only) Links the Intel libcxa C++ library statically. This option is the opposite of -shared-libcxa. -std90 Causes the compiler to issue messages for language elements that are not standard in Fortran 90 (same as the -stand f90 option). -std95 or -std Causes the compiler to issue messages for language elements that are not standard in Fortran 95 (same as the -stand f95 option). This option is set if you specify -warn stderrors. -syntax-only Specifies that the source file should be checked only for correct syntax (same as the -fsyntax-only, -y, and -syntax options). No code is generated, no object file is produced, and some error checking done by the optimizer is bypassed. This option lets you do a quick syntax check of your source file. -T (L*X only) Tells the linker to read link commands from the specified . -tcheck (L*X only) Enables analysis of threaded applications. To use this option, you must have Intel(R) Thread Checker installed, which is one of the Intel(R) Threading Tools. -Tf Specifies that should be compiled as a For­ tran source file. This option is useful when you have a file with a nonstandard filename suffix. This option assumes the file specified uses fixed source form. If the file uses free source form, you must also specify option -free. -threads Specifies that multithreaded libraries should be linked. This is the default on Intel(R) EM64T sys­ tems. This option sets the -reentrancy threaded option. On IA-32 and Intel(R) Itanium(R) systems, the default is -nothreads. -tpp1 (i64 only; L*X only) Optimizes for the Intel(R) Itanium(R) processor. -tpp2 (i64 only; L*X only) Optimizes for the Intel(R) Itanium(R) 2 processor. This is the default on Itanium(R)-based systems. -tpp5 (i32 only; L*X only) Optimizes for the Intel(R) Pentium(R) processor. -tpp6 (i32 only; L*X only) Optimizes for the Intel(R) Pentium(R) Pro, Intel(R) Pentium(R) II and Intel(R) Pentium(R) III proces­ sors. -tpp7 (i32 and i32em; L*X only) Optimizes for the Intel(R) Core(TM) Duo processors, Intel(R) Core(TM) Solo processors, Intel(R) Pen­ tium(R) 4 processors, Intel(R) Xeon(R) processors, Intel Pentium M processors, and Intel Pentium 4 processors with Streaming SIMD Extensions 3 (SSE3) instruction support. This is the default on IA-32 systems and Intel(R) EM64T systems. -traceback Tells the compiler to generate extra information in the object file to allow the display of source file traceback information at run time when a severe error occurs. The default is -notraceback. -tune (i32 and i32em) Determines the version of the architecture for which the compiler generates instructions. The fol­ lowing are -tune options: ⋠-tune pn1 Optimizes for the Intel(R) Pentium(R) processor. ⋠-tune pn2 Optimizes for the Intel(R) Pentium(R) Pro, Intel(R) Pentium(R) II, and Intel(R) Pentium(R) III processors. ⋠-tune pn3 Optimizes for the Intel(R) Pentium(R) Pro, Intel(R) Pentium(R) II, and Intel(R) Pentium(R) III processors. This is the same as specifying the -tune pn2 option. ⋠-tune pn4 Optimizes for the Intel(R) Pentium(R) 4 proces­ sor. This is the default. The only option available on Intel(R) EM64T systems is -tune pn4. -u Sets the default type of a variable to undefined (IMPLICIT NONE). This is the same as specifying the -implicitnone option. -U Removes the predefined macro named . -unroll[n] Sets the maximum number of times to unroll loops. Use -unroll0 to disable loop unrolling. The default is -unroll, which tells the compiler to use default heuristics. This is the same as specifying -funroll-loops. -uppercase Causes the compiler to ignore case differences in identifiers and to convert external names to upper­ case (same as the -names uppercase option). The default is -lowercase (or -names lowercase). -us Tells the compiler to append an underscore charac­ ter to external user-defined names (opposite of -nus). Specifying -us is the same as specifying the -assume underscore option. -use-asm Tells the compiler to produce objects through the assembler. -v Tells the driver that tool commands should be shown and executed. See also -dryrun. -V Displays the compiler version information (same as the -logo option). -vec-report[n] (i32 and i32em) Specifies the amount of vectorizer diagnostic information to report. You can specify one of the following values for [n]: 0 - Produces no diagnostic information. 1 - Indicates vectorized loops. This is the default. 2 - Indicates vectorized and non-vectorized loops. 3 - Indicates vectorized and non-vectorized loops and prohibiting data dependence information. 4 - Indicates non-vectorized loops. 5 - Indicates non-vectorized loops and prohibiting data dependence information. -vms Causes the run-time system to behave like HP* For­ tran on OpenVMS* Alpha systems and VAX* systems (VAX FORTRAN*) in the following ways: ⋠Modifies certain defaults The -vms option sets the -check format and -check output_conversion options. You can override this by specifying the option on the command line. For example, if you specify -vms -check noformat, you get -check noformat. ⋠Alignment The -vms option does not affect the alignment of fields in records or items in COMMON. Use -align norecords to pack fields of records on the next byte boundary for compatibility with HP Fortran on OpenVMS systems. ⋠INCLUDE qualifiers /LIST and /NOLIST are recognized at the end of the file pathname in an INCLUDE statement at com­ pile time. If the file name in the INCLUDE statement does not specify the complete path, the path used is the current directory. ⋠Quotation mark character (") A quotation mark is recognized as starting an octal constant (such as "177) instead of a char­ acter literal ("..."). ⋠Deleted records in relative files When a record in a relative file is deleted, the first byte of that record is set to a known char­ acter (currently '@'). Attempts to read that record later result in ATTACCNON errors. The rest of the record (the whole record, if -vms is not specified) is set to nulls for unformatted files and spaces for formatted files. ⋠ENDFILE records When an ENDFILE is performed on a sequential unit, an actual one byte record containing a Ctrl/Z is written to the file. If -vms is not specified, an internal ENDFILE flag is set and the file is truncated. The -vms option does not affect ENDFILE on rela­ tive files; such files are truncated. ⋠Reading deleted records and ENDFILE records The run-time direct access READ routine checks the first byte of the retrieved record. If this byte is '@' or NULL ("\0"), then ATTACCNON is returned. The run-time sequential access READ routine checks to see if the record it just read is one byte long and contains a Ctrl/Z. If this is true, it returns EOF. ⋠OPEN statement effects Carriage control defaults to FORTRAN if the file is formatted, and the unit is connected to a ter­ minal (checked by means of isatty(3)). Otherwise, carriage control defaults to LIST. The -vms option affects the record length for direct access and relative organization files. The buffer size is increased by one (to accommo­ date the deleted record character). ⋠Implied logical unit numbers Certain environment variables are recognized at run time for ACCEPT, PRINT, and TYPE statements, and for READ and WRITE statements that do not specify a unit number, such as: READ (*,1000). ⋠Treatment of blanks in input The -vms option causes the defaults for keyword BLANK in OPEN statements to become 'NULL' for an explicit OPEN, and 'ZERO' for an implicit OPEN of an external or internal file. ⋠Carriage control default If -vms -ccdefault default is specified, carriage control defaults to FORTRAN if the file is for­ matted and the unit is connected to a terminal. -w Disables all warning messages (same as the -nowarn and -warn nogeneral options). -W Disables warnings (n=0) or enables warnings (n=1). The default is -W1 (same as the -warn general option). -W0 is the same as specifying -warn nogeneral, -nowarn, or -w. -Wa,[,,...] Passes options , , and so forth, to the assembler for processing. If the assembler is not invoked, these options are ignored. -warn [keyword] Specifies the level of diagnostic messages issued by the compiler. The following are -warn options: ⋠-warn all Enables all warning messages. This is the same as specifying -warn with no keyword. ⋠-warn none Disables all warning messages. This is the same as specifying -nowarn. ⋠-warn noalignments Disables warnings for data that is not naturally aligned. The default is -warn alignments. ⋠-warn declarations Enables error messages about any undeclared sym­ bols. This option makes the default data type of a variable undefined (IMPLICIT NONE) rather than using the implicit Fortran rules. The default is -warn nodeclarations. ⋠-warn errors Tells the compiler to change all warning-level messages into error-level messages. The default is -warn noerrors. ⋠-warn nogeneral Disables all information-level and warning-level messages. The default is -warn general. ⋠-warn ignore_loc Enables warnings when %LOC is stripped from an argument. The default is -warn noignore_loc. ⋠-warn interfaces Tells the compiler to check the interfaces of all SUBROUTINEs called and FUNCTIONs invoked in your compilation against a set of interface blocks stored separately from the source being compiled. The compiler generates a compile-time message if the interface used to invoke a routine does not match the interface defined in a .mod file exter­ nal to the source (that is, in a .mod generated by -gen-interfaces as opposed to a .mod file USEd in the source). The compiler looks for these .mods in the current directory or in the direc­ tory specified by the include ( -I ) or -module option. The default is -warn nointerfaces. ⋠-warn stderrors Tells the compiler to change warnings about For­ tran standards violations into error messages. This option sets the -std95 option. If you want Fortran 90 standards violations to become errors, you should specify -warn stderrors and -std90. The default is -warn nostderrors. ⋠-warn truncated_source Enables warnings when source exceeds the maximum columm width in fixed-format source files. The default is -warn notruncated_source. ⋠-warn uncalled Enables warnings when a statement function is never called. The default is -warn nouncalled. ⋠-warn unused Enables warnings about variables that are declared but never used. The default is -warn nounused. ⋠-warn nousage Disables warnings about questionable programming practices. The default is -warn usage. -watch [keyword] Tells the compiler to display certain information to the console output window. The following are -watch options: ⋠-watch all Enables all -watch options. This is the same as specifying -watch with no keyword. ⋠-watch cmd Tells the compiler to display and execute driver tool commands. The default is -watch nocmd. ⋠-watch source Tells the compiler to display the name of the file being compiled. The default is -watch nosource. ⋠-watch none Disables all -watch options. This is the default. This is the same as specifying -nowatch. -WB Turns a compile-time bounds check into a warning. Normally, compile-time bounds checks are errors. -what Displays the version strings of the Fortran command and the compiler. -Wl,[,,...] Passes options , , and so forth, to the linker for processing. If the linker is not invoked, these options are ignored. -Wp,[,,...] Passes options , , and so forth, to the preprocessor. If the preprocessor is not invoked, these options are ignored. -X Removes standard directories from the include file search path (same as the -nostdinc option). 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. -x

(i32 and i32em) Generates specialized and optimized code for the processor that executes your program. The charac­ ters K, W, N, B, P, and T denote the processor types (

). The following are -x options: ⋠-xK Generates code for Intel Pentium III processors and compatible Intel processors. ⋠-xW Generates code for Intel Pentium 4 processors and compatible Intel processors. ⋠-xN Generates code for Intel Pentium 4 and compatible Intel processors with Streaming SIMD Extensions 2. The resulting code may contain unconditional use of features that are not supported on other processors. This option also enables new optimizations in addition to Intel processor-specific optimiza­ tions including advanced data layout and code restructuring optimizations to improve memory accesses for Intel processors. ⋠-xB Generates code for Intel Pentium M processors and compatible Intel processors. Also enables new optimizations in addition to Intel processor-spe­ cific optimizations. ⋠-xP Generates code for Intel(R) Core(TM) Duo proces­ sors, Intel(R) Core(TM) Solo processors, Intel(R) Pentium(R) 4 processors with Streaming SIMD Extensions 3, and compatible Intel processors with Streaming SIMD Extensions 3. The resulting code may contain unconditional use of features that are not supported on other processors. This option also enables new optimizations in addition to Intel processor-specific optimiza­ tions including advanced data layout and code restructuring optimizations to improve memory accesses for Intel processors. ⋠-xT Generates code for Intel(R) Core(TM)2 Duo proces­ sors, Intel(R) Core(TM)2 Extreme processors, and the Dual-Core Intel(R) Xeon(R) processor 5100 series. This option also enables new optimizations in addition to Intel processor-specific optimiza­ tions including advanced data layout and code restructuring optimizations to improve memory accesses for Intel processors. The only options available on Intel(R) EM64T sys­ tems are -xW, -xP, and -xT. On Mac OS systems, the only valid option is -xP. On these systems, it is the default and is always set. If you specify more than one processor value, code is generated for only the highest-performing pro­ cessor specified. The highest-performing to lowest- performing processor values are: T, P, B, N, W, K. Do not use these options if you are executing a program on a processor that is not an Intel(R) pro­ cessor. If you use these options on a non-compati­ ble processor to compile the main program, the pro­ gram may fail with an illegal instruction exception or display other unexpected behavior. In particular, such programs compiled with proces­ sor values N, B, or P will display a fatal run-time error if they are executed on unsupported proces­ sors. For more information, see your Optimizing Applications guide. -Xlinker Passes directly to the linker for process­ ing. -y Specifies that the source file should be checked only for correct syntax (same as the -syntax-only, -fsyntax-only, and -syntax options). -zero Initializes to zero all local scalar variables of intrinsic type INTEGER, REAL, COMPLEX, or LOGICAL that are saved but not yet initialized. The default is -nozero. Use -save on the command line to make all local variables specifically marked as SAVE. -Zp[n] 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 (same as the -align recbyte option). The [n] can be 1, 2, 4, 8, or 16. If you do not specify [n], you get -Zp16, which is the default. EXAMPLES The following examples demonstrate optimization and multi­ ple input files: 1) ifort ax.f90 This command compiles ax.f90 producing executable file a.out. Optimizations occur by default. 2) ifort -o abc ax.f90 bx.f90 cx.f90 -ipo This command uses option -o to name the executable file abc and compiles ax.f90, bx.f90, and cx.f90 as one program with interprocedural analysis. 3) ifort -c ax.f90 bx.f90 cx.f90 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) ifort -c -O1 sub2.f90 ifort -c -O1 sub3.f90 ifort -o main.exe -g -O0 main.f90 sub2.o sub3.o The first two commands show incremental compilation with minimal optimization. The first command generates an object file for sub2; the second generates an object file for sub3. The last command uses option -O0 to disable all com­ piler default optimizations. It uses option -g to gen­ erate symbolic debugging information and line numbers in the object code, which can be used by a source- level debugger. RESTRICTIONS The standard libraries, like libc, are loaded with the -l loader option and not a full pathname. The wrong library can be loaded if there are files with names like libc.a or libc.so in the directories specified with the -L loader option, or in the default directories searched by the loader. For ifort, when multiple source files are compiled together without the -c option, the suffix of the first source file determines the default source form for the entire compilation. DIAGNOSTICS The ifort command produces diagnostic messages that are intended to be self-explanatory. The loader can also pro­ duce occasional messages. PREDEFINED SYMBOLS The driver defines symbols (or macros) at the start of compilation and when certain compiler options are speci­ fied during compilation. The following symbols are defined on all systems at the start of compilation: __INTEL_COMPILER=910 __INTEL_COMPILER_BUILD_DATE= __i386__ (i32 only) __i386 (i32 only) i386 (i32 only) The following symbols are defined on Linux systems at the start of compilation: __ELF__ __linux__ __linux linux __gnu_linux__ __unix__ __unix unix __ia64__ (i64 only) __ia64 (i64 only) ia64 (i64 only; deprecated) __x86_64__ (i32em only) __x86_64 (i32em only) The following symbols are defined on Mac OS systems at the start of compilation: __APPLE__ __MACH__ __PIC__ __pic__ The following symbols are defined on all systems during compilation if certain compiler options are specified: _OPENMP=200505 Defined if option -openmp is specified. _PGO_INSTRUMENT Defined if option -prof-gen is specified. ENVIRONMENT VARIABLES You can customize your environment by using run-time and compile-time environment variables, or by using OpenMP or Profile Guided Optimization (PGO) environment variables. Run-Time Environment Variables The following are run-time environment variables. For more information on these variables, see the Intel(R) For­ tran Building Applications guide. Note that some environment variables are enabled (set to true) by specifying Y, y, T, t, or 1; they are disabled (set to false) by specifying N, n, F, f, or 0. decfort_dump_flag If set to true, a core dump will be taken when any severe Intel Fortran run-time error occurs. If the program is executing under a debugger, a signal will be raised, which will allow you to trace back to where the error was detected. F_UFMTENDIAN Lets you specify the numbers of the units to be used for little-endian-big-endian conversion pur­ poses. FOR_ACCEPT Lets you specify a file to be read from when the ACCEPT statement is used. FOR_DIAGNOSTIC_LOG_FILE Lets you specify a file where diagnostic informa­ tion should be written. FOR_DISABLE_DIAGNOSTIC_DISPLAY If set to true, disables the display of all error information. FOR_DISABLE_STACK_TRACE If set to true, disables the call stack trace information that follows the displayed severe error message text. FOR_IGNORE_EXCEPTIONS If set to true, disables the default run-time exception handling. FOR_NOERROR_DIALOGS If set to true, disables the display of dialog boxes when certain exceptions or errors occur. FOR_PRINT Lets you specify a file to be written to when the PRINT statement is used. FOR_READ Lets you specify a file to be read from when the READ statement is used. FOR_TYPE Lets you specify a file to be written to when the TYPE statement is used. FORT_BUFFERED If set to true, buffered I/O will be used at run time for output of all Fortran I/O units, except those with output to the terminal. FORT_CONVERTn Lets you specify the data format for an unformatted file associated with a particular unit number (n). FORT_CONVERT.ext and FORT_CONVERT_ext Lets you specify the data format for unformatted files with a particular file extension (ext). FORTn Lets you specify the file name for a particular unit number (n), when a file name is not specified in the OPEN statement or an implicit OPEN is used, and option -fpscomp filesfromcmd is not specified. NLSPATH Lets you specify the path for the Intel Fortran run-time error message catalog. TBK_ENABLE_VERBOSE_STACK_TRACE If set to true, displays more detailed call stack trace information in the event of an error. TBK_FULL_SRC_FILE_SPEC If set to true, displays complete file name infor­ mation for traceback output, including the path. TEMP, TMP, and TMPDIR Lets you specify an alternate working directory where temporary files are created. Compile-Time Environment Variables The following are compile-time environment variables. For more information on these variables, see the Intel(R) Fortran Building Applications guide. FPATH The path for include files. IFORTCFG The configuration file to use instead of the default configuration file. LD_LIBRARY_PATH The path for shared (.so) library files on Linux* systems. DYLD_LIBRARY_PATH The path for dynamic library files on Mac OS* sys­ tems. PATH The path for compiler executable files. TMPDIR The alternate working directory where scratch files are created. INTEL_LICENSE_FILE The path to the product license file. Standard OpenMP Environment Variables The following are standard OpenMP environment variables. For more information on these variables, see the Intel(R) Fortran Optimizing Applications guide. OMP_DYNAMIC Enables (TRUE) or disables (FALSE) the dynamic adjustment of the number of threads. The default value is FALSE. OMP_NESTED Enables (TRUE) or disables (FALSE) nested paral­ lelism. The default value is FALSE. OMP_NUM_THREADS Sets the number of threads to use during execution. The default is the number of processors currently installed in the system while generating the exe­ cutable. OMP_SCHEDULE Specifies the type of run-time scheduling. The default is static scheduling. Intel(R) Extensions to OpenMP Environment Variables The following are Intel extensions to the OpenMP environ­ ment variables. For more information on these variables, see the Intel(R) Fortran Optimizing Applications guide. KMP_LIBRARY Selects the OpenMP run-time library throughput. The options for the variable value are: serial, turnaround, or throughput indicating the execution mode. The default value is throughput. KMP_STACKSIZE Sets the number of bytes to allocate for each par­ allel thread to use as its private stack. Use the optional suffix b, k, m, g, or t, to specify bytes, kilobytes, megabytes, gigabytes, or terabytes. The default on IA-32 systems is 2m; the default on Intel(R) EM64T and Itanium(R)-based systems is 4m. Profile Guided Optimization Environment Variables The following are Profile Guided Optimization (PGO) envi­ ronment variables. For more information on these vari­ ables, see the Intel(R) Fortran Optimizing Applications guide. 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 Initiates Interval Profile Dumping in an instru­ mented application. Normally, the _PGOPTI_Set_Interval_Prof_Dump(int interval) func­ tion activates Interval Profile Dumping and sets the approximate frequency at which dumps will occur. The interval parameter is measured in mil­ liseconds and specifies the time interval at which profile dumping will occur. You can use this environment variable as an alter­ native method of initiating Interval Profile Dump­ ing. Set it to the desired interval value before 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 informa­ tion files and creates a new pgopti.dpi file if .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. TECHNICAL SUPPORT The Intel Fortran Compiler product web site offers timely and comprehensive product information, including product features, white papers, and technical articles. For the latest information, please 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 tech­ nical support and product updates through Intel(R) Premier 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, to contact Intel, or to seek product support, please visit: http://www.intel.com/soft­ ware/products/support. SEE ALSO icc(1), gprof(1), ld(1) The Intel(R) Fortran Building Applications guide and the Intel Fortran Optimizing Applications guide are the definitive sources for detailed information on using the Intel Fortran Compiler. In addition, see these other documents provided with the Intel Fortran Compiler: ⋠Product Release Notes ⋠The Intel Fortran Compiler Options guide ⋠The Intel Fortran Language Reference ⋠The Intel Fortran Libraries Reference You can access these documents from /doc/Doc_Index.htm. The default path is /opt/intel/fc/9.x.xxx/doc/Doc_Index.htm (or .html). COPYRIGHT INFORMATION Copyright (C) 1985-2006, Intel Corporation. * Other brands and names are the property of their respec­ tive owners. Copyright(C) 2006 Intel Corporation ifort(1) dplace - a tool for controlling placement of processes onto cpus -c Cpu numbers. Specified as a list of cpus or cpu ranges. Cpu ranges may optionally be strided: Example: "-c1", "-c2-4", "-c1,4-8,3", -c2-8:3. The specification -c2-4 is equivalent to -c2,3,4 and -c2-8:3 is equivalent to 2,5,8. Ranges may also be specified in reverse order: -c12-8 is equivalent to 12,11,10,9,8. Cpu numbers are NOT physical cpu numbers. They are logical cpu number that are rela­ tive to the cpus that are in the set of allowed cpus as specified by the current cpuset. A cpu value of "x", in the argument list for -c option, indicates that binding should not be done for that process. "x" should be used only if the -e option is also used. Cpu numbers start at 0. If this option is not specified, all cpus of the current cpuset are available. -e Exact placement. As proceses are created, they are bound to cpus in the exact order that the cpus are specified in the cpu list. Cpu numbers may appear multiple times in the list. A cpu value of "x", in the argument list for -c option, indicates that binding should not be done for that the process. If the end of the list is reached, binding starts over at the beginning of the list. -x Provides the ability to skip placement of pro­ cesses. is a bitmask. If bit N of is set, then the N+1th process that is forked is not placed. For example, setting the mask to 6 will cause the 2nd & 3rd processes from being placed. The first process (the process named by the ) will be assigned to the first cpu. The second & third processes are not placed. The fourth process is assigned to the second cpu, etc.. This option is useful for certain classes of threaded apps that spawn a few helper processes that are not typically do not use much cpu time. (Hint: Intel OpenMP applications currently should be placed using -x6 if using linuxthreads or -x2 if using NPTL. This could change in future versions of OpenMP). Example: dplace -e -c0,x,1-3 a.out where a.out is an OpenMP application that has to be run on 4 processors. Pin thread 1 on cpu 0, skip the Intel OpenMP compiler helper thread, and bind the next 3 threads on cpus 1,2,3 respectively. Alternatively, the same functionality could be achieved by issuing 'dplace -e -x2 -c0-3 a.out'. OpenMP Environment variables (settings are case-insensitive): OMP_NUM_THREADS Sets the number of threads to use during execution. Default is the number of processors. OMP_DYNAMIC Enables (true) or disables (false) the dynamic adjustment of the number of threads. Default is false. KMP_LIBRARY Selects the OpenMP runtime library throughput. The options for the variable value are: serial, turnaround, or throughput indicating the execution mode. The default value of throughput is used if this variable is not specified. The turnaround mode is designed to keep active all of the processors involved in the parallel computation in order to minimize the execution time of a single job. In this mode, the worker threads actively wait for more parallel work, without yielding to other threads. 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 terabytes. Default on Itanium compiler: 4m KMP_SCHEDULE static,greedy (DEFAULT) For loops running with OpenMP schedule "static", this results in (#iterations/#threads) iterations--rounded to the next higher integer--being allocated to most threads, but the final thread(s) may be allocated much fewer, or even zero, iterations. static,balanced For loops running with OpenMP schedule "static", this results in (#iterations/#threads) iterations--rounded to the next lower integer--being allocated to most threads, with at most one additional iteration being allocated to some threads. Although the largest number of iterations assigned to any thread remains the same, this results in a more even sharing of iterations between threads, which may sometimes lead to a performance improvement relative to the default static thread distribution. For example, consider a loop of 9 iterations running on 4 threads: KMP_SCHEDULE Number of iterations Thread 0 Thread 1 Thread 2 Thread 3 "static,greedy" 3 3 3 0 "static,balanced" 3 2 2 2 MPI Environment variables: MPI_COMM_SIZE - determines the size of the group associated with a communicator. MPI_DSM_CPULIST - allows you to manually select processors to use for MPI application. MPI_DSM_MUSTRUN - ensures that each MPI process will get a physical CPU & memory on the node to which it was assigned. Others: mpirun - command to run MPI programs limit [ resource [ max-use ] ] Limit the consumption by the current process or any process it spawns, each not to exceed max-use on the specified resource. If max-use is omitted, print the current limit; if resource is omitted, display all limits. resource may include: stacksize Maximum stack size for the process.