Quick Reference Guide and Cross Reference

The table in this section summarizes Intel® C++ compiler options used on Linux* OS and Mac OS* X systems. Each summary also shows the equivalent compiler options on Windows* operating systems, if any.

Some compiler options are only available on systems using certain architectures, as indicated by these labels:

Label

Meaning

i32

The option is available on systems using IA-32 architecture.

i64em

The option is available on systems using Intel® 64 architecture.

i64

The option is available on systems using IA-64 architecture.

If "only" appears in the label, the option is only available on the identified system or architecture.

If no label appears, the option is available on all supported systems and architectures.

For more details on the options, refer to the Alphabetical Compiler Options section.

The Intel® C++ Compiler includes the Intel® Compiler Option Mapping tool. This tool lets you find equivalent options by specifying compiler option -map-opts (Linux OS and Mac OS X) or /Qmap-opts (Windows OS).

For information on conventions used in this table, see Conventions.

Quick Reference of Linux OS and Mac OS X Options

The following table summarizes all supported Linux OS and Mac OS X options. It also shows equivalent Windows* OS options, if any.

Option

Description

Default

Equivalent Windows OS Option

-A<name>[(<value>)]

Specifies an identifier for an assertion.

OFF

/QA<name>[(<value>)]

-A-

Disables all predefined macros.

OFF

/QA[-]

-[no-]alias-args

Determines whether function arguments can alias each other. Deprecated; use -fargument-[no]alias.

-alias-args

/Qalias-args[-]

-[no-]alias-const

Determines whether the compiler assumes a parameter of type pointer-to-const does not alias with a parameter of type pointer-to-non-const.

-no-alias-const

/Qalias-const[-]

-[no]align
(i32, i64em)

Determines whether variables and arrays are naturally aligned.

OFF

None

-ansi

Enables language compatibility with the gcc option -ansi.

OFF

None

-[no-]ansi-alias

Enables or disables use of ANSI aliasing rules in optimizations.

-no-ansi-alias

/Qansi-alias[-]

-auto-ilp32
(i64em, i64)

Instructs the compiler to analyze the program to determine if there are 64-bit pointers which can be safely shrunk into 32-bit pointers.

OFF

/Qauto-ilp32
(i64em, i64)

-ax<processor>
(i32, i64em)

Tells the compiler to generate multiple, processor-specific auto-dispatch code paths for Intel processors if there is a performance benefit.

OFF

/Qax<processor>
(i32, i64em)

-B<dir>

Specifies a directory that can be used to find include files, libraries, and executables.

OFF

None

-Bdynamic
(Linux* OS only)

Enables dynamic linking of libraries at run time.

OFF

None

-Bstatic
(Linux* OS only)

Enables static linking of a user's library.

OFF

None

-c

Prevents linking.

OFF

/c

-C

Place comments in preprocessed source output.

OFF

/C

-[no-]c99

Determines whether C99 support is enabled for C programs.

-no-c99

/Qc99[-]

-[no-]check-uninit

Determines whether checking occurs for uninitialized variables.

-no-check-uninit

None

-[no-]complex-limited-range

Determines whether the use of basic algebraic expansions of some arithmetic operations involving data of type COMPLEX is enabled

-no-complex-limited-range

/Qcomplex-limited-range[-]

-cxxlib[=<dir>]
-cxxlib-nostd
-no-cxxlib

Determines whether the compile links using the C++ run-time libraries and header files provided by gcc.

C++: -cxxlib
C: -no-cxxlib

None

-D<name>[=<value>]

Defines a macro name that can be associated with an optional value.

OFF

/D<name>[=<value>]

-dD

Same as -dN, but outputs #define directives in preprocessed source.

OFF

/QdD

-debug [keyword]

Enables or disables generation of debugging information.

-debug none

/debug [keyword]

-diag-<type> <diag-list>

Controls the display of diagnostic information.

OFF

/Qdiag-<type>:<diag-list>

-diag-dump

Tells the compiler to print all enabled diagnostic messages and stop compilation

OFF

/Qdiag-dump

-diag-enable sc-include

Tells the Source Checker to analyze include files and source files when issuing diagnostic messages. This option is equivalent to deprecated option -diag-enable sv-include.

OFF

/Qdiag-enable:sc-include

-diag-enable sc-parallel
(i32, i64em)

Enables analysis of parallelization in source code (parallel lint diagnostics).

OFF

/Qdiag-enable:sc-parallel
(i32, i64em)

-diag-error-limit <n>

Specifies the maximum number of errors allowed before compilation stops.

<n>=30

/Qdiag-error-limit:<n>

-diag-file[=file]

Causes the results of diagnostic analysis to be output to a file.

OFF

/Qdiag-file[:file]

-diag-file-append[=file]

Causes the results of diagnostic analysis to be appended to a file.

OFF

/Qdiag-file-append[:file]

-[no-]diag-id-numbers

Tells the compiler to display diagnostic messages by using their ID number values.

-diag-id-numbers

/Qdiag-id-numbers[-]

-diag-once <id>[,<id>,...]

Tells the compiler to issue one or more diagnostic messages only once.

OFF

/Qdiag-once:<id>[,<id>,...]

-dM

Output macro definitions in effect after preprocessing (use with -E).

OFF

/QdM

-dN

Same as -dD, but output #define directives contain only macro names.

