Intel(R) C++ Compiler Help ========================== Intel(R) Compiler includes compiler options that optimize for instruction sets that are available in both Intel(R) and non-Intel microprocessors, but may perform additional optimizations for Intel microprocessors than for non-Intel microprocessors. In addition, certain compiler options for Intel(R) Compiler are reserved for Intel microprocessors. For a detailed description of these compiler options, including the instructions they implicate, please refer to "Intel(R) Compiler User and Reference Guides > Compiler Options." usage: icl [options] file1 [file2 ...] [/link linker_options] where options represents zero or more compiler options fileN is a C/C++ source (.c .cc .cpp .cxx .i), assembly (.asm), object (.obj), static library (.lib), or other linkable file linker_options represents zero or more linker options Notes ----- 1. Most Microsoft* Visual C++* compiler options are supported; a warning is printed for most unsupported options. The precise behavior of performance options does not always match that of the Microsoft Visual C++ compiler. 2. Intel C++ compiler options may be placed in your icl.cfg file. 3. Most options beginning with /Q are specific to the Intel C++ compiler: (*I) indicates other options specific to the Intel C++ compiler (*M) indicates /Q options supported by the Microsoft Visual C++ compiler Compiler Option List -------------------- Optimization ------------ /O1 optimize for maximum speed, but disable some optimizations which increase code size for a small speed benefit /O2 optimize for maximum speed (DEFAULT) /O3 optimize for maximum speed and enable more aggressive optimizations that may not improve performance on some programs /Ox enable maximum optimizations (same as /O2) /Os enable speed optimizations, but disable some optimizations which increase code size for small speed benefit (overrides /Ot) /Ot enable speed optimizations (overrides /Os) /Od disable optimizations /Oi[-] enable/disable inline expansion of intrinsic functions /Oy[-] enable/disable using EBP as a general purpose register (no frame pointer) (i32 only) /fast enable /QxHOST /O3 /Qipo /Qprec-div- options set by /fast cannot be overridden with the exception of /QxHOST, list options separately to change behavior /Oa[-] assume no aliasing in program /Ow[-] assume no aliasing within functions, but assume aliasing across calls Code Generation --------------- /Qx generate specialized code to run exclusively on processors indicated by as described below SSE2 May generate Intel(R) SSE2 and SSE instructions for Intel processors. Optimizes for the Intel NetBurst(R) microarchitecture. SSE3 May generate Intel(R) SSE3, SSE2, and SSE instructions for Intel processors. Optimizes for the enhanced Pentium(R) M processor microarchitecture and Intel NetBurst(R) microarchitecture. SSSE3 May generate Intel(R) SSSE3, SSE3, SSE2, and SSE instructions for Intel processors. Optimizes for the Intel(R) Core(TM) microarchitecture. SSE4.1 May generate Intel(R) SSE4 Vectorizing Compiler and Media Accelerator instructions for Intel processors. May generate Intel(R) SSSE3, SSE3, SSE2, and SSE instructions and it may optimize for Intel(R) 45nm Hi-k next generation Intel Core(TM) microarchitecture. SSE4.2 May generate Intel(R) SSE4 Efficient Accelerated String and Text Processing instructions supported by Intel(R) Core(TM) i7 processors. May generate Intel(R) SSE4 Vectorizing Compiler and Media Accelerator, Intel(R) SSSE3, SSE3, SSE2, and SSE instructions and it may optimize for the Intel(R) Core(TM) processor family. AVX May generate Intel(R) Advanced Vector Extensions (Intel(R) AVX), Intel(R) SSE4.2, SSE4.1, SSSE3, SSE3, SSE2, and SSE instructions for Intel(R) processors. Optimizes for a future Intel processor. CORE-AVX2 May generate Intel(R) Advanced Vector Extensions 2 (Intel(R) AVX2), Intel(R) AVX, SSE4.2, SSE4.1, SSSE3, SSE3, SSE2, and SSE instructions for Intel(R) processors. Optimizes for a future Intel processor. CORE-AVX-I May generate Intel(R) Advanced Vector Extensions (Intel(R) AVX), including instructions in Intel(R) Core 2(TM) processors in process technology smaller than 32nm, Intel(R) SSE4.2, SSE4.1, SSSE3, SSE3, SSE2, and SSE instructions for Intel(R) processors. Optimizes for a future Intel processor. SSSE3_ATOM May generate MOVBE instructions for Intel processors, depending on the setting of option /Qinstruction. May also generate Intel(R) SSSE3, SSE3, SSE2, and SSE instructions for Intel processors. Optimizes for the Intel(R) Atom(TM) processor and Intel(R) Centrino(R) Atom(TM) Processor Technology. /QxHost generate instructions for the highest instruction set and processor available on the compilation host machine /Qax[,,...] generate code specialized for processors specified by while also generating generic IA-32 instructions. includes one or more of the following: SSE2 May generate Intel(R) SSE2 and SSE instructions for Intel processors. SSE3 May generate Intel(R) SSE3, SSE2, and SSE instructions for Intel processors. SSSE3 May generate Intel(R) SSSE3, SSE3, SSE2, and SSE instructions for Intel processors. SSE4.1 May generate Intel(R) SSE4.1, SSSE3, SSE3, SSE2, and SSE instructions for Intel processors. SSE4.2 May generate Intel(R) SSE4.2, SSE4.1, SSSE3, SSE3, SSE2, and SSE instructions for Intel processors. AVX May generate Intel(R) Advanced Vector Extensions (Intel(R) AVX), Intel(R) SSE4.2, SSE4.1, SSSE3, SSE3, SSE2, and SSE instructions for Intel(R) processors. CORE-AVX2 May generate Intel(R) Advanced Vector Extensions 2 (Intel(R) AVX2), Intel(R) AVX, SSE4.2, SSE4.1, SSSE3, SSE3, SSE2, and SSE instructions for Intel(R) processors. CORE-AVX-I May generate Intel(R) Advanced Vector Extensions (Intel(R) AVX), including instructions in Intel(R) Core 2(TM) processors in process technology smaller than 32nm, Intel(R) SSE4.2, SSE4.1, SSSE3, SSE3, SSE2, and SSE instructions for Intel(R) processors. /arch: generate specialized code to optimize for processors indicated by as described below SSE2 May generate Intel(R) SSE2 and SSE instructions SSE3 May generate Intel(R) SSE3, SSE2 and SSE instructions SSSE3 May generate Intel(R) SSSE3, SSE3, SSE2 and SSE instructions SSE4.1 May generate Intel(R) SSE4.1, SSSE3, SSE3, SSE2 and SSE instructions SSE4.2 May generate Intel(R) SSE4.2, SSE4.1, SSSE3, SSE3, SSE2 and SSE instructions AVX May generate Intel(R) AVX, SSE4.2, SSE4.1, SSSE3, SSE3, SSE2 and SSE instructions IA32 generate x86/x87 generic code that is compatible with IA-32 architecture. Disables any default extended instruction settings and any previously set extended instruction settings. SSE same as /arch:IA32 /Qinstruction: Refine instruction set output for the selected target processor [no]movbe - Do/do not generate MOVBE instructions with SSSE3_ATOM (requires /QxSSSE3_ATOM) /GR[-] enable/disable C++ RTTI /Qcxx-features enable standard C++ features (/GX /GR) /EHa enable asynchronous C++ exception handling model /EHs enable synchronous C++ exception handling model /EHc assume extern "C" functions do not throw exceptions /Qsafeseh[-] Registers exceptions for safe exception handling (DEFAULT) /Gd make __cdecl the default calling convention /Gr make __fastcall the default calling convention /Gz make __stdcall the default calling convention /Qregcall make __regcall the default calling convention /hotpatch[:n] generate padding bytes for function entries to enable image hotpatching. If specified, use 'n' as the padding. Interprocedural Optimization (IPO) ---------------------------------- /Qip[-] enable(DEFAULT)/disable single-file IP optimization within files /Qipo[n] enable multi-file IP optimization between files /Qipo-c generate a multi-file object file (ipo_out.obj) /Qipo-S generate a multi-file assembly file (ipo_out.asm) /Qip-no-inlining disable full and partial inlining /Qip-no-pinlining disable partial inlining /Qipo-separate create one object file for every source file (overrides /Qipo[n]) /Qipo-jobs specify the number of jobs to be executed simultaneously during the IPO link phase Advanced Optimizations ---------------------- /Qunroll[n] set maximum number of times to unroll loops. Omit n to use default heuristics. Use n=0 to disable the loop unroller /Qunroll-aggressive[-] enables more aggressive unrolling heuristics /Qopt-args-in-regs: Determines whether calls to routines are optimized by passing arguments in registers instead of on the stack. keywords: none, seen(DEFAULT) /Qscalar-rep[-] enable(DEFAULT)/disable scalar replacement (requires /O3) /Qansi-alias[-] enable/disable(DEFAULT) use of ANSI aliasing rules optimizations; user asserts that the program adheres to these rules /Qansi-alias-check[-] enable(DEFAULT)/disable ANSI alias checking when using /Qansi-alias /Qcomplex-limited-range[-] enable/disable(DEFAULT) the use of the basic algebraic expansions of some complex arithmetic operations. This can allow for some performance improvement in programs which use a lot of complex arithmetic at the loss of some exponent range. /Qalias-const[-] enable/disable(DEFAULT) a heuristic stating that if two arguments to a function have pointer type, a pointer to const does not alias a pointer to non-const. Also known as the input/output buffer rule, it assumes that input and output buffer arguments do not overlap. /Qalias-args[-] enable(DEFAULT)/disable C/C++ rule that function arguments may be aliased; when disabling the rule, the user asserts that this is safe /Qopt-multi-version-aggressive[-] enables more aggressive multi-versioning to check for pointer aliasing and scalar replacement /Qopt-ra-region-strategy[:] select the method that the register allocator uses to partition each routine into regions routine - one region per routine block - one region per block trace - one region per trace loop - one region per loop default - compiler selects best option /Qvec[-] enables(DEFAULT)/disables vectorization /Qvec-guard-write[-] enables cache/bandwidth optimization for stores under conditionals within vector loops /Qvec-threshold[n] sets a threshold for the vectorization of loops based on the probability of profitable execution of the vectorized loop in parallel /Qopt-malloc-options:{0|1|2|3|4} specify malloc configuration parameters. Specifying a non-zero value will cause alternate configuration parameters to be set for how malloc allocates and frees memory /Qopt-jump-tables: control the generation of jump tables default - let the compiler decide when a jump table, a series of if-then-else constructs or a combination is generated large - generate jump tables up to a certain pre-defined size (64K entries) - generate jump tables up to in size use /Qopt-jump-tables- to lower switch statements as chains of if-then-else constructs /Qopt-block-factor: specify blocking factor for loop blocking /Qfreestanding compile in a freestanding environment where the standard library may not be present /Qopt-streaming-stores: specifies whether streaming stores are generated always - enables generation of streaming stores under the assumption that the application is memory bound auto - compiler decides when streaming stores are used (DEFAULT) never - disables generation of streaming stores /Qipp[:] link some or all of the Intel(R) Integrated Performance Primitives (Intel(R) IPP) libraries and bring in the associated headers common - link using the main libraries set. This is the default value when /Qipp is specified crypto - link using the main libraries set and the crypto library gen - link using the main libraries set and the fixed size generated functions library /Qmkl[:] link to the Intel(R) Math Kernel Library (Intel(R) MKL) and bring in the associated headers parallel - link using the threaded Intel(R) MKL libraries. This is the default when /Qmkl is specified sequential - link using the non-threaded Intel(R) MKL libraries cluster - link using the Intel(R) MKL Cluster libraries plus the sequential Intel(R) MKL libraries /Qtbb link to the Intel(R) Threading Building Blocks (Intel(R) TBB) libraries and bring in the associated headers /Qopt-subscript-in-range[-] assumes no overflows in the intermediate computation of the subscripts /Quse-intel-optimized-headers[-] take advantage of the optimized header files /Qcilk-serialize run a Cilk program as a C/C++ serialized program /Qvla[-] enable/disable(DEFAULT) Variable Length Arrays (C99 feature) /Qintel-extensions[-] enable(DEFAULT)/disable C/C++ language extensions such as array notation, Intel(R) Cilk(TM) Plus language extensions, and support for decimal floating-point types. /Qopt-matmul[-] replace matrix multiplication with calls to intrinsics and threading libraries for improved performance (DEFAULT at /O3 /Qparallel) /Qsimd[-] enables(DEFAULT)/disables vectorization using simd pragma /Qguide-opts: tells the compiler to analyze certain code and generate recommendations that may improve optimizations /Qguide-file[:] causes the results of guided auto-parallelization to be output to a file /Qguide-file-append[:] causes the results of guided auto-parallelization to be appended to a file /Qguide[:] lets you set a level (1 - 4) of guidance for auto-vectorization, auto-parallelization, and data transformation (DEFAULT is 4 when the option is specified) /Qguide-data-trans[:] lets you set a level (1 - 4) of guidance for data transformation (DEFAULT is 4 when the option is specified) /Qguide-par[:] lets you set a level (1 - 4) of guidance for auto-parallelization (DEFAULT is 4 when the option is specified) /Qguide-vec[:] lets you set a level (1 - 4) of guidance for auto-vectorization (DEFAULT is 4 when the option is specified) /Qopt-mem-layout-trans[:] controls the level of memory layout transformations performed by the compiler 0 - disable memory layout transformations (same as /Qopt-mem-layout-trans-) 1 - enable basic memory layout transformations 2 - enable more memory layout transformations (DEFAULT when the option is specified) 3 - enable aggressive memory layout transformations Profile Guided Optimization (PGO) --------------------------------- /Qprof-dir specify directory for profiling output files (*.dyn and *.dpi) /Qprof-src-root specify project root directory for application source files to enable relative path resolution during profile feedback on sources below that directory /Qprof-src-root-cwd specify the current directory as the project root directory for application source files to enable relative path resolution during profile feedback on sources below that directory /Qprof-src-dir[-] specify whether directory names of sources should be considered when looking up profile records within the .dpi file /Qprof-file specify file name for profiling summary file /Qprof-data-order[-] enable/disable(DEFAULT) static data ordering with profiling /Qprof-func-order[-] enable/disable(DEFAULT) function ordering with profiling /Qprof-gen[:keyword] instrument program for profiling. Optional keyword may be srcpos or globdata /Qprof-gen- disable profiling instrumentation /Qprof-use[:] enable use of profiling information during optimization weighted - invokes profmerge with -weighted option to scale data based on run durations [no]merge - enable(default)/disable the invocation of the profmerge tool /Qprof-use- disable use of profiling information during optimization /Qcov-gen instrument program for profiling /Qcov-dir specify directory for profiling output files (*.dyn and *.dpi) /Qcov-file specify file name for profiling summary file /Qfnsplit[-] enable/disable function splitting (enabled with /Qprof-use) /Qopt-prefetch[:n] enable levels of prefetch insertion, where 0 disables. n may be 0 through 4 inclusive. Default is 2. /Qopt-prefetch- disable(DEFAULT) prefetch insertion. Equivalent to /Qopt-prefetch:0 /Qinstrument-functions[-] determine whether function entry and exit points are instrumented /Qprof-hotness-threshold: set the hotness threshold for function grouping and function ordering val indicates percentage of functions to be placed in hot region. This option requires /Qprof-use and /Qprof-func-order /Qprof-value-profiling:[,,...] limit value profiling none - inhibit all types of value profiling nodivide - inhibit value profiling of non-compile time constants used in division or remainder operations noindcall - inhibit value profiling of function addresses at indirect call sites /Qprofile-functions enable instrumentation in generated code for collecting function execution time profiles /Qprofile-loops: enable instrumentation in generated code for collecting loop execution time profiles inner - instrument inner loops outer - instrument outer loops all - instrument all loops /Qprofile-loops-report: Control the level of instrumentation inserted for reporting loop execution profiles 1 - report loop times 2 - report loop times and iteration counts Optimization Reports -------------------- /Qvec-report[n] control amount of vectorizer diagnostic information n=0 no diagnostic information n=1 indicate vectorized loops (DEFAULT when enabled) n=2 indicate vectorized/non-vectorized loops n=3 indicate vectorized/non-vectorized loops and prohibiting data dependence information n=4 indicate non-vectorized loops n=5 indicate non-vectorized loops and prohibiting data dependence information /Qopt-report[:n] generate an optimization report to stderr 0 disable optimization report output 1 minimum report output 2 medium output (DEFAULT when enabled) 3 maximum report output /Qopt-report-file: specify the filename for the generated report /Qopt-report-phase: specify the phase that reports are generated against /Qopt-report-routine: reports on routines containing the given name /Qopt-report-help display the optimization phases available for reporting /Qtcheck[:mode] enable analysis of threaded applications (requires Intel(R) Thread Checker; cannot be used with compiler alone) tci - instruments a program to perform a thread-count-independent analysis tcd - instruments a program to perform a thread-count-dependent analysis (DEFAULT when mode is not used) api - instruments a program at the api-imports level /Qtcollect[:] inserts instrumentation probes calling the Intel(R) Trace Collector API. The library .lib is linked in the default being VT.lib (requires Intel(R) Trace Collector) /Qtcollect-filter:file Enable or disable the instrumentation of specified functions. (requires Intel(R) Trace Collector) OpenMP* and Parallel Processing ------------------------------ /Qopenmp enable the compiler to generate multi-threaded code based on the OpenMP* directives (same as /openmp) /Qopenmp-stubs enables the user to compile OpenMP programs in sequential mode. The OpenMP directives are ignored and a stub OpenMP library is linked (sequential) /Qopenmp-report{0|1|2} control the OpenMP parallelizer diagnostic level /Qopenmp-lib: choose which OpenMP library version to link with compat - use the Microsoft compatible OpenMP run-time libraries (DEFAULT) /Qopenmp-task: choose which OpenMP tasking model to support omp - support OpenMP 3.0 tasking (DEFAULT) intel - support Intel taskqueuing /Qopenmp-threadprivate: choose which threadprivate implementation to use compat - use the Microsoft compatible thread local storage legacy - use the Intel compatible implementation (DEFAULT) /Qparallel enable the auto-parallelizer to generate multi-threaded code for loops that can be safely executed in parallel /Qpar-report{0|1|2|3} control the auto-parallelizer diagnostic level /Qpar-threshold[n] set threshold for the auto-parallelization of loops where n is an integer from 0 to 100 /Qpar-runtime-control[n] Control parallelizer to generate runtime check code for effective automatic parallelization. n=0 no runtime check based auto-parallelization n=1 generate runtime check code under conservative mode (DEFAULT when enabled) n=2 generate runtime check code under heuristic mode n=3 generate runtime check code under aggressive mode /Qpar-schedule-static[:n] Specifies a scheduling algorithm for DO loop iteration. Divides iterations into contiguous pieces. Size n if specified, equal sized pieces if not. /Qpar-schedule-static_balanced[:n] Divides iterations into even-sized chunks. Size n if specified, equal sized pieces if not. /Qpar-schedule-static-steal[:n] Divides iterations into even-sized chunks, but allows threads to steal parts of chunks from neighboring threads /Qpar-schedule-dynamic[:n] Specifies a scheduling algorithm for DO loop iteration. Assigns iterations to threads in chunks dynamically. Chunk size is n iterations if specified, otherwise 1. /Qpar-schedule-guided[:n] Specifies a scheduling algorithm for DO loop iteration. Indicates a minimum number of iterations. If specified, n is the minimum number, otherwise 1. /Qpar-schedule-guided-analytical[:n] Divides iterations by using exponential distribution or dynamic distributions. /Qpar-schedule-runtime Specifies a scheduling algorithm for DO loop iteration. Defers the scheduling decision until runtime. /Qpar-schedule-auto Lets the compiler or run-time system determine the scheduling algorithm. /Qpar-adjust-stack perform fiber-based main thread stack adjustment /Qpar-affinity=[,...][,][,] tune application performance by setting different thread affinity /Qpar-num-threads= tune application performance by setting different number of threads /Qparallel-source-info[:n] enable(DEFAULT)/disable the emission of source location information for parallel code generation with OpenMP and auto-parallelization 0 - disable (same as /Qparallel-source-info-) 1 - emit routine name and line information (DEFAULT) 2 - emit path, file, routine name and line information Floating Point -------------- /fp: enable floating point model variation except[-] - enable/disable floating point semantics fast[=1|2] - enables more aggressive floating point optimizations precise - allows value-safe optimizations source - enables intermediates in source precision strict - enables /fp:precise /fp:except, disables contractions and enables pragma stdc fenv_access double - rounds intermediates in 53-bit (double) precision extended - rounds intermediates in 64-bit (extended) precision /Qfp-speculation: enable floating point speculations with the following conditions: fast - speculate floating point operations (DEFAULT) safe - speculate only when safe strict - same as off off - disables speculation of floating-point operations /Qpc32 set internal FPU precision to 24 bit significand /Qpc64 set internal FPU precision to 53 bit significand (DEFAULT) /Qpc80 set internal FPU precision to 64 bit significand /Qprec improve floating-point precision (speed impact less than /Op) /Qprec-sqrt[-] determine if certain square root optimizations are enabled /Qprec-div[-] improve precision of FP divides (some speed impact) /Qfast-transcendentals[-] generate a faster version of the transcendental functions /Qfp-port[-] round fp results at assignments and casts (some speed impact) /Qfp-stack-check enable fp stack checking after every function/procedure call /Qrcd rounding mode to enable fast float-to-int conversions /Qftz[-] enable/disable flush denormal results to zero /Qfma[-] enable/disable the combining of floating point multiplies and add/subtract operations /Qfp-trap:[,,...] control floating point traps at program start. can be of the following values [no]divzero - [Do not] trap on division by zero [no]inexact - [Do not] trap on inexact result [no]invalid - [Do not] trap on invalid operation [no]overflow - [Do not] trap on overflow [no]underflow - [Do not] trap on underflow [no]denormal - [Do not] trap on denormal all - enable trap on all of the above none - trap on none of the above common - trap on most commonly used IEEE traps (invalid, division by zero, overflow) /Qfp-trap-all:[,,...] control floating point traps in every routine. can be of the values specified in /Qfp-trap Inlining -------- /Ob control inline expansion: n=0 disable inlining n=1 inline functions declared with __inline, and perform C++ inlining n=2 inline any function, at the compiler's discretion /Qinline-min-size: set size limit for inlining small routines /Qinline-min-size- no size limit for inlining small routines /Qinline-max-size: set size limit for inlining large routines /Qinline-max-size- no size limit for inlining large routines /Qinline-max-total-size: maximum increase in size for inline function expansion /Qinline-max-total-size- no size limit for inline function expansion /Qinline-max-per-routine: maximum number of inline instances in any function /Qinline-max-per-routine- no maximum number of inline instances in any function /Qinline-max-per-compile: maximum number of inline instances in the current compilation /Qinline-max-per-compile- no maximum number of inline instances in the current compilation /Qinline-factor: set inlining upper limits by n percentage /Qinline-factor- do not set set inlining upper limits /Qinline-forceinline treat inline routines as forceinline /Qinline-dllimport allow(DEFAULT)/disallow functions declared __declspec(dllimport) to be inlined /Qinline-calloc directs the compiler to inline calloc() calls as malloc()/memset() Output, Debug, PCH ------------------ /c compile to object (.obj) only, do not link /S compile to assembly (.asm) only, do not link /FAs produce assembly file with optional source annotations /FAc produce assembly file with optional code annotations /FA produce assembly file /Fa[file] name assembly file (or directory for multiple files; i.e. /FaMYDIR\) /Fo[file] name object file (or directory for multiple files; i.e. /FoMYDIR\) /Fe[file] name executable file or directory /Fp[file] name precompiled header file /Zi, /ZI, /Z7 produce symbolic debug information in object file (implies /Od when another optimization option is not explicitly set) /debug[:keyword] enable debug information and control output of enhanced debug information keywords: all, full, minimal, none, [no]inline-debug-info parallel [no]expr-source-pos /Qtrapuv trap uninitialized variables /RTCu report use of variable that was not initialized /RTC1 equivalent to /RTCsu /RTCs enable stack frame runtime checks /RTCc enable checks for converting to smaller types /Qmap-opts enable option mapping tool /Yc[file] create precompiled header file /Yu[file] use precompiled header file /Y- ignore all other precompiled header file options /Qpchi[-] enable(DEFAULT)/disable PCH coexistence, to reduce build time /FD generate file dependencies /FR[file] name extended source browser file Preprocessor ------------ /QA[] create an assertion having value /C do not strip comments /D[{=|#}] define macro /U remove predefined macro /E preprocess to stdout /EP preprocess to stdout, omitting #line directives /EP /P preprocess to file, omitting #line directives /P preprocess to file /u remove all predefined macros /FI force inclusion of file /I add directory to include file search path /X remove standard directories from include file search path /QH print include file order /QM generate makefile dependency information /QMM similar to /QM, but do not include system header files /QMG similar to /QM, but treat missing header files as generated files /QMD preprocess and compile, generating output file containing dependency information ending with extension .d /QMMD similar to /QMD, but do not include system header files /QMF generate makefile dependency information in file (must specify /QM or /QMM) /QMT change the default target rule for dependency generation /QdM output macro definitions in effect after preprocessing (use with /E) /QdD same as /QdM, but output #define directives in preprocessed source /QdN same as /QdD, but #define directives contain only macro names Component Control ----------------- /Qoption,, pass options to tool specified by /Qlocation,, set as the location of tool specified by Language -------- /Qstd= enable language support for , as described below c99 enable C99 support for C programs c++0x enable preliminary support for some C++0x features /Za disable Microsoft Visual C++ compiler language extensions /Zg enable the generation of function prototypes /Zp[n] specify alignment constraint for structures where n=1,2,4,8,16. 16 is the default /Zc:arg1[,arg2] specify standard conformance for the following arguments: forScope[-] enforce standard compliance in for loop scope wchar_t[-] specify that wchar_t is a native data type auto[-] enforce compliance to the new standard meaning for auto /Zs perform syntax and semantic checking only (no object file produced) /vd{0|1} disable or enable hidden vtordisp field in C++ objects /vm[x] specify representation method for C++ pointers to members /J change default char type to unsigned /noBool suppresses the C++ bool, true, and false keywords /Qtemplate-depth[n] control the depth in which recursive templates are expanded /Qrestrict[-] enable/disable the 'restrict' keyword for disambiguating pointers /Qhelp-pragma output supported pragmas and their usage syntax Compiler Diagnostics -------------------- /w disable all warnings /W0 print only errors /W1, /W2, /W3 print only errors and warnings (DEFAULT) /W4, /Wall print errors, warnings and most remarks /W5 print all errors, warnings and remarks /WL print brief one-line diagnostics /WX force warnings to be reported as errors /Werror-all force warnings and currently enabled remarks to be reported as errors /Wcheck enable more strict diagnostics /Wport issue portability diagnostics /Qeffc++ enable effective C++ diagnostic warnings /Qwo[,,...] issue diagnostics L1 through LN only once /Wp64 print diagnostics for 64-bit porting /noerror-limit set no maximum number on error-level or fatal-level error messages /Qdiag-enable:[,,...] enable the specified diagnostics or diagnostic groups /Qdiag-disable:[,,...] disable the specified diagnostics or diagnostic groups where may be individual diagnostic numbers or group names. where group names include: sc[n] - perform source code analysis: n=1 for critical errors, n=2 for all errors and n=3 for all errors and warnings sc-include - perform source code analysis on include files sc-parallel[n] - perform analysis of parallelization in source code: n=1 for critical errors, n=2 for errors, n=3 for all errors and warnings thread - enable diagnostics to aid in thread-enabling source port-linux - enable diagnostics for Microsoft extensions that may cause errors when porting to Linux/MacOS warn - diagnostic messages that have "warning" severity level. error - diagnostic messages that have "error" severity level. remark - diagnostic messages that are remarks or comments. vec - diagnostic messages issued by the vectorizer. par - diagnostic messages issued by the auto-parallelizer openmp - diagnostic messages issued by the OpenMP* parallelizer. cpu-dispatch Specifies the CPU dispatch remarks. /Qdiag-error:[,,...] output the specified diagnostics or diagnostic groups as errors /Qdiag-warning:[,,...] output the specified diagnostics or diagnostic groups as warnings /Qdiag-remark:[,,...] output the the specified diagnostics or diagnostic groups as remarks /Qdiag-dump display the currently enabled diagnostic messages to stdout or to a specified diagnostic output file. /Qdiag-sc-dir: directory where diagnostics from Static security analysis are created, rather than current working directory. /Qdiag-file[:] where diagnostics are emitted to. Not specifying this causes messages to be output to stderr /Qdiag-file-append[:] where diagnostics are emitted to. When already exists, output is appended to the file /Qdiag-id-numbers[-] enable(DEFAULT)/disable the diagnostic specifiers to be output in numeric form /Qdiag-error-limit: specify the maximum number of errors emitted /Qdiag-once:[,,...] issue diagnostics v1 through vN only once Miscellaneous ------------- /nologo do not display compiler version information /Qsox[:[,keyword]] enable saving of compiler options, version and additional information in the executable. Use /Qsox- to disable(DEFAULT) profile - include profiling data inline - include inlining information /Qsave-temps store the intermediate files in current directory and name them based on the source file. Only saves files that are generated by default /Tc compile file as C source /Tp compile file as C++ source /TC compile all source or unrecognized file types as C source files /TP compile all source or unrecognized file types as C++ source files /showIncludes emit include file names /Qmultibyte-chars[-] provide support for multi-byte characters /MP[] create multiple processes that can be used to compile large numbers of source files at the same time /bigobj generate objects with increased address capacity Data ---- /Zp[n] specify alignment constraint for structures (n=1,2,4,8,16 /Zp16 DEFAULT) /GS enable overflow security checks. /GS- disables (DEFAULT) /GF enable read-only string pooling optimization /GA optimize for Windows application (assume .exe) /GT enable fiber-safe thread local storage /Qsfalign8 may align stack for functions with 8 or 16 byte vars (DEFAULT) /Qsfalign16 may align stack for functions with 16 byte vars /Qsfalign force stack alignment for all functions /Qsfalign- disable stack alignment for all functions /Qfnalign[-] align the start of functions to an optimal machine-dependent value. When disabled (DEFAULT) align on a 2-byte boundary /Qfnalign:[2|16] align the start of functions on a 2 (DEFAULT) or 16 byte boundary /Qglobal-hoist[-] enable(DEFAULT)/disable external globals are load safe /Qkeep-static-consts[-] enable/disable(DEFAULT) emission of static const variables even when not referenced /Qlong-double enable 80-bit 'long double' /Qnobss-init disable placement of zero-initialized variables in BSS (use DATA) /Qzero-initialized-in-bss[-] put explicitly zero initialized variables into the DATA section instead of the BSS section /Qimf-absolute-error:value[:funclist] define the maximum allowable absolute error for math library function results /Qimf-accuracy-bits:bits[:funclist] define the relative error, measured by the number of correct bits, for math library function results /Qimf-arch-consistency:value[:funclist] ensures that the math library functions produce consistent results across different implementations of the same architecture /Qimf-max-error:ulps[:funclist] defines the maximum allowable relative error, measured in ulps, for math library function results /Qimf-precision:value[:funclist] defines the accuracy (precision) for math library functions Compatibility ------------- /Qms allow compilation of certain dubious sources n=0 disable Microsoft compatibility bugs n=1 enable most Microsoft compatibilities (DEFAULT) n=2 full Microsoft compatibility /Qvc enable compatibility with a specific Microsoft Visual C++ version 8 - Visual Studio 2005 compatibility 9 - Visual Studio 2008 compatibility 10 - Visual Studio 2010 compatibility Linking/Linker -------------- /link specify that all options following '/link' are for the linker /F set the stack reserve amount specified to the linker /LD[d] produce a DLL instead of an EXE ('d' = debug version) /MD[d] use dynamically-loaded, multithread C runtime /MT[d] use statically-linked, multithread C runtime (DEFAULT with Microsoft Visual Studio 2005 and later) /ML[d] use statically-linked, single thread C runtime (only valid in Microsoft Visual Studio 2003 environment) /Zl omit library names from object file Deprecated Options ------------------ /Qinline-debug-info use /debug:inline-debug-info /Gf use /GF /ML[d] upgrade to /MT[d] /Quse-asm No replacement /Qprof-genx use /Qprof-gen:srcpos /Qdiag-enable:sv[] use /Qdiag-enable:sc[] /Qdiag-enable:sv-include use /Qdiag-enable:sc-include /Qdiag-sv use /Qdiag-enable:sc[] /Qdiag-sv-error use /Qdiag-disable:warning /Qdiag-sv-include use /Qdiag-enable:sc-include /Qdiag-sv-level No replacement /Qdiag-sv-sup use /Qdiag-disable:[,,...] /Qopenmp-link No replacement /Qopenmp-profile No replacement /Qtprofile No replacement /arch:SSE use /arch:IA32 /QxK upgrade to /arch:SSE2 /QaxK upgrade to /arch:SSE2 /QxW use /arch:SSE2 /QaxW use /arch:SSE2 /QxN use /QxSSE2 /QaxN use /QaxSSE2 /QxP use /QxSSE3 /QaxP use /QaxSSE3 /QxT use /QxSSSE3 /QaxT use /QaxSSSE3 /QxS use /QxSSE4.1 /QaxS use /QaxSSE4.1 /QxH use /QxSSE4.2 /QaxH use /QaxSSE4.2 /QxO use /arch:SSE3 /Qvc7.1 No replacement /QIfist use /Qrcd /QxSSE3_ATOM use /QxSSSE3_ATOM /Op use /fp:precise /Fr use /FR /GX use /EHsc /GZ use /RTC1 /H No replacement /QA- use /u /Qc99 use /Qstd=c99 /Qwn use /Qdiag-error-limit: /Qwd use /Qdiag-disable /Qwe use /Qdiag-error /Qww use /Qdiag-warning /Qwr use /Qdiag-remark /Qwo use /Qdiag-once /Yd use /Zi, /ZI, /Z7 /Zd use /debug:minimal /Ze No replacement /Zg No replacement /help, /? [category] print full or category help message Valid categories include advanced - Advanced Optimizations codegen - Code Generation compatibility - Compatibility component - Component Control data - Data deprecated - Deprecated Options diagnostics - Compiler Diagnostics float - Floating Point help - Help inline - Inlining ipo - Interprocedural Optimization (IPO) language - Language link - Linking/Linker misc - Miscellaneous opt - Optimization output - Output pgo - Profile Guided Optimization (PGO) preproc - Preprocessor reports - Optimization Reports openmp - OpenMP and Parallel Processing Copyright (C) 1985-2012, Intel Corporation. All rights reserved. * Other names and brands may be claimed as the property of others.