man icc/icpc
The icc/icpc manual page (html version). - - - NB! Note that the whole page may not be displayed in the "preview window" below! - - -
man-icc-9.x.htm
—
HTML,
143Kb
File contents
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0068)ftp://download.intel.com/support/performancetools/c/linux/v9/icc.txt -->
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.6000.16414" name=GENERATOR></HEAD>
<BODY><PRE>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 com-
mand. Invoking the compiler using icpc compiles .c, and .i files as
C++. Invoking the compiler using icc compiles .c and .i files as C.
Using icpc always links in C++ libraries. Using icc only links in C++
libraries if C++ source is provided on the command line.
DESCRIPTION
The Intel(R) C++ Compiler is designed to process C and C++ programs on
Intel architecture based systems. You can preprocess, compile, assem-
ble, and link these programs.
This document explains how information and instructions apply differ-
ently to IA-32 applications, Intel(R) EM64T applications, and Ita-
nium(R) architecture-based applications. If a description does not
explicitly state a specific architecture, it is applicable to all. See
the Intel C++ Compiler user documentation for more complete information
than is presented here.
Most language features are available on all supported systems. How-
ever, some language features are only available on certain processors
or a certain operating system. Such language features are labeled
within parenthses as follows:
i32 Means the feature is available on IA-32-based systems.
i32em Means the feature is available on IA-32-based systems with
Intel(R) Extended Memory 64 Technology (Intel(R) EM64T).
i64 Means the feature is available on Itanium(R)-based systems.
L*X Means the feature is available on Linux* systems.
M*X32 Means the feature is available on Intel(R)-based systems running
Mac OS*.
If a labeled feature is only available on certain processors or operat-
ing systems, you will see the word ( only) within the label along with
the appropriate abbreviation(s). If a labeled feature is not available
on a certain processor or operating system, you will see the words (not
on ) within the label along with the appropriate 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-<mode>
· -gcc-name
· -gcc-version
· -fabi-version
· -no-gcc (see gcc Predefined Macros for more information)
· -[no-]gcc-extern-inline
In the 9.1 compiler, there is improved compatibility with gcc 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 ver-
sions greater than or equal to 3.2. See the Intel C++ Compiler User's
Guide for more information.
OPTION SUMMARIES
Option Alphabetic Summary
All of the Intel C++ Compiler options are listed alphabetically in this
section. After each listing is a reference to the Functional area
where a detailed description of the option appears.
-A- see Preprocessor Options
-A<name>[<value(s)>]
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, Optimization Levels,
Automatic Processor-specific Optimization,
Vectorization Options
-B<dir> 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, Paralleliza-
tion with OpenMP*
-[no-]clomp-sharable-propagation
see Advanced Performance Options, Paralleliza-
tion with OpenMP*
-[no-]cluster-openmp-profile
see Advanced Performance Options, Paralleliza-
tion with OpenMP*
-[no-]cluster-openmp
see Advanced Performance Options, Paralleliza-
tion with OpenMP*
-[no-]complex-limited-range
see Advanced Performance Options
-create-pch <file>
see Output, Debug, and PCH Options; Precom-
piled Headers
-cxxlib-<mode> see Linking or Linker Options
-D<name>[=<value>]
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<filename>
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 <dir> see Language Options
-F<dir> see Mac OS Options
-fabi-version=<value>
see Miscellaneous Options
-f[no-]alias see Performance Options
-fargument-[no-]alias
see Advanced Performance Options
-fargument-noalias-global
see Advanced Performance Options
-fast see Performance Options, Optimization Levels
-fcode-asm see Output, Debug, and PCH Options
-f[no-]common see Miscellaneous Options
-fdata-sections see Performance Options
-f[no-]exceptions see Performance Options
-f[no-]fnalias see Performance Options
-ffunction-sections
see Performance Options
-f[no-]inline see Performance Options
-f[no-]inline-functions
see Performance Options
-finline-limit=<n>
see Performance Options
-f[no-]math-errno see Miscellaneous Options
-fminshared see Miscellaneous Options
-fno-builtin see Miscellaneous Options
-fno-builtin-<func>
see Performance Options, Miscellaneous Options
-fno-gnu-keywords see Language Options
-fno-implicit-inline-templates
see Language Options
-fno-implicit-templates
see Language Options
-f[no-]omit-frame-pointer
see Performance Options
-f[no-]non-lvalue-assign
see Language Options
-fno-operator-names
see Language Options
-[no-]fnsplit see Advanced Performance Options
-fp see Performance Options
-fpack-struct see Miscellaneous Options
-fpascal-strings see Mac OS Options
-fpermissive see Language Options
-f[no-]pic see Miscellaneous Options
-f[no-]PIC see Miscellaneous Options
-fp-model <name> 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-<n>
see Language Options
-ftls-model=<model>
see Advanced Performance Options
-ftrapuv see Output, Debug, and PCH Options
-[no-]ftz see Advanced Performance Options
-funroll-loops see Advanced Performance Options
-funsigned-bitfields
see Language Options
-funsigned-char see Language Options
-f[no]verbose-asm see Output, Debug, and PCH Options
-fvisibility=[extern|default|protected|hidden|internal]
see Miscellaneous Options
-fvisibility-default=<file>
see Miscellaneous Options
-fvisibility-extern=<file>
see Miscellaneous Options
-fvisibility-hidden=<file>
see Miscellaneous Options
-fvisibility-inlines-hidden
see Miscellaneous Options
-fvisibility-internal=<file>
see Miscellaneous Options
-fvisibility-protected=<file>
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=<dir> see Miscellaneous Options
-gcc-version=<nnn>
see Miscellaneous Options
-[no-]global-hoist
see Miscellaneous Options
-H see Preprocessor Options
-help see Miscellaneous Options
-I<dir> see Preprocessor Options
-idirafter<dir> see Preprocessor Options
-i-dynamic see Linking or Linker Options
-imacros <file> see Preprocessor Options
-inline-debug-info
see Output, Debug, and PCH Options
-inline-factor see Advanced Performance Options
-inline-forceinline
see Advanced Performance Options
-inline-max-per-compile
see Advanced Performance Options
-inline-max-per-routine
see Advanced Performance Options
-inline-max-size see Advanced Performance Options
-inline-max-total-size
see Advanced Performance Options
-inline-min-size see Advanced Performance Options
-ip see Advanced Performance Options, Interproce-
dural Optimizations (IPO)
-[no-]IPF-fltacc see Advanced Performance Options
-IPF-flt-eval-method0
see Advanced Performance Options
-[no-]IPF-fma see Advanced Performance Options
-[no-]IPF-fp-relaxed
see Advanced Performance Options
-IPF-fp-speculation{fast|safe|strict|off}
see Advanced Performance Options
-ip-no-inlining see Advanced Performance Options
-ip-no-pinlining see Advanced Performance Options
-ipo[value] see Advanced Performance Options, Interproce-
dural Optimizations (IPO)
-ipo-c see Advanced Performance Options, Interproce-
dural Optimizations (IPO)
-ipo-S see Advanced Performance Options, Interproce-
dural Optimizations (IPO)
-ipo-separate see Advanced Performance Options, Interproce-
dural Optimizations (IPO)
-iprefix <prefix> see Preprocessor Options
-iquote<dir> see Preprocessor Options
-i-static see Linking or Linker Options
-isystem<dir> see Preprocessor Options
-ivdep-parallel see Advanced Performance Options
-iwithprefix <dir>
see Preprocessor Options
-iwithprefixbefore <dir>
see Preprocessor Options
-Kc++ see Language Options
-kernel see Miscellaneous Options
-l<dir> see Linking or Linker Options
-L<dir> see Linking or Linker Options
-long_double see Miscellaneous Options
-M see Preprocessor Options
-malign-double see Language Options
-malign-mac68k see Mac OS Options
-malign-natural see Mac OS Options
-malign-power see Mac OS Options
-map-opts see Output, Debug, and PCH Options
-march={pentiumpro | pentiumii | pentiumiii | pentium2 | pen-
tium3 | pentium4}
see Performance Options
-mcmodel=<mem_model>
see Linking or Linker Options
-mcpu=<cpu> see Performance Options
-MD see Preprocessor Options
-mdynamic-no-pic see Mac OS Options
-MF<file> 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<target> 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<target> see Preprocessor Options
-mtune=<cpu> 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<file> see Output, Debug, and PCH Options
-O see Performance Options
-O0 see Performance Options, Optimization Levels
-O1 see Performance Options, Optimization Levels
-O2 see Performance Options, Optimization Levels
-O3 see Performance Options, Optimization Levels
-Ob<n> see Performance Options
-openmp see Advanced Performance Options, Paralleliza-
tion with OpenMP*
-openmp-profile see Advanced Performance Options, Paralleliza-
tion with OpenMP*
-openmp-report{0|1|2}
see Advanced Performance Options, Paralleliza-
tion with OpenMP*
-openmp-stubs see Advanced Performance Options, Paralleliza-
tion with OpenMP*
-opt-mem-bandwidth<n>
see Advanced Performance Options
-opt-report see Advanced Performance Options
-opt-report-file<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, Paralleliza-
tion with OpenMP*
-opt-report-routine<name>
see Advanced Performance Options
-Os see Performance Options
-p see Advanced Performance Options
-P see Preprocessor Options
-parallel see Advanced Performance Options, Auto Paral-
lelization Options
-par-report{0|1|2|3}
see Advanced Performance Options, Auto Paral-
lelization Options
-par-threshold[<n>]
see Advanced Performance Options, Auto Paral-
lelization Options
-pc{32|64|80} see Performance Options
-pch see Output, Debug, and PCH Options; Precom-
piled Headers
-pch-dir <dir> see Output, Debug, and PCH Options; Precom-
piled Headers
-[no-]prec-div see Performance Options
-[no-]prec-sqrt see Performance Options
-[no-]prefetch see Advanced Performance Options
-print-multi-lib see Output, Debug, and PCH Options
-prof-dir <dir> see Advanced Performance Options, Pro-
file-guided Optimizations (PGO)
-prof-file <file> see Advanced Performance Options, Pro-
file-guided Optimizations (PGO)
-prof-gen[x] see Advanced Performance Options, Pro-
file-guided Optimizations (PGO)
-prof-gen-sampling
see Advanced Performance Options, Pro-
file-guided Optimizations (PGO)
-prof-use see Advanced Performance Options, Pro-
file-guided Optimizations (PGO)
-Qinstall <dir> see Component Control Options
-Qlocation,<tool>,<path>
see Component Control Options
-Qoption,<tool>,<optlist>
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 <file> see Linking or Linker Options
-tcheck see Advanced Performance Options
-[no]traceback see Compiler Diagnostics Options
-u <symbol> see Linking or Linker Options
-U<name> see Preprocessor Options
-unroll<n> 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 <file> see Output, Debug, and PCH Options; Precom-
piled Headers
-V see Miscellaneous Options
-v see Miscellaneous Options
-vec-report[{0|1|2|3|4|5}]
see Advanced Performance Options
--version see Miscellaneous Options
-w see Compiler Diagnostics Options
-w<n> see Compiler Diagnostics Options
-Wa<o1>[,<o2>,...]
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=<n>
see Compiler Diagnostics Options
-wd<L1>[,<L2>,...]
see Compiler Diagnostics Options
-W[no-]deprecated see Compiler Diagnostics Options
-we<L1>[,<L2>,...]
see Compiler Diagnostics Options
-Werror see Compiler Diagnostics Options
-Winline see Compiler Diagnostics Options
-Wl,<o1>[,<o2>,...]
see Linking or Linker Options
-W[no-]main see Compiler Diagnostics Options
-W[no-]missing-prototypes
see Compiler Diagnostics Options
-wn<n> see Compiler Diagnostics Options
-Wp64 see Compiler Diagnostics Options
-Wp,<o1>[,<o2>,...]
see Linking or Linker Options, Precompiled
Headers
-W[no-]pointer-arith
see Compiler Diagnostics Options
-wr<L1>[,<L2>,...]
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<L1>[,<L2>,...]
see Compiler Diagnostics Options
-X see Preprocessor Options
-x <type> see Miscellaneous Options
-x{K|W|N|B|P|T} see Performance Options, Optimization Levels,
Optimizing Exclusively for Specific Proces-
sors, Vectorization Options
-Xlinker <val> see Linking or Linker Options
-Zp[n] see Language Options
Option Functional Summary
All the options listed in the following summary are described in
more detail in the sections that follow.
Performance Options
-ax{K|W|N|B|P|T} -f[no-]alias -fast -fdata-sections
-f[no-]exceptions -f[no-]fnalias -ffunction-sections
-f[no-]inline -f[no-]inline-functions -finline-limit=<n>
-fno-builtin-<func> -f[no-]omit-frame-pointer -fp
-[no-]fp-port -fpstkchk -march={pentiumpro | pentiumii |
pentiumiii | pentium2 | pentium3 | pentium4} -mcpu=<cpu>
-m[no-]ieee-fp -mp -mp1 -msse -msse2 -msse3
-mtune=<cpu> -O -O0 -O1 -O2 -O3 -Ob<n> -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-propaga-
tion -[no-]cluster-openmp-profile -[no-]cluster-openmp
-[no-]complex-limited-range -fargument[no-]-alias -far-
gument-noalias-global -[no-]fnsplit -fp-model <name>
-ftls-model=<model> -[no-]ftz -funroll-loops
-inline-factor -inline-forceinline -inline-max-per-com-
pile -inline-max-per-routine -inline-max-size
-inline-max-total-size -inline-min-size -ip
-[no-]IPF-fltacc -IPF-flt-eval-method0 -[no-]IPF-fma
-[no-]IPF-fp-relaxed -IPF-fp-specula-
tion{fast|safe|strict|off} -ip-no-inlining -ip-no-pin-
lining -ipo[value] -ipo-c -ipo-S -ipo-separate
-ivdep-parallel -mno-serialize-volatile -mserial-
ize-volatile -openmp -openmp-profile
-openmp-report{0|1|2} -openmp-stubs -opt-mem-band-
width<n> -opt-report -opt-report-file<file>
-opt-report-help -opt-report-level[{min|med|max}]
-opt-report-phaseipo|hlo|ilo|ecg|omp|all -opt-report-rou-
tine<name> -p -parallel -par-report{0|1|2|3}
-par-threshold[<n>] -[no-]prefetch -prof-dir <dir>
-prof-file<file> -prof-gen[x] -prof-gen-sampling
-prof-use -qp -ssp -tcheck -unroll<n> -unroll0
-vec-report[{0|1|2|3|4|5}]
Output, Debug, and PCH Options
-c -create-pch <file> -[no-]debug[keyword] -fcode-asm
-fsource-asm -ftrapuv -f[no]verbose-asm -g -g0
-inline-debug-info -map-opts -o<file> -pch
-pch-dir<dir> -print-multi-lib -S -use-asm -use-msasm
-use-pch<file>
Preprocessor Options
-A- -A<name>[<value(s)>] -C -D<name>[=<value>] -dD
-dM -dN -E -EP -H -I<dir> -idirafter<dir>
-imacros<file> -iprefix<prefix> -iquote<dir> -isys-
tem<dir> -iwithprefix<dir> -iwithprefixbefore<dir> -M
-MD -MF<file> -MG -MM -MMD -MP -MQ<target> -MT<tar-
get> -no-gcc -nostdinc -P -U<name> -X
Component Control Options
-Qinstall<dir> -Qlocation,<tool>,<path> -Qop-
tion,<tool>,<optlist>
Language Options
-[no]align -ansi -[no-]c99 -export -export-dir <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-<n> -fun-
signed-bitfields -funsigned-char -Kc++ -malign-double
-[no]restrict -std=c99 -strict-ansi -Zp[n]
Compiler Diagnostics Options
-[no]traceback -w -w<n> -W[no-]abi -Wall -Wbrief
-Wcheck -W[no-]comment[s] -Wcontext-limit=<n>
-wd<L1>[,<L2>,...] -W[no-]deprecated -we<L1>[,<L2>,...]
-Werror -Winline -W[no-]main -W[no-]missing-prototypes
-wn<n> -Wp64 -W[no-]pointer-arith -wr<L1>[,<L2>,...]
-W[no-]return-type -W[no-]shadow -W[no-]uninitialized
-W[no-]unknown-pragmas -W[no-]unused-function
-ww<L1>[,<L2>,...]
Miscellaneous Options
-B<dir> -dryrun -dumpversion -fabi-version=<value>
-f[no-]common -f[no-]math-errno -fminshared
-fno-builtin -fno-builtin-<func> -fpack-struct
-f[no-]pic -f[no-]PIC -fr32 -freg-struct-return
-fstack-security-check -fvisibility=[extern | default |
protected | hidden | internal] -fvisibil-
ity-default=<file> -fvisibility-extern=<file> -fvisibil-
ity-hidden=<file> -fvisibility-inlines-hidden -fvisibil-
ity-internal=<file> -fvisibility-protected=<file>
-[no-]gcc-extern-inline -gcc-name=<dir> -gcc-ver-
sion=<nnn> -[no-]global-hoist -help -kernel -long_dou-
ble -mfixed-range=f12-f15,f32-f127 -[no-]multi-
byte-chars -nobss-init -reserve-kernel-regs -[no-]sox
-V -v --version -x<type>
Linking or Linker Options
-cxxlib-<mode> -dynamic-linker<filename> -dynamiclib
-i-dynamic -i-static -L<dir> -l<dir>
-mcmodel<mem_model> -m[no-]relax -no-cpprt -nodefault-
libs -nostartfiles -nostdlib -shared -shared-libcxa
-static -static-libcxa -T <file> -u <symbol>
-Wa<o1>[,<o2>,...] -Wl,<o1>[,<o2>,...]
-Wp,<o1>[,<o2>,...] -Xlinker<val>
Mac OS Options
-F<dir> -fpascal-strings -malign-mac68k -malign-natu-
ral -malign-power -mdynamic-no-pic
OPTION DESCRIPTIONS
Performance Options
The performance options act using general criteria to optimize
code. The optimizations listed in this section are available
for Intel architectures or are compatible with gcc compiler
options.
-ax<codes> (i32, i32em only)
Generates code for Intel(R) Core(TM) Duo processors,
Intel(R) Core(TM) Solo processors, Intel(R) Pentium(R) 4
processors with Streaming SIMD Extensions 3, and compati-
ble Intel processors with Streaming SIMD Extensions 3.
Generate code specialized for processor extensions speci-
fied by <codes> while also generating generic IA-32 code.
<codes> includes one or more of the following characters:
K -- Intel Pentium III processors and compatible Intel
processors
W -- Intel Pentium 4 processors and compatible Intel pro-
cessors
N -- Intel Pentium 4 processors and compatible Intel pro-
cessors. Enables new optimizations in addition to Intel
processor-specific optimizations.
B -- Intel Pentium M processors and compatible Intel pro-
cessors. Enables new optimizations in addition to Intel
processor-specific optimizations.
P -- Intel(R) Core(TM) Duo, Intel(R) Core Solo(TM), and
Intel(R) Pentium(R) 4 Processors with Streaming SIMD
Extensions 3 (SSE3) instruction support. Enables new
optimizations in addition to Intel processor-specific
optimizations.
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 program (DEFAULT =
-falias).
-fast The -fast option maximizes speed across the entire pro-
gram. It sets command options that can improve run-time
performance, as follows:
i32, i32em: The -fast option turns on -O3, -ipo, -static,
-no-prec-div, and -xP. IA-32 programs compiled with
-fast will execute only on Intel(R) Pentium(R) 4 proces-
sors with Streaming SIMD Extensions 3 (SSE3). Programs
compiled with this option will detect non-compatible
processors and generate an error message during execu-
tion.
i64: The -fast option turns on -O3, -ipo, and -static.
M*X32: The -fast option turns on -O3, -ipo, -mdy-
namic-no-pic, and -no-prec-div.
-fdata-sections
Separate functions for the linker (COMDAT). Same as
-ffunction-sections.
-f[no-]exceptions
The -f[no-]exceptions option turns off exception handling
table generation, resulting in smaller code. Any use of
exception handling constructs - try blocks, throw state-
ments will produce an error. Exception specifications are
parsed but ignored. A preprocessor symbol __EXCEPTIONS is
defined when this option is not used. It is undefined
when this option is present.
-f[no-]fnalias
Assume [do not assume, but assume aliasing across calls]
aliasing within functions (DEFAULT = -ffnalias).
-ffunction-sections
Separate functions for the linker (COMDAT). Same as
-fdata-sections.
-f[no-]inline
Enables [disables] inlining of functions declared with
the __inline keyword. Also enables inlining according to
the C++ language. Same as -Ob1.
-f[no-]inline-functions
Inline [do not inline] certain interprocedural optimiza-
tions for single file compilation. These optimizations
are a subset of full intra-file interprocedural optimiza-
tions. Enables [does not enable] the compiler to perform
inline function expansion for calls to functions defined
within the current source file
-finline-limit=<n>
Lets you specify the maximum size of a function to be
inlined.
-fno-builtin-<func>
Disable the <func> intrinsic.
-f[no-]omit-frame-pointer (i32, i32em only)
The negative version is the same as -fp.
-fp (i32, i32em only)
Disable using EBP as general purpose register.
-[no-]fp-port (i32, i32em only)
Round floating-point results at assignments and casts
(some speed impact).
-fpstkchk (i32, i32em only)
Generate extra code after every function call to assure
that the FP stack is in the expected state. Generally,
when the FP stack overflows, a NaN value is put into FP
calculations, and the program's results differ. Unfortu-
nately, the overflow point can be far away from the point
of the actual bug. The -fpstkchk option places code that
would access violate immediately after an incorrect call
occurred, thus making it easier to locate these issues.
-march=<cpu> (i32, i32em only)
Generate code exclusively for a given cpu, where <cpu> 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=<cpu>
Optimize for a specific cpu, where <cpu> is one of the
following:
pentium -- (i32 only) Optimize for Intel Pentium proces-
sor.
pentiumpro -- (i32 only) Optimize for Intel Pentium Pro,
Intel Pentium II and Intel Pentium III processors.
pentium4 -- (i32 only; DEFAULT on IA-32) Optimize for
Intel Pentium 4 processors.
itanium -- (i64 only) Optimize for Intel Itanium proces-
sor
itanium2 -- (i64 only) Optimize for Intel Itanium 2 pro-
cessor.
itanium2-9000 -- (i64, L*X only) Optimize for Dual-Core
Intel(R) Itanium(R) 2 Processor 9000 Sequence processors.
-m[no-]ieee-fp
Same as -mp.
-mp Maintain floating-point precision (disables some opti-
mizations). The -mp option restricts optimization to
maintain declared precision and to ensure that float-
ing-point arithmetic conforms more closely to the ANSI
and IEEE standards. For most programs, specifying this
option adversely affects performance. If you are not sure
whether your application needs this option, try compiling
and running your program both with and without it to
evaluate the effects on both performance and precision.
-mp1 Improve floating-point precision. -mp1 disables fewer
optimizations and has less impact on performance than
-mp.
-msse (i32 only)
Generate code for Intel Pentium III and compatible Intel
processors.
-msse2 (i32 only)
Generate code for Intel Pentium 4 and compatible Intel
processors.
-msse3 (i32, i32em only)
Generate code for Intel Pentium 4 processors with SSE3
extensions.
-mtune=<cpu>
Optimize for a specific cpu, where <cpu> is one of the
following:
pentium -- (i32 only) Optimize for Intel Pentium proces-
sor.
pentiumpro -- (i32 only) Optimize for Intel Pentium Pro,
Intel Pentium II and Intel Pentium III processors.
pentium4 -- (i32 only; DEFAULT on IA-32) Optimize for
Intel Pentium 4 processors.
itanium -- (i64 only) Optimize for Intel Itanium proces-
sor
itanium2 -- (i64 only) Optimize for Intel Itanium 2 pro-
cessor.
itanium2-9000 -- (i64, L*X only) Optimize for Dual-Core
Intel(R) Itanium(R) 2 Processor 9000 Sequence processors.
-O0 Disable optimizations.
-O Same as -O2
-O1 Optimize to favor code size and code locality. Disables
loop unrolling. -O1 may improve performance for applica-
tions with very large code size, many branches, and exe-
cution 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 schedul-
ing.
-O2 (DEFAULT)
Optimize for code speed. This is the generally recom-
mended optimization level.
i64: Turn software pipelining ON.
-O3 Enable -O2 optimizations and in addition, enable more
aggressive optimizations such as loop and memory access
transformation, and prefetching. The -O3 option opti-
mizes for maximum speed, but may not improve performance
for some programs. The -O3 optimizations may slow down
code in some cases compared to -O2 optimizations. Recom-
mended 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<n> Control inline expansion, where <n> is one of the follow-
ing values:
0 -- Disables inlining.
1 -- (DEFAULT) Enables inlining of functions declared
with the __inline keyword. Also enables inlining accord-
ing to the C++ language.
2 -- Inlines any function, at the compiler's discretion.
Enables interprocedural optimizations and has the same
effect as -ip.
-Os Enable speed optimizations, but disable some optimiza-
tions that increase code size for small speed benefit.
-pc<n> (i32, i32em only)
Enable floating-point significand precision control. Some
floating-point algorithms are sensitive to the accuracy
of the significand, or fractional part of the 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<n> option. Set <n>
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 exam-
ple, 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 floating-point division computations into multi-
plication by the reciprocal of the denominator. For exam-
ple, A/B is computed as A x (1/B) to improve the speed of
the computation. However, for values of B greater than
2126, the value of 1/B is "flushed" (changed) to 0. When
it is important to maintain the value of 1/B, use
-no-prec-div to disable the floating-point divi-
sion-to-multiplication optimization. The result of
-no-prec-div is more accurate, with some loss of perfor-
mance.
-[no-]prec-sqrt (i32, i32em only)
Determine if certain square root optimizations are
enabled.
-rcd (i32, i32em only)
Enable fast float-to-int conversions. The Intel compiler
uses the -rcd option to improve the performance of code
that requires floating-point-to-integer conversions. The
system default floating point rounding mode is
round-to-nearest. However, the C language requires float-
ing point values to be truncated when a conversion to an
integer is involved. To do this, the compiler must change
the rounding mode to truncation before each float-
ing-point-to-integer conversion and change it back after-
wards. The -rcd option disables the change to truncation
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 seman-
tics.
-x<codes> (i32, i32em only) (not on M*X32)
Generates code for Intel(R) Core(TM) Duo processors,
Intel(R) Core(TM) Solo processors, Intel(R) Pentium(R) 4
processors with Streaming SIMD Extensions 3, and compati-
ble Intel processors with Streaming SIMD Extensions 3.
Generate specialized code to run exclusively on proces-
sors supporting the extensions indicated by <codes>.
<codes> includes one or more of the following characters:
K -- Intel Pentium III processors and compatible Intel
processors
W -- Intel Pentium 4 processors and compatible Intel pro-
cessors. Default for Intel(R) EM64T-based systems.
N -- Intel Pentium 4 processors and compatible Intel pro-
cessors with Streaming SIMD Extensions 2 (SSE2) instruc-
tion support. Enables new optimizations in addition to
Intel processor-specific optimizations.
B -- Intel Pentium M processors and compatible Intel pro-
cessors. Enables new optimizations in addition to Intel
processor-specific optimizations.
P -- Intel(R) Core(TM) Duo, Intel(R) Core Solo(TM), and
Intel(R) Pentium(R) 4 Processors with Streaming SIMD
Extensions 3 (SSE3) instruction support. Enables new
optimizations in addition to Intel processor-specific
optimizations including advanced data layout and code
restructuring optimizations to improve memory accesses
for Intel processors. 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 proces-
sor-specific optimizations including advanced data layout
and code restructuring optimizations to improve memory
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 highest-performing processor
specified. For example, if you specify -xKW, only spe-
cialized code for the Intel Pentium 4 processor is gener-
ated. The highest-performing to lowest-performing pro-
cessor 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 processor. For more information, see the
Intel C++ Compiler User's Guide.
Advanced Performance Options
The advanced performance options allow fine tuning of compila-
tion or allow control over advanced features of the compiler.
-[no-]alias-args
Assume [do not assume] arguments may be aliased. (DEFAULT
= -no-alias-args).
-[no-]ansi-alias
The -[no-]ansi-alias option directs the compiler to
assume that the program adheres to the rules defined in
the ISO C Standard. If your program adheres to these
rules, then this option will allow the compiler to opti-
mize more aggressively. If it doesn't adhere to these
rules, then it can cause the compiler to generate incor-
rect code.
-auto-ilp32 (i32em, i64 only) (not on M*X32)
Instructs the compiler to analyze and transform the pro-
gram so that 64-bit pointers are shrunk to 32-bit point-
ers, 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 exe-
cutable 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 restrictions, 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 performance formula-
tions of complex arithmetic operations, which may not
produce acceptable results for input values near the top
or bottom of the legal range. Without this option, the
compiler uses a better formulation of complex arithmetic
operations, thus producing acceptable results for the
full range of input values, though at some loss in per-
formance.
-[no-]clomp-sharable-info (i32em, i64 only)
Reports variables that the compiler automatically makes
sharable for Cluster OpenMP*.
-[no-]clomp-sharable-propagation (i32em, i64 only)
Reports variables that need to be made sharable by the
user with Cluster OpenMP*.
-[no-]cluster-openmp (i32em, i64 only)
Compiles an OpenMP* program for execution on a cluster.
-[no-]cluster-openmp-profile (i32em, i64 only)
Compiles an OpenMP* program for execution on a cluster,
and links with a performance statistics library.
-fargument-[no-]alias
Same as -[no-]alias-args.
-fargument-noalias-global
Arguments do not alias each other and do not alias global
storage.
-[no-]fnsplit (i64 only)
Enable[disable] function splitting. Function splitting is
enabled by -prof-use in Phase 3 to improve code locality
by splitting routines into different sections: one sec-
tion to contain the cold or very infrequently executed
code, and one section to contain the rest of the code
(hot code).
You can use -[no-]fnsplit to disable function splitting
for the following reasons:
· Most importantly, to get improved debugging capabil-
ity. In the debug symbol table, it is difficult to
represent a split routine, that is, a routine with
some of its code in the hot code section and some of
its code in the cold code section.
· The -no-fnsplit option disables the splitting within
a routine but enables function grouping, an opti-
mization in which entire routines are placed either
in the cold code section or the hot code section.
Function grouping does not degrade debugging capa-
bility.
· When the profile data does not represent the actual
program behavior, that is, when the routine is actu-
ally used frequently rather than infrequently.
-fp-model <name>
Enable <name> floating point model variation.
-ftls-model=<model>
Change thread-local storage model, where <model> 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=<n> Specifies the percentage multi-
plier that should be applied to all inlining options that
define upper limits. The value <n> 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 when-
ever the compiler can do so. (Default OFF)
-[no-]inline-max-per-compile=<n>
Specifies the maximum number of times inlining may be
applied to an entire compilation unit. The value <n> is
a positive integer that specifies the number of times
inlining may be applied. (Default OFF)
-[no-]inline-max-per-routine=<n>
Specifies the maximum number of times the inliner may
inline into a particular routine. The value <n> 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=<n>
Specifies the lower limit for the size of what the
inliner considers to be a large routine. The value <n>
is a positive integer that specifies the minimum size of
what the inliner considers to be a large routine.
(Default OFF)
-[no-]inline-max-total-size=<n>
Specifies how much larger a routine can normally grow
when inline expansion is performed. The value <n> is a
positive integer that specifies the permitted increase in
the routine's size when inline expansion is performed.
(Default OFF)
-[no-]inline-min-size=<n>
Specifies the upper limit for the size of what the
inliner considers to be a small routine. The value <n>
is a positive integer that specifies the maximum size of
what the inliner considers to be a small routine.
(Default OFF)
-ip Enable additional interprocedural optimizations for sin-
gle 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 optimizations that reduce floating-point accuracy.
You may use -IPF-fltacc or -mp to improve floating-point
accuracy, but at the cost of disabling some optimiza-
tions.
-[no-]IPF-fma (i64 only)
Enable [disable] the combining of floating point multi-
plies and add/subtract operations. -IPF-fma[-] enables
[disables] the contraction of floating-point multiply and
add/subtract operations into a single operation. Unless
-mp is specified, the compiler contracts these operations
whenever possible. 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)
Enable [disable] use of faster but slightly less accurate
code sequences for math functions, such as divide and
square root.
-IPF-fp-speculation{fast|safe|strict|off} (i64 only)
Enable floating point speculations with the following
conditions:
fast -- Speculate floating point operations
safe -- Speculate only when safe
strict -- Same as off
off -- Disables speculation of floating-point operations
-ip-no-inlining
Disable inlining that would result from the -ip interpro-
cedural optimization, but has no effect on other inter-
procedural optimizations.
-ip-no-pinlining (i32, i32em only)
Disable partial inlining (requires -ip or -ipo)
-ipo[value]
Enables multifile IP optimizations (between files). When
you specify this option, the compiler performs inline
function expansion for calls to functions defined in sep-
arate files.
The [value] argument is an optional integer that speci-
fies the number of object files the compiler should cre-
ate. 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 generates [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 speci-
fied. This technique is useful for some sparse matrix
applications.
-mno-serialize-volatile (i64 only)
Memory access ordering for volatile data object refer-
ences may be suppressed.
-mserialize-volatile (i64 only)
Enable strict memory access ordering for volatile data
object references.
-openmp
Enable the parallelizer to generate multi-threaded code
based on the OpenMP* directives. The code can be executed
in parallel on both uniprocessor and multiprocessor sys-
tems. The -openmp option works with both -O0 (no opti-
mization) and any optimization 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[<n>]
Control the OpenMP parallelizer's level of diagnostic
messages, where <n> is one of the following:
0 -- no diagnostic information is displayed.
1 -- Display diagnostics indicating loops, regions, and
sections successfully parallelized. (DEFAULT)
2 -- same as -openmp-report1 plus diagnostics indicating
MASTER constructs, SINGLE constructs, CRITICAL con-
structs, ORDERED constructs, ATOMIC directives, etc. suc-
cessfully 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<n> (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 optimiza-
tions that might consume more bandwidth, so that the
bandwidth can be well-shared among multiple processors
for a parallel program. For values of <n> greater than
0, the option tells the compiler to enable a set of per-
formance tuning and heuristics in compiler optimizations
such as prefetching, privatization, aggressive code
motion, and so forth, for reducing memory bandwidth pres-
sure and balancing memory bandwidth traffic among
threads. The <n> value is the level of optimizing for
memory bandwidth usage. You can specify one of the fol-
lowing values for <n>:
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 gener-
ated by the compiler. This is the default if compiler
option -parallel or -openmp is specified, or Cluster
OpenMP option -cluster-openmp is specified (see the Clus-
ter OpenMP documentation).
2 -- Enables a set of performance tuning and heuristics
in compiler optimizations for parallel code such as Win-
dows 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<file>
Specify the filename for the generated report
-opt-report-help
List the logical names of optimizers available for report
generation.
-opt-report-level[<level>]
Specify the level of report verbosity, where <level> is
one of the following:
min -- The min argument provides the minimal summary
(DEFAULT)
med -- The med argument produces an intermediate-level
report.
max -- The max argument produces the full report.
-opt-report-phase<name>
Specify the optimizer phase against which reports are
generated. The compiler generates reports for the opti-
mizer you specify in the <name>. This option can be used
multiple times on the same command line to generate
reports for multiple optimizers. Currently, the following
optimizer reports are supported:
ipo -- Interprocedural Optimizer
hlo -- High Level Optimizer
ilo -- Intermediate Language Scalar Optimizer
ecg -- Code Generator
omp -- OpenMP
all -- All phases
When one of the above logical names for optimizers is
specified for <name>, all reports from that optimizer are
generated.
-opt-report-routine<substring>
Generate reports from all routines with names containing
<substring> as part of their name. If <substring> 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[<n>]
Control the level of auto-parallelizer diagnostic mes-
sages, where <n> is one of the following:
0 -- no diagnostic information is displayed.
1 -- indicates loops successfully auto-parallelized
(DEFAULT). Issues a "LOOP AUTO-PARALLELIZED" message for
parallel loops.
2 -- indicates successfully auto-parallelized loops as
well as unsuccessful loops.
3 -- same as 2 plus additional information about any
proven or assumed dependencies inhibiting auto-paral-
lelization (reasons for not parallelizing).
-par-threshold[<n>]
Set a threshold for the auto-parallelization of loops
based on the probability of profitable execution of the
loop in parallel. This option is used for loops whose
computation work volume cannot be determined at com-
pile-time. The threshold is usually relevant when the
loop trip count is unknown at compile-time.
<n>=0-100. (DEFAULT: <n>=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 <dir>
Specify directory <dir> for profiling output files (*.dyn
and *.dpi). Use the -prof-dir option with prof-gen as
recommended for most programs, especially if the applica-
tion includes the source files located in multiple direc-
tories. -prof-dir ensures that the profile information is
generated in one consistent place.
-prof-file <file>
Specify file name <file> for profiling summary file
-prof-gen[x]
Instruct the compiler to produce instrumented code in
your object files in preparation for instrumented execu-
tion. With the x qualifier, extra information is gath-
ered. This option is used in Phase 1 of PGO to instruct
the compiler to produce instrumented code in your object
files in preparation for instrumented execution. Parallel
make is automatically supported for -prof-genx compila-
tions.
-prof-gen-sampling
Prepare code for use with the profrun sample gathering
tool.
-prof-use
Instruct the compiler to produce a profile-optimized exe-
cutable and merge available 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-computation.
-tcheck
The -tcheck compiler option enables analysis of threaded
applications with Intel(R) Thread Checker, which is
required to use this option.
-unroll<n> (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[<n>] (i32, i32em only)
Control the vectorizer's level of diagnostic messages,
where <n> 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 pro-
hibiting data dependence information
4 -- Indicate non-vectorized loops
5 -- Indicate non-vectorized loops and prohibiting data
dependence information
If you use -c, -ipo with -vec-report{n} option or -c,
-x{K|W|N|B|P|T} or -ax{K|W|N|B|P|T} with
-vec-report[<n>], 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 <filename>
Manual creation of precompiled header <filename>. Use the
-create-pch <filename> option if you want the compiler to
create a PCH file called <filename>. The filename param-
eter must be specified. The filename parameter 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 compila-
tion as -use-pch filename. The -create-pch filename
option is supported for single source file compilations
only.
-[no-]debug[keyword]
Enable debug information and control output of enhanced
debug information. The supported [keywords] are
extended, [no]variable-locations, [no]semantic-stepping,
[no-]expr-source-pos, and [no]inline_debug_info}. The
debug switches control emission of enhanced debug infor-
mation. They must be used in conjunction with the basic
-g switches that request debug information.
extended -- Turns on the -debug options;
· -debug [no-]expr-source-pos,
· -debug [no]variable-locations,
· -debug [no]semantic-stepping, and
· -debug [no]inline_debug_info.
[no-]expr-source-pos -- Determines whether source posi-
tion information at the expression level of granularity
is produced.
[no]variable-locations -- Determines whether enhanced
debug information useful in finding scalar local vari-
ables is produced.
[no]semantic-stepping -- Determines whether enhanced
debug information useful for breakpoints and stepping is
produced.
[no]inline_debug_info -- Determines whether enhanced
debug information is produced for inlined code.
-fcode-asm
Produce assembly file with optional code 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 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. The -g
option changes the default optimization from -O2 to -O0.
If you specify -g with -O1, -O2, or -O3, then -fp is dis-
abled 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 information.
-inline-debug-info
Preserve the source position of inlined code instead of
assigning the call-site source position to inlined code.
-map-opts (not on M*X32)
Enable option mapping tool.
-o<file>
This option specifies the name of an output file as fol-
lows:
· If the -c option is specified, it specifies the name
of the generated object file.
· If the -S option is specified, it specifies the name
of the generated assembly listing file.
· If the -P option is specified, it specifies the name
of the generated preprocessor file.
Otherwise, it specifies the name of the executable file.
-pch Automatic processing for precompiled headers. Direct the
compiler to use appropriate PCH files. If none are
available, they are created as sourcefile.pchi. This
option supports multiple source files.
Note: The -pch option uses PCH files created from other
sources if the headers files are the same. For example,
if you compile source1.cpp using -pch, then source1.pchi
is created. If you then compile source2.cpp using -pch,
the compiler will use source1.pchi if it detects the same
headers.
-pch-dir <dirname>
Directs the compiler to find and/or create a file for
pre-compiled headers in dirname. Use the -pch-dir
<dirname> option to specify the path (dirname) to the PCH
file. You can use this option with -pch, -create-pch
filename, and -use-pch filename.
-print-multi-lib
Print information about libraries being used.
-S Compile to an assemblable file (.s), then stop the compi-
lation.
-use-asm
Produce objects through the assembler.
Note: GNU inline assembler (asm) code and Microsoft
inline assembler (msasm) code cannot be used together in
the same translation unit.
-use-msasm (i32, i32em only)
Support Microsoft* style assembly language insertion
using MASM style syntax and, if requested, output assem-
bly in MASM format.
Note: GNU inline assembler (asm) code and Microsoft
inline assembler (msasm) code cannot be used together in
the same translation unit.
-use-pch <filename>
Manual use of precompiled header (filename.pchi). This
option directs the compiler to use the PCH file specified
by filename. It cannot be used in the same compilation as
-create-pch <filename>. The -use-pch <filename> option
supports full path names and supports multiple source
files when all source files use the same .pchi file.
Preprocessor Options
The preprocessor options listed here control preprocessing oper-
ations for the compiler.
-A- Remove all predefined macros. Causes all predefined
macros and assertions to be inactive.
-A<name>[<value(s)>]
Associate a symbol <name> with the specified sequence of
<value(s)>. Equivalent to an #assert preprocessing direc-
tive.
-C Preserve comments in preprocessed source output. Comments
following preprocessing directives are not preserved.
-D<name>[=<value>]
Define the macro <name> and associate it with the speci-
fied <value>. Equivalent to a #define preprocessing
directive.
DEFAULT: -D<name> defines the macro <name> with a <value>
of 1.
-dD Same as -dM, but outputs #define directives in prepro-
cessed source.
-dM Output macro definitions in effect after preprocessing
(use with -E).
-dN Same as -dD, but #define directives contain only macro
names.
-E Direct the preprocessor to expand your source module and
write the result to standard output. The preprocessed
source contains #line directives, which the compiler uses
to determine the source file and line number.
-EP Direct the preprocessor to expand your source module and
write the result to standard output. Does not include
#line directives in the output. -EP is equivalent to -E
-P.
-H Print "include" file order and continue compilation.
-I<dir>
Add directory <dir> to include file search path. For mul-
tiple search directories, multiple I<dir> 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<dir>
Add directory <dir> to the second include file search
path (after -I).
-imacros<file>
Treat <file> as an #include file, but throw away all pre-
processing while the macros that are defined remain
defined.
-iprefix<prefix>
Use <prefix> with -iwithprefix as a prefix.
-iquote<dir>
Add <dir> to the front of the include file search path
for files included with quotes but not brackets.
(DEFAULT = OFF)
-isystem<dir>
Add directory <dir> to the start of the system include
path.
-iwithprefix<dir>
Append <dir> to the prefix passed in by -iprefix and put
it on the include search path at the end of the include
directories.
-iwithprefixbefore<dir>
Similar to -iwithprefix except the include directory is
placed in the same place as the -I command line include
directories.
-M Generate makefile dependency lines for each source file,
based on the #include lines found in the source file.
-MD Preprocess and compile. Generate output file (.d exten-
sion) containing dependency information.
-MF<file>
Generate makefile dependency information in <file>. Must
specify -M or -MM.
-MG Similar to -M, but treats missing header files as gener-
ated files.
-MM Similar to -M, but does not include system header files.
-MMD Similar to -MD, but does not include system header files.
-MP Add a phony target for each dependency.
-MQ<target>
Same as -MT, but quotes special Make characters.
-MT<target>
Change the default target rule for dependency 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 extension are overwritten.
-U<name>
Remove predefined macro. Equivalent to a #undef prepro-
cessing directive.
-X Remove standard directories from include file search
path. You can use the -X option with the -I option to
prevent the compiler from searching the default path for
include files and direct it to use an alternate path.
Component Control Options
You can direct the compiler to specify alternate tools for pre-
processing, compilation, assembly, and linking. Further, you can
invoke options specific to your alternate tools on the command
line. These are the component control options.
-Qinstall <dir>
Set <dir> as the root of the compiler installation.
-Qlocation,<tool>,<path>
Set <path> as the location of the tool specified by
<tool>. <tool> may be cpp, c, asm, or ld. <path> is the
complete path to the tool. For example:
-Qlocation,gas,<path> Specifies the GNU assembler.
-Qlocation,gld,<path> Specifies the GNU linker.
-Qoption,<tool>,<optlist>
Pass options <optlist> to the tool specified by <tool>.
<tool> may be cpp, c, asm, or ld. The <optlist> argument
indicates one or more valid argument strings for the des-
ignated program. If the argument is a command-line
option, you must include the hyphen. If the argument con-
tains a space or tab character, you must enclose the
entire argument in quotation characters (""). You must
separate multiple arguments with commas.
Language Options
The language options define parameters and standards for the
compiler with reference to the C/C++ source files.
-[no]align (i32, i32em only)
Analyze and reorder memory layout for variables and
arrays.
-ansi Support all ANSI standard C programs, equivalent to the
-ansi option of gcc.
-[no-]c99
Enable [disable] C99 support for C programs.
-export
Enable recognition of exported templates. Supported in
C++ mode only.
-export-dir <dir>
Specifies a directory name for the exported template
search path.
-fno-gnu-keywords
Do not recognize 'typeof' as a keyword.
-fno-implicit-inline-templates
Do not emit code for implicit instantiations of inline
templates.
-fno-implicit-templates
Never emit code for non-inline templates which are
instantiated implicitly (i.e. by use); only emit code for
explicit instantiations.
-f[no-]non-lvalue-assign
Allow [disallow] casts and conditional expressions to be
used as lvalues. (DEFAULT = allow)
-fno-operator-names
Disable support for operator name keywords.
-fpermissive
Allow for non-conformant code.
-f[no-]rtti
Enable [disable] RTTI support.
-fshort-enums
Allocate as many bytes as needed for enumerated types.
-fsyntax-only
Same as -syntax.
-ftemplate-depth-<n>
Control the depth to which recursive templates are
expanded.
-funsigned-bitfields
Change default bitfield type to unsigned.
-funsigned-char
Change default char type to unsigned.
-Kc++ Compile all source or unrecognized file types as C++
source files.
-malign-double (i32, i32em only)
Same as -align.
-[no]restrict
Enable [disable] the "restrict" keyword for disambiguat-
ing pointers.
-std=c99
Enable C99 support for C programs
-strict-ansi
Select strict ANSI C/C++ conformance dialect
-Zp[n] Specify alignment constraint for structure and union
types, where n is one of the following: 1,2,4,8,16.
Compiler Diagnostics Options
The compiler diagnostics options define and control aspects of
the compilation associated with diagnostics.
-[no]traceback
Tells the compiler to generate [not generate] extra
information in the object file to allow the display of
source file traceback information at run time when a
severe error occurs. This is intended for use with C
code that is to be linked into a Fortran program.
-w Disable all warnings. Displays error messages only.
-w<n> Control diagnostics, where <n> is one of the following:
0 -- Display errors (same as -w)
1 -- Display warnings and errors (DEFAULT)
2 -- Display remarks, warnings, and errors
-W[no-]abi
Warn [do not warn] if generated code is not C++ ABI com-
pliant (Default = -Wno-abi).
-Wall Enable all warnings.
-Wbrief
Print brief one-line diagnostics. When enabled, the orig-
inal 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 behav-
ior, represents a possible unintended code sequence, or
possibly affects operation of the program because of a
quiet change in the ANSI C Standard.
-W[no-]comment[s]
Warn when /* appears in the middle of a /* */ comment.
-Wcontext-limit=<n>
Set maximum number of template instantiation contexts
shown in diagnostic.
-wd<L1>[,<L2>,...<LN>]
Disable diagnostics L1 through LN.
-W[no-]deprecated
Print warnings related to deprecated features.
-we<L1>[,<L2>,...<LN>]
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<n> Print a maximum of <n> errors displayed before the com-
piler aborts. By default, if more than 100 errors are
displayed, compilation aborts. Remarks and warnings do
not count towards this limit.
-Wp64 Print diagnostics for 64-bit porting.
-W[no-]pointer-arith
Warn for questionable pointer arithmetic.
-wr<L1>[,<L2>,...<LN>]
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 previous variable
declaration.
-W[no-]uninitialized
Warn if a variable is used before being initialized.
-W[no-]unknown-pragmas
Warn if an unknown #pragma directive is used (DEFAULT).
-W[no-]unused-function
Warn if declared function is not used.
-ww<L1>[,<L2>,...<LN>]
Change severity of diagnostics L1 through LN to warning.
Miscellaneous Options
The miscellaneous options cover a variety of unrelated tasks
related to the compiler.
-B<dir>
Specifies the directory (dir) that can be used to find
libraries, headers, and executables for the compiler
itself.
-dryrun
Show driver tool commands but do not execute tools.
-dumpversion (not on M*X32)
Return the version number of the compiler.
-fabi-version=<value>
Instructs the compiler to select a specific ABI implemen-
tation, where <value> 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 variables as if they
were defined, allowing the use of gprel addressing of
common data variables.
-f[no-]math-errno
Set ERRNO after calling standard math library functions.
-fminshared
Compilation is for the main executable. Absolute address-
ing can be used and non-position independent code gener-
ated for symbols that are at least protected.
-fno-builtin
Disable inline expansion of intrinsic functions.
-fno-builtin-<func>
Disable the <func> intrinsic.
-fpack-struct
Pack structure members together.
-f[no-]pic, -f[no-]PIC
i32: This option generates position independent code. By
default this option is OFF.
i64: This option generates code allowing full symbol pre-
emption. By default this option is OFF.
-fr32 (i64 only)
Disable use of high floating point registers. Use only
lower 32 floating-point registers.
-freg-struct-return
Return struct and union values in registers when possi-
ble.
-fstack-security-check (i32, i32em only)
Enable overflow security checks.
-fvisibility=[extern|default|protected|hidden|internal]
Global symbols (data and functions) will get the visibil-
ity attribute given by default. Symbol visibility
attributes explicitly set in the source code or using the
symbol visibility attribute file options will override
the -fvisibility setting.
-fvisibility-default=<file>
Space separated symbols listed in the <file> argument
will get visibility set to default.
-fvisibility-extern=<file>
Space separated symbols listed in the <file> argument
will get visibility set to extern.
-fvisibility-hidden=<file>
Space separated symbols listed in the <file> 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=<file> (not on M*X32)
Space separated symbols listed in the <file> argument
will get visibility set to internal.
-fvisibility-protected=<file> (not on M*X32)
Space separated symbols listed in the <file> argument
will get visibility set to protected.
-[no-]gcc-extern-inline
The -gcc-extern-inline flag, by default, lays down a body
for a function declared to be extern inline. The gcc com-
piler, 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 defi-
nition in the compilation unit.
No body is created unless the function cannot be inlined
for some reason (for example, its address might be
taken). The body laid down for a function because of
this flag will always be weak so a non-weak definition
elsewhere in the compilation will be used instead. If
you want the C99 behavior rather than the now default
(more) gcc like behavior, use the -no-gcc-extern-inline
flag. This flag is on (i.e. -gcc-extern-inline) by
default.
-gcc-name=<dir>
Use this option to specify the location of g++ when com-
piler cannot locate gcc C++ libraries. For use with
-cxxlib-<mode> configuration. The <dir> argument is the
full path location of g++. Use this option when refer-
encing a non-standard gcc installation.
-gcc-version=<nnn>
This option provides compatible behavior with gcc, where
<nnn> indicates the gcc version. The required values for
<nnn> 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 <nnn> 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 gen-
eration of speculation as support may not be available
when code runs. Suppresses software pipelining.
-long_double (i32, i32em only)
Enable 80-bit 'long double'. The -long_double option is
ON by default (80-bit) for L*X and M*X32.
-mfixed-range=<range> (i64 only)
Reserves certain registers (<range>=f12-f15, f32-f127)
for use by the kernel.
-[no-]multibyte-chars
Provide support for multi-byte characters.
-nobss-init
Place variables that are initialized with zeroes in the
DATA section instead of the BSS section.
-reserve-kernel-regs (i64 only)
Reserves registers f12-f15 and f32-f127 for use by the
kernel. These will not be used by the compiler.
-[no-]sox
Enable (DEFAULT) [disable] saving of compiler options and
version in the executable.
-V Display compiler version information.
-v Show driver tool commands and execute tools.
--version
Display GCC style version information. Note that two
'-'s are required.
-x <type>
All source files found subsequent to -x <type> will be
recognized as one of the following types:
c -- C source file
c++ -- C++ source file
c-header -- C header file
cpp-output -- C pre-processed file
c++-cpp-output -- C++ pre-processed file
assembler -- Assembly file
assembler-with-cpp -- Assembly file that needs to be pre-
processed
none -- Disable recognition, and revert to file extension
Linking or Linker Options
The linking/linker options group all link-related options
together.
-cxxlib-<mode>
Tells the compiler to link using certain C++ runtime
libraries. You can specify one of the following values
for <mode>:
gcc[=<dir>] -- Link using the C++ run-time libraries pro-
vided with the gcc compiler. The <dir>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<filename>
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<dir> or -l<dir>
Instruct the linker to search for a specified library
<dir> when linking. Because the linker searches and pro-
cesses libraries and object files in the order they are
specified, specify this option following the last appli-
cable object file.
-mcmodel=<mem_model> (i32, L*X only)
Tells the compiler to use a specific memory model to gen-
erate code and store data. Default is -mcmodel=small.
-m[no-]relax (i64 only)
Pass [do not pass] -relax to the linker. (DEFAULT =
-mno-relax)
-no-cpprt
Do not link in C++ runtime libraries.
-nodefaultlibs
Do not use standard libraries when linking.
-nostartfiles
Do not use standard startup files when linking.
-nostdlib
Do not use standard libraries and startup files when
linking.
-shared (not on M*X32)
Produce a shared object.
-shared-libcxa
Link Intel libcxa C++ library dynamically, overriding the
default behavior when -static is used. This option has
the opposite effect of -static-libcxa. When this option
is used, the Intel-provided libcxa C++ library is linked
in dynamically, allowing the user to override the static
linking behavior when the -static option is used.
-static (not on M*X32)
Prevent linking with shared libraries. Causes the exe-
cutable to link all libraries statically, as opposed to
dynamically.
-static-libcxa
Link Intel libcxa C++ library statically. By default, the
Intel-provided libcxa C++ library is linked in dynami-
cally. 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 <file>
Direct linker to read link commands from <file>.
-u <symbol>
Pretend the <symbol> is undefined.
-Wa<o1>[,<o2>,...]
-Wl,<o1>[,<o2>,...]
-Wl,<o1>[,<o2>,...]
Pass options o1, o2, etc. to the linker for processing.
-Xlinker <val> (i32, i32em only)
Pass <val> directly to the linker for processing.
Mac OS Options
The Mac OS options provide specific capabilities that apply only
to the Intel C++ compiler for the Mac OS. Most other i32 C++
compiler options (except those identified with a (not on M*X32)
notation) also apply to the Mac OS.
-F<dir> (M*X32 only)
Add a framework directory to the head of an include file
search path.
-fpascal-strings (M*X32 only)
Allow for Pascal-style string literals.
-malign-mac68k (M*X32 only)
Aligns structure fields on 2-byte boundaries (m68k com-
patible).
-malign-natural (M*X32 only)
Aligns larger types on natural size-based boundaries
(overrides ABI).
-malign-power (M*X32 only)
Aligns based on ABI-specified alignment rules (default
for M*X32 only).
-mdynamic-no-pic (M*X32 only)
Code is not relocatable, but external references are
relocatable.
Optimization Levels
The Intel C++ Compiler applies the following optimizations when
you invoke the -O1, -O2, or -O3 options:
· Constant propagation
· Copy propagation
· Dead-code elimination
· Global register allocation
· Instruction scheduling
· Loop unrolling (-O2, -O3 only)
· Loop-invariant code movement
· Partial redundancy elimination
· Strength reduction/induction variable simplification
· Variable renaming
· Exception handling optimizations
· Tail recursions
· Peephole optimizations
· Structure assignment lowering and optimizations
· Dead store elimination
· Loop-invariant code motion.
Depending on the Intel architecture, optimization options can
have different effects. To specify optimizations for your target
architecture, refer to the -O[0|1|2|3], -fast, -ax<code>,
-x<code>, 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 spe-
cific Intel processor. The resulting code might contain uncon-
ditional use of features that are not supported on other proces-
sors. If these options are used on a non-compatible processor,
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 information, see
the Intel C++ Compiler User's Guide.
Note: The -x<codes> 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 gen-
erating a processor-specific version of a function is likely to
result in a performance gain. If so, the compiler generates both
a processor-specific version of a function and a generic version
of the function. The generic version will run on any IA-32 pro-
cessor.
At run time, one of the versions is chosen to execute, 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 con-
tains both a processor-specific version of some of the code
and a generic version of the code.
· Performance is affected by the run-time checks to determine
which code to run.
Interprocedural Optimizations (IPO)
Use -ip and -ipo[value] to enable interprocedural optimizations
(IPO), which allow the compiler to analyze your code to deter-
mine where to apply the following optimizations: inline function
expansion, interprocedural constant propagation, monitoring mod-
ule-level static variables, dead code elimination, propagation
of function characteristics, and multifile optimization. For
IA-32, IPO also passes arguments in registers.
Inline function expansion is one of the main optimizations per-
formed by the interprocedural optimizer. For function calls that
the compiler believes are frequently executed, the 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 infor-
mation on IPO.
Profile-guided Optimizations (PGO)
Profile-guided optimizations (PGO) tell the compiler which areas
of an application are most frequently executed. By knowing these
areas, the compiler 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 bet-
ter decisions about function inlining, thereby increasing the
effectiveness of interprocedural optimizations.
PGO creates an instrumented program from your source code and
special code from the compiler. Each time this instrumented code
is executed, the instrumented program generates a dynamic infor-
mation file. When you compile a second time, the dynamic infor-
mation 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 infor-
mation 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 applica-
tions developed in high-level programming languages, such as
C++. They include loop interchange, loop fusion, loop
unrolling, loop distribution, unroll-and-jam, blocking, data
prefetch, scalar replacement, data layout optimizations, and
others.
Vectorization Options (i32 only)
The vectorizer is a component of the Intel C++ Compiler that
automatically uses SIMD instructions in the MMX, SSE, and SSE2
instruction sets. The vectorizer detects operations in the pro-
gram that can be executed in parallel, and then converts the
sequential program to process 2, 4, 8, or 16 elements in one
operation, depending on the data type.
The -x{K|W|N|B|P|T} and -ax{K|W|N|B|P|T} options enable the vec-
torizer. See the Intel C++ Compiler User's Guide for more com-
plete information on the vectorizer.
Auto Parallelization Options
The auto-parallelization feature of the Intel C++ Compiler auto-
matically 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 efficiently exe-
cuted in parallel. This enables the potential exploitation of
the parallel architecture found in symmetric multiprocessor
(SMP) systems.
The parallel run-time support provides the same run-time fea-
tures found in OpenMP*, such as handling the details of loop
iteration modification, thread scheduling, and synchronization.
While OpenMP directives enable serial applications to transform
into parallel applications quickly, the programmer must explic-
itly identify specific portions of the application code that
contain parallelism and add the appropriate compiler directives.
Auto-parallelization triggered by the -parallel option automati-
cally identifies those loop structures that contain parallelism.
During compilation, the compiler automatically attempts to
decompose the code sequences into separate threads for parallel
processing. No other effort by the programmer is needed.
Parallelization with OpenMP*
The Intel C++ Compiler supports the OpenMP* C++ version 2.0 API
specification. The compiler performs transformations to generate
multithreaded code based on the user's placement of OpenMP
directives 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 specification including run-time
library routines and environment variables.
Note: As with many advanced features of compilers, you must
properly understand the functionality of the OpenMP directives
in order to use them effectively and avoid unwanted program
behavior.
The Cluster OpenMP* (CLOMP or Cluster OMP) options are 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 com-
piler 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 "deprecated." Dep-
recated 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 com-
piler:
-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 com-
piler:
-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 Architecture --
2 -- if gcc version is less than 3.2
3 -- if gcc version is 3.2, 3.3, or 3.4
4 -- if gcc version is 4.x
__GNUC_MINOR__
Values on IA-32, EM64T, or Itanium Architecture --
95 -- if gcc version is less than 3.2
2 -- if gcc version is 3.2
3 -- if gcc version is 3.3
4 -- if gcc version is 3.4
__GNUC_PATCHLEVEL__
Values on IA-32, EM64T, or Itanium Architecture --
3 -- if gcc version is 3.x
__gnu_linux__
Value on IA-32 -- 1
Value on EM64T -- 1
Value on Itanium Architecture -- 1
__GXX_ABI_VERSION
Value on IA-32 -- 102
Value on EM64T -- 102
Value on Itanium Architecture -- 102
__HONOR_STD
Value on IA-32 -- 1
Value on EM64T -- 1
Value on Itanium Architecture -- NA
__i386 Value on IA-32 -- 1
Value on EM64T -- NA
Value on Itanium Architecture -- NA
__i386__
Value on IA-32 or EM64T -- 1
Value on EM64T -- NA
Value on Itanium Architecture -- NA
i386 Value on IA-32 -- 1
Value on EM64T -- NA
Value on Itanium Architecture -- NA
__ia64 Value on IA-32 -- NA
Value on EM64T -- NA
Value on Itanium Architecture -- 1
__ia64__
Value on IA-32 -- NA
Value on EM64T -- NA
Value on Itanium Architecture -- 1
__ICC Value on IA-32 -- 910
Value on EM64T -- 910
Value on Itanium Architecture -- NA
Notes -- Assigned value refers to the compiler (e.g., 800
is 8.00). Supported for legacy reasons. Use __INTEL_COM-
PILER 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=<YYYYMMDD>
Notes -- Defines the compiler build date. This date
should correspond to the date on the compiler version
banner. Applies to IA-32, EM64T, and Itanium Architec-
ture.
__INTEL_CXXLIB_ICC
Notes -- Is defined (default) as 1 when the -cxxlib-icc
option is specified during compilation. Applies to both
IA-32 and Itanium Architecture, but not to EM64T.
__INTEL_RTTI__
Notes -- Is defined (default) when the -frtti option is
specified for the Intel Linux C++ compiler (i.e., when
RTTI support is enabled). It is disabled when the the
-fno-rtti option is specified for the Intel Linux C++
compiler. Applies to IA-32, EM64T, and Itanium Architec-
ture.
__INTEL_STRICT_ANSI__
Notes -- Is defined (default) as 1 when the -strict_ansi
option is specified for the Intel Linux C++ compiler
(i.e., strict ANSI conformance dialect). Applies to
IA-32, EM64T, and Itanium Architecture.
__itanium__
Value on IA-32 -- NA
Value on EM64T -- NA
Value on Itanium Architecture -- 1
__linux
Value on IA-32 -- 1
Value on EM64T -- 1
Value on Itanium Architecture -- 1
__linux__
Value on IA-32 -- 1
Value on EM64T -- 1
Value on Itanium Architecture -- 1
linux Value on IA-32 -- 1
Value on EM64T -- 1
Value on Itanium Architecture -- 1
__LONG_DOUBLE_SIZE__
Value on IA-32 -- 80
Value on EM64T -- 80
Value on Itanium Architecture -- 80
__LONG_MAX__
Value on IA-32 -- NA
Value on EM64T -- 9223372036854775807L
Value on Itanium Architecture -- 9223372036854775807L
__lp64 Value on IA-32 -- NA
Value on EM64T -- NA
Value on Itanium Architecture -- 1
__LP64__
Value on IA-32 -- NA
Value on EM64T -- 1
Value on Itanium Architecture -- 1
_LP64 Value on IA-32 -- NA
Value on EM64T -- 1
Value on Itanium Architecture -- 1
_MT Value on IA-32 -- NA
Value on EM64T -- 1
Value on Itanium Architecture -- NA
__MMX__
Value on IA-32 -- NA
Value on EM64T -- 1
Value on Itanium Architecture -- NA
__NO_INLINE__
Value on IA-32 -- 1
Value on EM64T -- 1
Value on Itanium Architecture -- 1
__NO_MATH_INLINES
Value on IA-32 -- 1
Value on EM64T -- 1
Value on Itanium Architecture -- 1
__NO_STRING_INLINES
Value on IA-32 -- 1
Value on EM64T -- 1
Value on Itanium Architecture -- 1
_OPENMP
Value on IA-32 -- 200203
Value on EM64T -- 200203
Value on Itanium Architecture -- 200203
Notes -- Defined when -openmp is used.
__OPTIMIZE__
Value on IA-32 -- 1
Value on EM64T -- 1
Value on Itanium Architecture -- 1
Notes -- Not enabled if all optimizations are turned off.
__pentium4
Value on IA-32 -- NA
Value on EM64T -- 1
Value on Itanium Architecture -- NA
__pentium4__
Value on IA-32 -- NA
Value on EM64T -- 1
Value on Itanium Architecture -- NA
__PIC__
Value on IA-32 -- 1
Value on EM64T -- 1
Value on Itanium Architecture -- 1
Notes -- Defined when -fPIC is used.
__pic__
Value on IA-32 -- 1
Value on EM64T -- 1
Value on Itanium Architecture -- 1
Notes -- Defined when -fPIC is used.
_PGO_INSTRUMENT
Value on IA-32 -- 1
Value on EM64T -- 1
Value on Itanium Architecture -- 1
Notes -- Defined when compiled with either
-prof_gen or -prof_genx.
_PLACEMENT_DELETE
Value on IA-32 -- 1
Value on EM64T -- 1
Value on Itanium Architecture -- 1
__PTRDIFF_TYPE__
Value on IA-32 -- int
Value on EM64T -- long
Value on Itanium Architecture -- long
__REGISTER_PREFIX__
Value on IA-32 -- no value
Value on EM64T -- no value
Value on Itanium Architecture -- no value
__SIGNED_CHARS__
Value on IA-32 -- 1
Value on EM64T -- 1
Value on Itanium Architecture -- 1
__SIZE_TYPE__
Value on IA-32 -- unsigned
Value on EM64T -- unsigned long
Value on Itanium Architecture -- unsigned long
__SSE__
Value on IA-32 -- NA
Value on EM64T -- 1
Value on Itanium Architecture -- NA
__SSE2__
Value on IA-32 -- NA
Value on EM64T -- 1
Value on Itanium Architecture -- NA
__unix Value on IA-32 -- 1
Value on EM64T -- 1
Value on Itanium Architecture -- 1
__unix__
Value on IA-32 -- 1
Value on EM64T -- 1
Value on Itanium Architecture -- 1
unix Value on IA-32 -- 1
Value on EM64T -- 1
Value on Itanium Architecture -- 1
__USER_LABEL_PREFIX__
Value on IA-32 -- (no value)
Value on EM64T -- (no value)
Value on Itanium Architecture -- (no value)
__WCHAR_T
Value on IA-32 -- 1
Value on EM64T -- 1
Value on Itanium Architecture -- 1
__WCHAR_TYPE__
Value on IA-32 -- long int
Value on EM64T -- int
Value on Itanium Architecture -- int
__WINT_TYPE__
Value on IA-32 -- unsigned int
Value on EM64T -- unsigned int
Value on Itanium Architecture -- unsigned int
__x86_64
Value on IA-32 -- NA
Value on EM64T -- 1
Value on Itanium Architecture -- NA
__x86_64__
Value on IA-32 -- NA
Value on EM64T -- 1
Value on Itanium Architecture -- NA
ANSI/ISO Macros Included with the Compiler
The ANSI/ISO standard for C language requires that cer-
tain predefined macros be supplied with conforming com-
pilers. The Intel C++ Compiler supplies the following
macros in accordance with this standard, as well as addi-
tional predefined macros:
__DATE__
The date of compilation as a string literal in the
form Mmm dd yyyy.
__FILE__
A string literal representing the name of the file
being compiled.
__LINE__
The current line number as a decimal constant.
__STDC__
The name __STDC__ is defined when compiling a C
translation unit.
__STDC_HOSTED__
The __STDC_HOSTED__ macro has a value of 1.
__TIME__
The time of compilation. As a string literal in
the form hh:mm:ss.
gcc Predefined Macros
The Intel C++ Compiler includes the following predefined
interoperability macros also 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 specified name. The -U option
performs the same function as an #undef preprocessor
directive.
ENVIRONMENT VARIABLES
You can customize your environment by setting the follow-
ing environment variables. You can specify paths where
the compiler can search for special files such as
libraries and include files.
DYLD_LIBRARY_PATH (M*X32 only)
Specifies the location for all Intel-provided
shared dynamic libraries. At runtime, the linker
will search the colon-separated list of directo-
ries defined by the DYLD_LIBRARY_PATH environment
variable. A DYLD_* set of environment variables
are all used by "dyld", the dynamic link editor.
The full DYLD_* set is documented in "man dyld" on
the MacOS*.
GXX_ROOT
Specifies the location of the gcc binaries. Set
this variable only when the compiler cannot locate
the gcc binaries when using the -gcc-name option.
GXX_INCLUDE
Specifies the location of the gcc headers. Set
this variable only when the compiler cannot locate
the gcc headers when using the -gcc-name option.
IA32ROOT (i32, 132em only)
Points to the directory containing the bin, lib,
include and substitute header directories.
IA64ROOT (i64 only)
Points to the directory containing the bin, lib,
include and substitute header directories.
ICCCFG Specifies the configuration file for customizing
compilations with the icc compiler.
ICPCCFG
Specifies the configuration file for customizing
compilations with the icpc compiler.
INTEL_LICENSE_FILE
Specifies the location for the Intel license file.
LD_LIBRARY_PATH (L*X only)
Specifies the location for all Intel-provided
libraries. The LD_LIBRARY_PATH environment vari-
able contains a colon-separated list of directo-
ries in which the linker will search for library
(.a) files. If you want the linker to search addi-
tional libraries, you can add their names to
LD_LIBRARY_PATH, to the command line, to a
response file, or to the configuration file. In
each case, the names of these libraries are passed
to the linker before the names of the Intel
libraries that the driver always specifies.
PATH Specifies the directories the system searches for
binary executable files.
TMP Specifies the directory in which to store tempo-
rary files. If the directory specified by TMP
does not exist, the compiler places the temporary
files in the current directory. If a directory
is not specified, the compiler stores temporary
files in /tmp.
TMPDIR Same as TMP.
TEMP Same as TMP.
GNU* Environment Variables
The Intel C++ Compiler supports the following GNU envi-
ronment variables:
C_INCLUDE_PATH
Specifies a list of directories to include for C
compilations.
CPATH Specifies a list of directories to include for C
or C++ compilations.
CPLUS_INCLUDE_PATH
Specifies a list of directories to include for C++
compilations.
DEPENDENCIES_OUTPUT
If this variable is set, its value specifies how
to output dependencies for Make based on the non-
system header files processed by the compiler.
System header files are ignored in the dependency
output.
LIBRARY_PATH
The value of LIBRARY_PATH is a colon-separated
list of directories, much like PATH.
SUNPRO_DEPENDENCIES
This variable is the same as DEPENDENCIES_OUTPUT,
except that system header files are not ignored.
Compilation Environment Options
The Intel C++ Compiler installation includes shell
scripts that you can use to set environment variables.
See the Intel C++ User's Guide for more information.
Standard OpenMP Environment Variables
OMP_DYNAMIC
Enables (.TRUE.) or disables (.FALSE.) the dynamic
adjustment of the number of threads.
DEFAULT: .FALSE.
OMP_NESTED
Enables (.TRUE.) or disables (.FALSE.) nested par-
allelism.
DEFAULT: .FALSE.
OMP_NUM_THREADS
Sets the number of threads to use during execu-
tion.
DEFAULT: Number of processors currently installed
in the system while generating the executable
OMP_SCHEDULE
Specifies the run-time schedule type and chunk
size.
DEFAULT: STATIC, no chunk size specified
Intel Extensions to OpenMP Environment Variables
KMP_ALL_THREADS
Sets the maximum number of threads that can be
used by any parallel region.
DEFAULT: max(32, 4 * OMP_NUM_THREADS, 4 * number
of processors)
KMP_BLOCKTIME
Sets the time (in milliseconds) that a thread
should wait after completing the execution of a
parallel region, before sleeping. See also the
throughput execution mode section of the User doc-
umentation, and the KMP_LIBRARY environment vari-
able. Use the optional character suffix s, m, h,
or d, to specify seconds, minutes, hours, or days
DEFAULT: 200 milliseconds
KMP_LIBRARY
Selects the OpenMP run-time library throughput.
The options for the variable value are: serial,
turnaround, or throughput indicating the execution
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 moni-
tor thread (used for book-keeping during program
execution). U se the optional suffix b, k, m, g,
or t, to specify bytes, kilobytes, megabytes,
gigabytes, or terabytes.
DEFAULT: max(32k, system minimum thread stack
size)
KMP_STACKSIZE
Sets the number of bytes to allocate for each 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 ter-
abytes.
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 informa-
tion files are created. This variable applies to
all three phases of the profiling process.
PROF_DUMP_INTERVAL
Initiate Interval Profile Dumping in an instru-
mented application. The _PGOPTI_Set_Inter-
val_Prof_Dump(int interval) function activates
Interval Profile Dumping and sets the approximate
frequency at which dumps will occur. The interval
parameter is measured in milliseconds and speci-
fies the time interval at which profile dumping
will occur. An alternative method of initiating
Interval Profile Dumping is by setting this envi-
ronment variable. Set this environment variable to
the desired interval value prior to starting the
application.
PROF_NO_CLOBBER
Alters the feedback compilation phase slightly. By
default, during the feedback compilation phase,
the compiler merges the data from all dynamic
information files and creates a new pgopti.dpi
file, if the .dyn files are newer than an existing
pgopti.dpi file.
When this variable is set, the compiler does not
overwrite the existing pgopti.dpi file. Instead,
the compiler issues a warning and you must remove
the pgopti.dpi file if you want to use additional
dynamic information files.
EXAMPLES
The following examples demonstrate optimizing across mul-
tiple input files:
1. icc ax.cpp
This command compiles the C++ file 'ax.cpp'
producing executable file 'a.out'. Optimizations
occur by default.
2. icc -o abc ax.cpp bx.cpp cx.cpp
This command uses option -o to name the
executable file 'abc' and compiles 'ax.cpp',
'bx.cpp', and 'cx.cpp' as one program.
3. icc -c ax.cpp bx.cpp cx.cpp
This command uses option -c to suppress
linking and produce individual object
files 'ax.o', 'bx.o', and 'cx.o'. Interprocedural
optimizations are prevented.
4. icc -c ay.c
This command compiles the C file 'ay.c' and the
-c option suppresses linking to produce of an
object file 'ay.o'.
5. icpc -c by.cpp
This command compiles the C++ file 'by.cpp' and
the -c option suppresses linking to produce an
object file 'by.o'.
6. icpc ay.o by.o
This command links the two object files 'ay.o'
and 'by.o' and produces an executable
file 'a.out'.
7. icc -c -O1 sub2.cpp
icc -c -O1 sub3.cpp
icc -o main.exe -g -O0 main.cpp sub2.o sub3.o
The first two commands show incremental
compilation with minimal optimization.
The first command generates an object
file of 'sub2'; the second generates
an object file of 'sub3'.
The last command uses option -O0 to
disable all compiler default optimizations.
It uses option -g to generate symbolic
debugging information and line numbers in
the object code, which can be used by a
source-level debugger.
TECHNICAL SUPPORT
The Intel C++ Compiler product web site offers timely and
comprehensive product information, including product fea-
tures, white papers, and technical articles. For the lat-
est information, visit http://developer.intel.com/soft-
ware/products/.
Intel also provides a support web site that contains a
rich repository of self help information, including get-
ting started tips, known product issues, product errata,
license information, user forums, and more.
Registering your product entitles you to one year of
technical support and product updates through Intel Pre-
mier Support. Intel Premier Support is an interactive
issue management and communication web site that enables
you to submit issues and review their status, and to
download product updates anytime of the day.
To register your product, contact Intel, or seek product
support, please visit: http://www.intel.com/soft-
ware/products/support.
SEE ALSO
The Intel C++ Compiler User's Guide is the definitive
source for detailed information on using the Intel C++
Compiler, including a complete listing of all compiler
options, and much more.
In addition, see these other documents:
· Product Release Notes
· Intel Itanium Assembler User's Guide
· Intel Itanium Architecture Assembly Language Refer-
ence Guide
You can access these documents from
<install-dir>/doc/Doc_Index.htm or from http://devel-
oper.intel.com/software/products/compilers/ .
COPYRIGHT INFORMATION
Copyright (C) 2002 - 2006, Intel Corporation. All rights
reserved.
* Other brands and names are the property of their
respective owners.
Copyright(C) 2002 - 2006 Intel Corporation ICC(1)
</PRE></BODY></HTML>