OFF

/QdN

-dryrun

Specifies that driver tool commands should be shown but not executed.

OFF

None

-dumpmachine

Displays the target machine and operating system configuration.

OFF

None

-dumpversion

Displays the version number of the compiler.

OFF

None

-dynamiclib
(Mac OS* X only; i32, i64em)

Invokes the libtool command to generate dynamic libraries.

OFF

None

-dynamic-linker <file>
(Linux* OS only)

Specifies a dynamic linker other than the default.

OFF

None

-E

Preprocess to stdout.

OFF

/E

-[no-]early-template-check

Lets you semantically check template function template prototypes before instantiation.

-no-early-template-check

None

-EP

Preprocess to stdout omitting #line directives.

OFF

/EP

-export

Enables support for the C++ export template feature.

OFF

None

-export-dir <dir>

Specifies a directory name for the exported template search path.

OFF

None

F<dir>
(Mac OS* X only)

Adds framework directory to head of include file search path.

OFF

None

-fabi-version=<n>
(i32 only)

Instructs the compiler to select a specific ABI implementation.

Varies

None

-f[no-]alias

Tells the compiler to assume aliasing in a program.

-falias

/Oa

-f[no-]align-functions[=<n>]
(i32, i64em)

Aligns functions on optimal byte boundary.

-fno-align-functions

/Qfnalign[:<n>][-]
(i32, i64em)

falign-stack=<mode>
(i32 only)

Tells the compiler the stack alignment to use on entry to routines.

OFF

-falign-stack=default

-fargument-[no]alias

Determines whether function arguments can alias each other.

-fargument-alias

/Qalias-args[-]

-fargument-noalias-global

Tells the compiler that arguments cannot alias each other and cannot alias global storage.

OFF

None

-fasm-blocks
(Mac OS* X only; i32, i64em)

Enables the use of blocks and entire functions of assembly code within a C or C++ file.

OFF

None

-fast

Maximizes speed across the entire program.

OFF

/fast

-[no-]fast-transcendentals

Enables the compiler to replace calls to transcendental functions with faster but less precise implementation.

OFF

/Qfast-transcendentaks[-]

-f[no-]builtin[-func]

Enables or disables inline expansion of intrinsic functions.

OFF

/Oi[-]

-fcode-asm

Produces an assembly listing with machine code annotations.

OFF

None

-f[no-]common

Determines whether the compiler treats common symbols as global definitions.

-fcommon

None

-fno-exceptions

Enables exception handling table generation.

C++: -fexceptionsC: -fno-exceptions

None

-f[no-]fnalias

Assume aliasing within functions.

-ffnalias

/Ow[-]

-ffreestanding

Ensures that compilation takes place in a freestanding environment.

OFF

/Qfreestanding

-ffunction-sections

Places each function in its own COMDAT section.

OFF

None

-f[no-]inline

Tells the compiler to inline functions declared with __inline and perform C++ inlining.

-fno-inline

None

-f[no-]inline-functions

Enables function inlining for single file compilation.

-finline-functions

None

-finline-limit=<n>

Lets you specify the maximum size of a function to be inlined.

OFF

None

-f[no-]instrument-functions

Determines whether function entry and exit points are instrumented.

-fno-instrument-functions

/Qinstrument-functions[-]

-f[no-]jump-tables

Determines whether jump tables are generated for switch statements.

-fjump-tables

None

-f[no-]keep-static-consts

Tells the compiler to preserve allocation of variables that are not referenced in the source.

-fno-keep-static-consts

/Qkeep-static-consts[-]

-[no-]fma
(i64 only, Linux* OS only)

enable/disable the combining of floating point multiplies and add/subtract operations

-fma

/Qfma[-]
(i64 only)

-f[no-]math-errno

Tells the compiler that errno can be reliably tested after calls to standard math library functions.

-fno-math-errno

None

-fminshared

Specifies that a compilation unit is a component of a main program and should not be linked as part of a shareable object.

OFF

None

-fmudflap

The compiler instruments risky pointer operations to prevent buffer overflows and invalid heap use.

OFF

None

-fno-gnu-keywords

Does not recognize typeof as keyword.

OFF

None

-fno-implicit-inline-templates

Tells the compiler to not emit code for implicit instantiations of inline templates.

OFF

None

-fno-implicit-templates

Tells the compiler to not emit code for non-inline templates that are instantiated implicitly.

OFF

None

-fno-operator-names

Disables support for the operator names specified in the standard.

OFF

None

-fno-rtti
(i32, i64em)

Disables support for run-time type information.

OFF

None

-f[no-]non-call-exceptions

Allows trapping instructions to throw C++ exceptions.

-fno-non-call-exceptions

None

-f[no-]non-lvalue-assign

Determines whether casts and conditional expressions can be used as lvalues.

-fnon-lvalue-assign

None

-[no-]fnsplit
(i32 only)

Enables or disables function splitting (enabled with -prof-use).

-no-fnsplit

/Qfnsplit[-]
(i32, i64)

-f[no-]omit-frame-pointer

Enables or disables using EBP as a general-purpose register in optimizations.

-fomit-frame-pointer

/Oy[-]

-fp-model keyword

Controls the semantics of floating-point calculations.

-fp-model fast=1

/fp keyword:

-[no-]fp-port
(i32, i64em)

