Intel(R) C++ Compiler Help ========================== 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 -------------------- Performance ----------- /O1 optimize for maximum speed, but disable some optimizations which increase code size for a small speed benefit: /Gfsy /Ob1gysi- /O2 optimize for maximum speed (DEFAULT): /Gfsy /Ob1gyti /O3 optimize for maximum speed and enable high-level optimizations /Ox enable maximum optimizations: /Gs /Ob1gyti (same as /O2 without /Gfy) /Od disable optimizations; useful for selective optimizations (i.e. /Od /Og) /Ob control inline expansion: n=0 disables inlining n=1 inline functions declared with __inline, and perform C++ inlining n=2 inline any function, at the compiler's discretion (same as /Qip) /Og enable global optimizations /Oi[-] enable/disable inline expansion of intrinsic functions /Op[-] enable/disable better floating-point precision /Os enable speed optimizations, but disable some optimizations which increase code size for small speed benefit (overrides /Ot) /Ot enable speed optimizations (overrides /Os) /Oy[-] enable/disable using EBP as general purpose register (no frame pointer) /Oa[-] assume no aliasing in program /Ow[-] assume no aliasing within functions, but assume aliasing across calls /G5 optimize for Pentium(R) processor /G6 optimize for Pentium(R) Pro, Pentium(R) II, and Pentium(R) III processors /G7 optimize for Pentium(R) 4 processor (DEFAULT) /GB same as /G6 /Qax generate code specialized for processor extensions specified by while also generating generic IA-32 code. includes one or more of the following characters: i Pentium Pro and Pentium II processor instructions M MMX(TM) instructions K streaming SIMD extensions W Pentium(R) 4 New Instructions /Qx generate specialized code to run exclusively on processors supporting the extensions indicated by as described above. /arch:{SSE|SSE2} same as /QxK and /QxW respectively /GR[-] enable/disable C++ RTTI /GX[-] enable/disable C++ exception handling (/GX is same as /EHsc) /EHa enable asynchronous C++ exception handling model /EHs enable synchronous C++ exception handling model /EHc assume extern "C" functions do not throw exceptions /Gd make __cdecl the default calling convention /Gr make __fastcall the default calling convention /Gz make __stdcall the default calling convention /Ge enable stack checks for all functions /Gs[n] disable stack checks for functions with less than n bytes of locals /Gf enable string pooling optimization /GF enable read-only string pooling optimization /Gy separate functions for the linker (COMDAT) /GA optimize for Windows application (assume single-threaded app) /GS enable overflow security checks /GT enable fiber-safe thread local storage Advanced Performance -------------------- Enable and specify the scope of Interprocedural (IP) Optimizations: /Qip enable single-file IP optimizations (within files, same as /Ob2) /Qipo enable multi-file IP optimizations (between files) /Qipo_c generate a multi-file object file (ipo_out.obj) /Qipo_S generate a multi-file assembly file (ipo_out.asm) Modify the behavior of IP: /Qip_no_inlining disable full and partial inlining (requires /Qip or /Qipo) /Qip_no_pinlining disable partial inlining (requires /Qip or /Qipo) /Qipo_obj force generation of real object files (requires /Qipo) Other Advanced Performance Options: /Qunroll[n] set maximum number of times to unroll loops. Omit n to use default heuristics. Use n=0 to disable loop unroller. /Qprof_dir specify directory for profiling output files (*.dyn and *.dpi) /Qprof_file specify file name for profiling summary file /Qprof_gen[x] instrument program for profiling; with the x qualifier, extra information is gathered for use with the PROFORDER tool /Qprof_use enable use of profiling information during optimization /Qfnsplit[-] enable/disable function splitting (enabled with /Qprof_use) /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 /QIfist[-] enable/disable(DEFAULT) fast float-to-int conversions (*M) /Qrcd same as /QIfist /Qprec improve floating-point precision (speed impact less than /Op) /Qprec_div improve precision of FP divides (some speed impact) /Qfp_port round fp results at assignments & casts (some speed impact) /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 /Gh call __penter in function prolog; for custom user profiling /Qvec_report[n] control amount of vectorizer diagnostic information: n=0 no diagnostic information n=1 indicate vectorized loops (DEFAULT) 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 generate an optimization report to stderr /Qopt_report_file specify the filename for the generated report /Qopt_report_level[level] specify the level of report verbosity (min|med|max) /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 generate instrumentation to detect multi-threading bugs (requires Intel(R) Threading Tools; cannot be used with compiler alone) /Qopenmp enable the compiler to generate multi-threaded code based on the OpenMP directives /Qopenmp_profile link with instrumented OpenMP runtime library to generate OpenMP profiling information for use with the OpenMP component of the VTune(TM) Performance Analyzer /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 /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 /Qansi_alias[-] enable/disable(DEFAULT) use of ANSI aliasing rules in optimizations; user asserts that the program adheres to these rules /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. Output, Debug, PCH ------------------ /c compile to object (.obj) only, do not link /S compile to assembly (.asm) only, do not link (*I) /FA[cs] produce assembly file with optional code or source annotations /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. /FoMYDIR2\) /Fe name executable file or directory /Fm[file] name map file or directory /Fp[file] name precompiled header file /Yc[hfile] create precompiled header file /Yu[hfile] use precompiled header file /YX enable automatic precompiled header file creation/usage /Y- ignore all other precompiled header file options /Qpchi[-] enable(DEFAULT)/disable PCH coexistence, to reduce build time /Qpch_compress specify compression of PCH files /Qpch_mem preallocate megabytes of memory for PCH creation /FD generate file dependencies /Fr[file] name source browser file (excludes local variable info) /FR[file] name extended source browser file /Quse_asm[-] enable/disable(DEFAULT) use of assembler to produce object files /GZ detect "release build" runtime errors in "debug build" code /RTC1 equivalent to /GZ or /RTCsu /RTCs enable stack frame runtime checks /RTCu report use of variable that was not initialized /Zd produce line number information in object file /Zi, /Z7 produce symbolic debug information in object file /ZI same as /Zi /Qinline_debug_info preserve the source position of inlined code instead of assigning the call-site source position to inlined code Preprocessor ------------ /C don't strip comments /D[{=|#}] define macro /QA[(val)] create an assertion 'name' having value 'val' /QA[-] remove all predefined macros /E preprocess to stdout /EP preprocess to stdout, omitting #line directives /EP /P preprocess to file, omitting #line directives /P preprocess to file /FI force inclusion of file /I add directory to include file search path /QH print include file order /QM generate makefile include dependencies; don't compile /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) /QMX generate dependency file ending with extension .o.dep containing information used for the Intel wb tool /QdM output macro definitions in effect after preprocessing (use with -E) /U remove predefined macro /u remove all predefined macros /X remove standard directories from include file search path Component Control ----------------- /Qoption,, pass options to tool specified by /Qlocation,, set as the location of tool specified by Language -------- /J change default char type to unsigned /noBool disable 'bool' keyword /Qc99[-] enable/disable(default) C99 support for C programs /Qms allow compilation of certain dubious sources /Qmspp[-] enable(DEFAULT)/disable Microsoft Visual C++ 6.0 Processor Pack binary compatibility /Qvc5 enable Visual C++ 5.0 compatibility /Qvc6 enable Visual C++ 6.0 compatibility (DEFAULT) /Qvc7 enable Visual Studio .NET 2002 compatibility /Qvc7.1 enable Visual Studio .NET 2003 compatibility /Qrestrict[-] enable/disable the 'restrict' keyword for disambiguating pointers /Za disable Microsoft Visual C++ compiler language extensions /Ze enable Microsoft Visual C++ compiler language extensions (DEFAULT) /Zg enable the generation of function prototypes /Zp[n] specify alignment constraint for structures (n=1,2,4,8,16) /Zs check source syntax only, do not compile /Zc:arg1[,arg2] specify standard conformance for the following arguments: forScope enforce standard behavior for initializers of for loops wchar_t specify that wchar_t is a native data type /vd{0|1} disable or enable hidden vtordisp field in C++ objects /vm specify representation method for C++ pointers to members 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 remarks /WX force warnings to be reported as errors /Wport issue portability diagnostics /Qwn print a maximum of n errors /Qwd[,,...] disable diagnostics L1 through LN /Qwe[,,...] change severity of diagnostics L1 through LN to error /Qww[,,...] change severity of diagnostics L1 through LN to warning /Qwr[,,...] change severity of diagnostics L1 through LN to remark Miscellaneous ------------- /?, /help print this help message /H limit length of external symbols to n characters /nologo do not display compiler version information /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 /V embed version text in executable /Qsox[-] enable/disable(DEFAULT) saving of compiler options and version in the executable /Qlong_double enable 80-bit 'long double' /Qnobss_init disable placement of zero-initialized variables in BSS (use DATA) /QI0f[-] enable/disable patch for Pentium processor 0f erratum (*M) Linking/Linker -------------- /link specify that all following options are for the linker /F set the stack reserve amount specified to the linker /LD, /LDd produce a DLL instead of an EXE ('d' = debug version) /MD, /MDd use dynamically-loaded, multithread C runtime /ML, /MLd use statically-loaded, single thread C runtime (/ML is DEFAULT) /MT, /MTd use statically-loaded, multithread C runtime /Zl omit library names from object file Copyright (C) 1985-2004, Intel Corporation. All rights reserved. * Other brands and names are the property of their respective owners.