Round floating-point results at assignments and casts (some speed impact).

-no-fp-port

/Qfp-port[-]
(i32, i64em)

-[no-]fp-relaxed
(i64 only; Linux* OS only)

Enables or disables use of faster but slightly less accurate code sequences for math functions.

-no-fp-relaxed

/Qfp-relaxed[-]
(i64 only)

-fp-speculation=<mode>=mode

Tells the compiler the mode in which to speculate on floating-point operations.

-fp-speculation=fast

/Qfp-speculation:<mode>

-fp-stack-check
(i32, i64em)

Enables FP stack checking after every function/procedure call.

OFF

/Qfp-stack-check
(i32, i64em)

-fpack-struct

Specifies that structure members should be packed together.

OFF

None

-fpascal-strings

Allow for Pascal-style string literals.

OFF

None

-fpermissive
(i32 only)

Allow for non-conformant code.

OFF

None

-f[no-]pic

Determines whether the compiler generates position-independent code.

varies

None

-fpie
(Linux* OS only)

Tells the compiler to generate position-independent code. The generated code can only be linked into executables.

OFF

None

-fr32
(Linux* OS only; i64 only)

Disables the use of the high floating-point registers.

OFF

None

-freg-struct-return

Return struct and union values in registers when possible.

OFF

None

-fshort-enums

Tells the compiler to allocate as many bytes as needed for enumerated types.

OFF

None

-fsource-asm

Produce assembly file with optional source annotations.

OFF

/FAs

-f[no-]stack-protector

Same as -f[no-]stack-security-check.

OFF

None

-f[no-]stack-security-check

Determines whether the compiler generates code that detects some buffer overruns.

-fno-stack-security-check

/GS[-]

-fsyntax-only

Performs syntax and semantic checking only (no object file produced).

OFF

/Zs

-ftemplate-depth-<n>

Control the depth in which recursive templates are expanded.

OFF

/Qtemplate-depth-<n>

-ftls-model=model

Change thread local storage mode.

OFF

None

-ftrapuv

Trap uninitialized variables.

OFF

/Qtrapuv

-[no-]ftz

Enables or disables flush denormal results to zero.

i64: -no-ftz
(i32, i64em: -ftz

/Qftz[-]

-funroll-loops

Same as -unroll.

ON

/Qunroll

-funroll-all-loops

Unroll all loops even if the number of iterations is uncertain when the loop is entered.

OFF

None

-f[no-]unsigned-bitfields

Changes default bitfield type to unsigned.

-fno-unsigned-bitfields

None

-funsigned-char

Changes default char type to unsigned.

OFF

None

-f[no-]verbose-asm

Produces an assembly listing file with compiler comments.

-fno-verbose-asm

None

-fvisibility=keyword
-fvisibility-keyword=<file>

Specifies the default visibility for global symbols.

-fvisibility=default

None

-fvisibility-inlines-hidden

Causes inline member functions to be marked hidden.

OFF

None

-g

Generates full debugging information in the object file.

OFF

/Zi, Z7

-g0

Disables generation of symbolic debug information.

OFF

None

-[no-]gcc

Defines or undefines GNU macros.

-gcc

None

-gcc-sys

Defines GNU macros only during compilation of system headers.

OFF

None

-gcc-name=<dir>

Specifies the location of the gcc compiler.

OFF

None

-gcc-version

Provides compatible behavior with gcc.

OFF

None

-gdwarf-2

Enables generation of debug information using the DWARF2 format.

OFF

None

-[no-]global-hoist

Enables or disables external globals to be load safe.

-global-hoist

/Qglobal-hoist[-]

-gxx-name=<dir>

Uses the g++ compiler as environment for C++ compilation.

OFF

None

-H

Prints include file order.

OFF

/QH

-help [category]

Displays all available compiler options or a category of compiler options.

OFF

/help [category]

-help-pragma
(i32, i64em)

Displays all supported pragmas.

OFF

/Qhelp-pragma

-I<dir>

Adds directory to include file search path.

OFF

/I<dir>

-[no-]icc

Defines certain Intel compiler macros.

-icc

None

-idirafter<dir>

Adds a directory to the second include file search path.

OFF

None

-imacros <file>

Specifies a lead header in a translation unit.

OFF

None

-[no-]inline-calloc
(i32, i64em)

tells the compiler to inline calls to calloc() as calls to malloc() and memset().

-no-inline-calloc

/Qinline-calloc[-]
(i32, i64em)

-inline-debug-info
(Linux* OS only)

preserve the source position of inlined code instead of assigning the call-site source position to inlined code

OFF

/Qinline-debug-info

-[no-]inline-factor[=n]

Specify percentage multiplier that should be applied to all inlining options that define upper limits.

-no-inline-factor

/Qinline-factor[=n][-]

-inline-forceinline

Inline routine whenever the compiler can do so.

OFF

/Qinline-forceinline

-inline-level=<n>

control inline expansion

-inline-level=2 (if -O2 or -O3 is in effect)
-inline-level=0 (if -O0 is in effect)

/O<n>b

-[no-]inline-max-per-compile[=n]

Specify maximum number of times inlining may be applied to an entire compilation unit.

-no-inline-max-per-compile

/Qinline-max-per-compile[=n][-]

-[no-]inline-max-per-routine[=n]

Specify maximum number of times the inliner may inline into a particular routine.

-no-inline-max-per-routine

/Qinline-max-per-routine[=n][-]

-[no-]inline-max-size[=n]

Specify lower limit for the size of what the inliner considers to be a large routine.

-no-inline-max-size

/Qinline-max-size[=n][-]

-[no-]inline-max-total-size[=n]

Specify how much larger a routine can normally grow when inline expansion is performed.

-no-inline-max-total-size

/Qinline-max-total-size[=n][-]

-[no-]inline-min-size[=n]

Specify upper limit for the size of what the inliner considers to be a small routine.

-no-inline-min-size

/Qinline-min-size[=n][-]

-ip

Enables single-file IP optimizations (within files).

OFF

/Qip

-ip-no-inlining

Disables full and partial inlining (requires -ip or -ipo).

OFF

/Qip-no-inlining

-ip-no-pinlining
(i32, i64em)

Disables partial inlining (requires -ip or -ipo).

OFF

/Qip-no-pinlining
(i32, i64em)

-IPF-flt-eval-method0
(i64 only; Linux* OS only)

Evaluates floating-point operands evaluated to the precision indicated by program; deprecated.

OFF

/QIPF-flt-eval-method0
(i64 only)

-[no-]IPF-fltacc
(i64 only; Linux* OS only)

Enables or disables optimizations that affect floating point accuracy; deprecated.

-no-IPF-fltacc

/QIPF-fltacc[-]
(i64 only)

-[no-]IPF-fma
(i64 only, Linux* OS only)

Enables or disable the combining of floating point multiplies and add/subtract operations; deprecated, use -fma.

-IPF-fma

/QIPF-fma[-]
(i64 only)

-[no-]IPF-fp-relaxed
(i64 only, Linux* OS only)

Enables or disables use of faster but slightly less accurate code sequences for math functions; deprecated, use -fp-relaxed.

-no-IPF-fp-relaxed

/QIPF-fp-relaxed[-]
(i64 only)

-ipo[=n]

Enables multi-file IP optimizations (between files).

OFF

/Qipo[n]

-ipo-c

Generates a multi-file object file (ipo_out.o).

OFF

/Qipo-c

-ipo-jobs<n>

Specifies the number of commands to be executed simultaneously during the link phase of Interprocedural Optimization (IPO).

OFF

/Qipo-jobs:<n>

-ipo-S

Generates a multi-file assembly file (ipo_out.s).

OFF

/Qipo-S

-ipo-separate
(Linux* OS only)

Creates one object file for every source file.

OFF

/Qipo-separate

-iprefix <prefix>

Indicates the prefix for referencing directories containing header files.

OFF

None

-iquote <dir>

Adds directory for files included with quotes to front of include files search path.

OFF

None

-isystem<dir>

Specifies a directory to add to the system include path.

OFF

None

-ivdep-parallel
(i64 only; Linux* OS only)

Makes ivdep directives mean no loop carried dependencies.

OFF

/Qivdep-parallel
(i64 only)

-iwithprefix<dir>

Appends <dir> to prefix passed in by -iprefix and puts it at the end of the include search path.

OFF

None

-iwithprefixbefore <dir>

Similar to -iwithprefix except include directory is placed in the same place as -I directories.

OFF

None

-Kc++

Compiles all source or unrecognized file types as C++ source files.

OFF

/TP

-kernel
(i64 only; Linux* OS only)

Generates code for inclusion in the kernel.

OFF

None

-l<string>

Tells the linker to search for a specified library.

OFF

None

-L<dir>

Tells the linker to search for libraries in a specified directory before searching for them in the standard directories .

OFF

None

-m[<processor>]

Tells the compiler to generate optimized code specialized for the processor that executes your program.

OFF

/arch:<processor>

-M

Generates makefile dependency information.

OFF

/QM

-m32
(i32, i64em)

Tells the compiler to generate code for IA-32 architecture.

OFF

None

-m64
(i32, i64em)

Tells the compiler to generate code for Intel® 64 architecture.

OFF

None

-malign-double
(i32, i64em)

Aligns double, long double, and long long types for systems based on IA-32 architecture.

OFF

None

-malign-mac68k
(i32, i64em; Mac OS* X only)

Aligns structure fields on 2-byte boundaries (m68k compatible).

OFF

None

-malign-natural
(i32, i64em; Mac OS* X only )

Aligns larger types on natural size-based boundaries (overrides ABI).

OFF

None

-malign-power
(i32, i64em; Mac OS* X only )

Aligns based on ABI-specified alignment rules.

ON

None

-map-opts
(Linux* OS only)

Enables option mapping tool.

OFF

/Qmap-opts

-march=<processor>
(i32, i64em; Linux* OS only)

Generates code for a specified processor.

i32: OFF
i64em: -march=pentium4

None

-mcmodel=<mem_model>
(i64em; Linux* OS only)

Uses a specific memory model to generate code and store data.

-mcmodel=small

None

-MD

Preprocesses and compiles, generating output file containing dependency information ending with extension .d.

OFF

/QMD

-mdynamic-no-pic
(i32; Mac OS* X only )

Generates code that is not position-independent but has position-independent external references.

OFF

None

-MF<file>

Generates makefile dependency information in file (must specify -M or -MM).

OFF

/QMF<file>

-mfixed-range
(i64; Mac OS* X only)

Reserves certain register for use by the Linux* OS kernel.

OFF

None

-MG

Similar to -M, but treat missing header files as generated files.

OFF

/QMG

-mkl[=lib

Tells the compiler to link to certain parts of the Intel® Math Kernel Library.

OFF

/Qmkl[=lib

-minstruction=[no]movbe
(i32, i64em)

Determines whether MOVBE instructions are generated for Intel processors.

OFF

/Qinstruction:[no]movbe
(i32, i64em)

-MM

Similar to -M, but do not include system header files.

OFF

/QMM

-MMD

Similar to -MD, but do not include system header files.

OFF

/QMMD

-mp

Maintains floating-point precision while disabling some optimization.

OFF

None

-MP

Adds a phony target for each dependency.

OFF

None

-mp1

Improves precision (speed impact is less than -mp).

OFF

/Qprec

-MQ<target>

Changes the default target rule for dependency generation.

OFF

None

-mregparm=<value>

Controls the number registers used to pass integer argument.

OFF

None

-m[no-]relax
(i64 only)

Passes linker option -relax to the linker.

OFF

None

-m[no-]serialize-volatile
(Linux* OS only)

Imposes strict memory access ordering for volatile data object references.

OFF

/Qserialize-volatile[-]

-MT<target>

Changes the default target rule for dependency generation.

OFF

/QMT<target>

-mtune=<processor>

Performs optimizations for specific processors.

i32, i64em: -mtune=generic
i64: -mtune=itanium2-p9000

None

-[no-]multibyte-chars

Provides support for multi-byte characters

ON

/Qmultibyte-chars[-]

-multiple-processes[=<n>]

Creates multiple processes.

OFF

/MP[:<n>]

-no-bss-init

Disable placement of zero-initialized variables in BSS (use DATA).

OFF

/Qnobss-init

-nodefaultlibs

Prevents using standard libraries when linking.

OFF

None

-nolib-inline

Disables inline expansion of standard library or intrinsic functions.

OFF

None

-nostartfiles

Prevents the compiler from using standard startup files when linking.

OFF

None

-nostdinc++

Do not search for header files in the standard directories for C++.

OFF

None

-nostdlib

Prevents the compiler from using standard libraries and startup files when linking.

OFF

None

-o<file>

Specifies name of output file.

OFF

/Fe<file>

-O

Enables optimizations.

-O2

/O

-O0

Disables optimizations.

-O2

/Od

-openmp

Generates multi-threaded code based on the OpenMP* directives

OFF

/Qopenmp

-openmp-lib <type>
(Linux* OS only)

Lets you specify an OpenMP* run-time library to use for linking.

-openmp-lib legacy

/Qopenmp-lib:<type>

-openmp-link <library>

Links to static or dynamic OpenMP run-time libraries.

-openmp-link dynamic

/Qopenmp-link:<library>

-openmp-profile
(Linux* OS only)

Links with instrumented OpenMP run-time library to generate OpenMP profiling information.

OFF

/Qopenmp-profile

-openmp-report<n>

Controls the OpenMP parallelizer diagnostic level.

-openmp-report1

/Qopenmp-report<n>

-openmp-stubs

Enables the user to compile OpenMP programs in sequential mode.

OFF

/Qopenmp-stubs

-openmp-task <model>

Lets you choose an OpenMP* tasking model.

-openmp-task omp

/Qopenmp-task:<model>

-openmp-threadprivate <type>

Lets you specify an OpenMP* threadprivate implementation.

- openmp-threadprivate legacy

/Qopenmp-threadprivate:<type>

-opt-block-factor=<n>

Lets you specify a loop blocking factor.

OFF

/Qopt-block-factor:<n>

-[no]opt-calloc
(i32, i64em; Linux* OS only)

Tells the compiler to substitute a call to _intel_fast_calloc() for a call to calloc().

-no-opt-calloc

/Qopenmp-stubs

-[no-]opt-class-analysis

Tells the compiler to use C++ class hierarchy information to analyze and resolve C++ virtual function calls at compile time.

-no-opt-class-analysis

/Qopt-class-analysis[-]

-[no-]opt-jump-tables=keyword

Enables or disables generation of jump tables for switch statements.

- opt-jump-tables=default

/Qopt-jump-tables[-]

-[no-]opt-loadpair
(i64 only; Linux* OS only)

Enables or disables loadpair optimization.

-no-opt-loadpair

/Qopt-loadpair[-]
(i64 only)

-[no-]opt-malloc-options=<n>

Lets you specify an alternate algorithm for malloc().

-opt-malloc-options=0

None

-opt-mem-bandwidth<n>
(i64 only; Linux* OS only)

Enables performance tuning and heuristics to control memory bandwidth use among processors.

-opt-mem-bandwidth0

/Qopt-mem-bandwidth<n>
(i64 only)

-[no-]opt-mod-versioning
(i64 only; Linux* OS only)

Enables or disables versioning of modulo operations for certain types of operands.

- no-opt-mod-versioning

/Qopt-mod-versioning[-]
(i64 only)

-[no-]opt-multi-version-aggressive
(i32, i64em)

tells the compiler to use aggressive multi-versioning to check for pointer aliasing and scalar replacement

-no-opt-multi-version-aggressive

/Qopt-multi-version-aggressive[-]
(i32, i64em)

-[no-]opt-prefetch[=<n>]

Enables or disables prefetch insertion optimization.

i32, i64em:-no-opt-prefetch
i64: -opt-prefetch

/Qopt-prefetch[:<n>]

-[no-]opt-prefetch-initial-values
(i64 only; Linux* OS only)

Enables or disables prefetches that are issued before a loop is entered.

-no-opt-prefetch-initial-values

/Qopt-prefetch-initial-values [-]
(i64 only)

-[no-]opt-prefetch-issue-excl-hint
(i64 only; Linux* OS only)

Enables or disables prefetches for stores with exclusive hin

-no-opt-prefetch-issue-excl-hint

/Qopt-prefetch-issue-excl-hint [-]
(i64 only)

-[no-]opt-prefetch-next-iteration
(i64 only; Linux* OS only)

Enables or disables prefetches for a memory access in the next iteration of a loop.

-no-opt-prefetch-next-iteration

/Qopt-prefetch-next-iteration [-]
(i64 only)

-[no-]opt-ra-region-strategy[=keyword]
(i32, i64em)

Selects the method that the register allocator uses to partition each routine into regions.

-opt-ra-region-strategy=default

/Qopt-ra-region-strategy[:keyword]
(i32, i64em)

-opt-report [<n>]

Generates an optimization report to stderr.

-opt-report 2

/Qopt-report[:<n>]

-opt-report-file=<file>

Specifies the file name for the generated report.

OFF

/Qopt-report-file:<file>

-opt-report-help

Displays the optimization phases available for reporting.

OFF

/Qopt-report-help

-opt-report-phase=<phase>

Specifies the phase that reports are generated against.

OFF

/Qopt-report-phase:<phase>

-opt-report-routine=<string>

Reports on routines containing the given name.

OFF

/Qopt-report-routine:<string>

-opt-streaming-stores keyword
(i32, i64em)

Enables generation of streaming stores for optimization.

-opt-streaming-stores auto

/Qopt-streaming-stores:keyword
(i32, i64em)

-[no-]opt-subscript-in-range
(i32, i64em)

Enables or disables overflows in the intermediate computation of subscript expressions in loops.

-[no-]opt-subscript-in-range

/Qopt-subscript-in-range[-]
(i32, i64em)

-Os

Enables speed optimizations, but disable some optimizations which increase code size for small speed benefit.

OFF

/Os

-p

Compiles and links for function profiling with gprof(1).

OFF

None

-P (or -F)

Preprocesses to file omitting #line directives.

OFF

/P

-par-affinity=[modifier,...]type[,permute][,offset]
(Linux* OS only)

Specifies thread affinity.

OFF

/Qpar-affinity:[modifier,...]type[,permute][,offset]

-par-num-threads=n

Specifies the number of threads to use in a parallel region.

OFF

/Qpar-num-threads:n

-par-report[n]

control the auto-parallelizer diagnostic level

-par-report1

/Qpar-report[n]

-[no-]par-runtime-control

Generates code to perform run-time checks for loops that have symbolic loop bounds.

-no-par-runtime-control

/Qpar-runtime-control[-]

-par-schedule-<keyword>[=n]

Specifies a scheduling algorithm for DO loop iterations.

OFF

/Qpar-schedule-<keyword[[:] n ]

-par-threshold[<n>]

Sets threshold for the auto-parallelization of loops.

-par-threshold100

/Qpar-threshold[[:]n]

-parallel

Enables the auto-parallelizer to generate multi-threaded code for loops that can be safely executed in parallel.

OFF

/Qparallel

-pc<n>

Enables control of floating-point significand precision.

-pc80

/Qpc<n>

-pch

Enable sautomatic precompiled header file creation/usage.

OFF

/YX

-pch-create <file>

Creates precompiled header files.

OFF

/Yc[file]

-pch-dir <dir>

Tells the compiler where to find or create a file for precompiled headers.

OFF

None

-pch-use {<file> | <dir>}

Lets you use a specific precompiled header file.

OFF

None

-pie

Produces a position-independent executable on processors that support it.

OFF

None

-pragma-optimization-level=<interpretation>

Specifies which interpretation of the optimization_level pragma should be used if no prefix is specified.

-pragma-optimization-level=Intel

None

-[no-]prec-div

Improve precision of floating-point divides (some speed impact).

-prec-div

/Qprec-div[-]

-[no-]prec-sqrt
(i32, i64em)

Determine if certain square root optimizations are enabled.

-no-prec-sqrt

/Qprec-sqrt[-]
(i32, i64em)

-print-multi-lib

Prints information about where system libraries should be found.

OFF

None

-[no-]prof-data-order
(Linux* OS only)

Enables or disables data ordering if profiling information is enabled.

-no-prof-data-order

/Qprof-data-order[-]

-prof-dir <dir>

Specifies directory for profiling output files (*.dyn and *.dpi).

OFF

/Qprof-dir <dir>

-prof-file <file>

Specifies file name for profiling summary file.

OFF

/Qprof-file <file>

-[no-]prof-func-groups
(i32, i64em; Linux* OS only)

Enables or disables function grouping if profiling information is enabled.

-no-prof-func-groups

None

-[no-]prof-func-order

Enables or disables function ordering if profiling information is enabled.

-no-prof-func-order

/Qprof-func-order [-]

-prof-gen[x]

Instruments program for profiling.

OFF

/Qprof-gen[x]

-prof-hotness-threshold=<n>
(Linux* OS only)

Lets you set the hotness threshold for function grouping and function ordering.

OFF

/Qprof-hotness-threshold:<n>

-[no-]prof-src-dir

Determines whether directory information of the source file under compilation is considered when looking up profile data records.

-prof-src-dir

/Qprof-src-dir [-]

-prof-src-root=<dir>

Lets you use relative directory paths when looking up profile data and specifies a directory as the base.

OFF

/Qprof-src-root=<dir>

-prof-src-root-cwd

Lets you use relative directory paths when looking up profile data and specifies the current working directory as the base.

OFF

/Qprof-src-root-cwd

-prof-use

Enables use of profiling information during optimization.

OFF

/Qprof-use

-pthread

Uses pthreads library for multithreading support.

OFF

None

-Qlocation,<string>,<dir>

Sets <dir> as the location of tool specified by <string>; supported tools depend on the operating system.

OFF

/Qlocation,<string>,<dir>

-Qoption,<string>,<options>

Passes options <options> to tool specified by <string>; supported tools depend on the operating system.

OFF

/Qoption,<string>,<options>

-rcd
(i32, i64em)

Sets rounding mode to enable fast float-to-int conversions.

OFF

/Qrcd
(i32, i64em)

-rct
(i32, i64em)

Sets the internal FPU rounding control to Truncate.

OFF

/Qrct
(i32, i64em)

-reserve-kernel-regs
(i64 only; Linux* OS only)

Reserves registers f12-f15 and f32-f127 for use by the kernel.

OFF

None

-[no]restrict

Enables or disables the 'restrict' keyword for disambiguating pointers.

OFF

/Qrestrict[-]

-S

Compiles to assembly (.s) only, do not link (*I).

OFF

/S

-[no-]save-temps

Tells the compiler to save intermediate files created during compilation.

-no-save-temps

/Qsave-temps[-]

-[no-]scalar-rep

Enables or disables scalar replacement performed during loop transformation.

-no-scalar-rep

/Qscalar-rep[-]

-shared
(Linux* OS only)

Produces a dynamic shared object instead of an executable.

OFF

None

-shared-intel

Causes Intel-provided libraries to be linked in dynamically.

OFF

None

-shared-libgcc
(Linux* OS only)

Links the GNU libgcc library dynamically.

OFF

None

-[no-]sox
(Linux* OS only)

Enables or disables saving of compilation options and version number in the Linux OS executable.

-no-sox

/Qsox[-]

-static
(Linux* OS only)

Prevents linking with shared libraries.

OFF

None

-staticlib
(Mac OS* X only)

Invokes the libtool command to generate static libraries.

OFF

None

-static-intel

Causes Intel-provided libraries to be linked in statically.

OFF

None

-static-libgcc
(Linux* OS only)

Links the GNU libgcc library statically.

OFF

None

-std=<val>

Conforms to a specific language standard.

OFF

/Qstd:<val>

-strict-ansi

Strict ANSI conformance dialect.

OFF

/Za

-T <file>
(Linux* OS only)

Tells the linker to read link commands from a file.

OFF

None

-tcheck
(Linux* OS only)

Generates instrumentation to detect multi-threading bugs.

OFF

/Qtcheck

-tcollect [<lib>]
(Linux* OS only)

Inserts instrumentation probes calling the Intel® Trace Collector API.

OFF

/Qtcollect[:<lib>]

-tcollect-filter <file>
(Linux* OS only)

Enables or disables the instrumentation of specified functions.

OFF

/Qtcollect-filter[:<file>]

-tprofile
(Linux* OS only)

Generates instrumentation to analyze multi-threading performance.

OFF

/Qtprofile

-[no]traceback

Specifies whether the compiler generates data to allow for source file traceback information at runtime.

-notraceback

/[no]traceback

-U<name>

remove predefined macro

OFF

/U<name>

-unroll[n]

Set maximum number of times to unroll loops.

-unroll

/Qunroll[:n]

-[no-]unroll-aggressive
(i32, i64em)

Tells the compiler to use aggressive, complete unrolling for loops with small constant trip counts.

OFF

/Qunroll-aggressive[-]
(i32, i64em)

-[no-]use-asm

Produces objects through assembler.

-no-use-asm

/Quse-asm[-]
(i32 only)

-use-msasm

Accepts the Microsoft* MASM-style inlined assembly format.

OFF

None

-use-intel-optimized-headers
(i32, i64em)

Adds performance headers directory to the include path search list.

-no-use-intel-optimized-headers

/Quse-intel-optimized-headers [-]
(i32, i64em)

-V

Displays compiler version information.

OFF

/QV

-[no-]vec

Enables or disables vectorization.

-vec

/Qvec[-]

-[no-]vec-guard-write
(i32, i64em)

Tells the compiler to perform a conditional check in a vectorized loop.

-no-vec-guard-write

/Qvec-guard-write[-]
(i32, i64em)

-vec-report[<n>]
(i32, i64em)

Controls amount of vectorizer diagnostic information-opt-report generate an optimization report to stderr.

-vec-report1

/Qvec-report[<n>]
(i32, i64em)

--version

Displays GCC-style version information.

OFF

None

-vec-threshold[<n>]
(i32, i64em)

Sets threshold for the vectorization of loops.

-vec-threshold100

/Qvec-threshold[[:]n]

-w

Disables all warning messages.

OFF

/w

-w<n>

Determines which diagnostic message level is set.

OFF

/W<n>

-Wa,<option1>[,<option2>,...]

Passes options to the assembler for processing.

OFF

None

-W[no-]abi

Determines whether a warning is issued if generated code is not C++ ABI compliant.

-Wno-abi

None

-Wall

Enables all warnings.

OFF

/Wall

-Wbrief

Prints brief one-line diagnostics.

OFF

/WL

-Wcheck

Enables compile-time code checking for certain code.

OFF

/Wcheck

-W[no-]comment

Determines whether a warning is issued when /* appears in the middle of a /* */ comment.

OFF

None

-Wcontext-limit=<n>

Sets maximum number of template instantiation contexts shown in diagnostic.

OFF

/Qcontext-limit:<n>

-wd<L1>[,< Ln>,...]

Disables diagnostics L1 through Ln.

OFF

/Qwd<L1>[,< Ln>,...]

-W[no-]deprecated

Determines whether warnings are issued for deprecated features.

OFF

None

-we<L1>[,< Ln>,...]

Changes severity of soft diagnostics L1 through Ln to error.

OFF

/Qwe<L1>[,< Ln>,...]

-Weffc++

Enables warnings based on certain C++ programming guidelines.

OFF

/Qeffc++

-Werror

Forces warnings to be reported as errors.

OFF

/WX

-Werror-all

Changes all warnings and remarks to errors.

OFF

/Werror-all

-W[no-]extra-tokens

Determines whether warnings are issued about extra tokens at the end of preprocessor directives.

-Wno-extra-tokens

None

-W[no-]format

Determines whether argument checking is enabled for calls to printf, scanf, and so forth.

-Wno-format

None

-W[no-]format-security

Determines whether the compiler issues a warning when the use of format functions may cause security problems.

-Wno-format-security

None

-Winline

Enables diagnostics about what is inlined and what is not inlined.

OFF

None

-Wl,<option1>[,<option2>,...]

Passes options to the linker for processing.

OFF

None

-W[no-]main

Determines whether a warning is issued if the return type of main is not expected.

-Wno-main

None

-W[no-]missing-declaration

Determines whether warnings are issued for global functions and variables without prior declaration.

-Wno-missing-declaration

None

-W[no-]missing-prototype

Determines whether warnings are issued for missing prototypes.

-Wno-missing-prototype

None

-Wnon-virtual-dtor

Issues a warning when a class appears to be polymorphic, yet it declares a non-virtual one. (C++ only.)

OFF

None

-wn<n>

Prints a maximum number of errors.

-wn100

/Qwn<n>

-wo<L1>[,< Ln>,...]

Issues one or more diagnostic messages only once.

OFF

/Qwo<L1>[,< Ln>,...]

-Wp,<option1>[,<option2>,...]

Passes options to the preprocessor.

OFF

None

-Wp64

Prints diagnostics for 64-bit porting.

OFF

/Wp64

-W[no-]pointer-arith

Determines whether warnings are issued for questionable pointer arithmetic.

-Wno-pointer-arith

None

-W[no-]pragma-once

Determines whether a warning is issued about the use of #pragma once.

-Wno-pragma-once

None

-wr<L1>[,< Ln>,...]

Changes severity of soft diagnostics L1 through Ln to remark.

OFF

/Qwr<L1>[,< Ln>,...]

-Wreorder

Issues a warning when the order of member initializers does not match the order in which they must be executed.

OFF

None

-W[no-]return-type

Determines whether warnings are issued when a function uses the default int return type.

-Wno-return-type

None

-W[no-]shadow

Determines whether a warning is issued when a variable declaration hides a previous declaration.

-Wno-shadow

None

-W[no-]strict-prototypes

Determines whether warnings are issued for functions declared or defined without specified argument types.

-Wno-strict-prototypes

None

-W[no-]trigraphs

Determines whether warnings are issued if any trigraphs are encountered.

-Wno-trigraphs

None

-W[no-]uninitialized

Determines whether a warning is issued if a variable is used before being initialized.

-Wno-uninitialized

None

-W[no-]unknown-pragmas

Determines whether a warning is issued if an unknown #pragma directive is used.

-Wno-unknown-pragmas

None

-W[no-]unused-function

Determines whether a warning is issued if a declared function is not used.

-Wno-unused-function

None

-W[no-]unused-variable

Determines whether a warning is issued if a local or non-constant static variable is unused after being declared.

-Wno-unused-variable

None

-ww<L1>[,< Ln>,...]

Changes soft diagnostics L1 through Ln to warning.

OFF

/Qww<L1>[,< Ln>,...]

-Wwrite-strings

Issues a diagnostic message if const char * is converted to (non-const) char *.

OFF

None

-x<processor>
(i32, i64em)

Generates optimized code specialized for the Intel processor that executes your program.

varies; see option description

/Qx<processor>
(i32, i64em)

-X

Removes standard directories from include file search path.

OFF

/X

-Xlinker <option>

Passes a linker option directly to the linker.

OFF

None

-Zp[<n>]

Specifies alignment for structures on byte boundaries.

-Zp16

/Zp[<n>]

See Also