Intel(R) 8.1 C++ Compiler for Windows IA32 Option List ------------------------------------------------------ Performance ----------- /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 high-level optimizations /Ox enable maximum optimizations(same as /O2 without /Gfy) /Od disable optimizations; useful for selective optimizations (i.e. /Od /Og) /fast enable /QxP /O3 /Qipo /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 processors specified by while also generating generic IA-32 code. includes one or more of the following characters: K Intel Pentium III and compatible Intel processors W Intel Pentium 4 and compatible Intel processors N Intel Pentium 4 and compatible Intel processors P Intel Pentium 4 processors with SSE3 extensions B Intel Pentium M and compatible Intel processors /Qx generate specialized code to run exclusively on processors 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) /Qcxx_features enables standard C++ features without disabling Microsoft features and within the bounds of what is provided in the Microsoft headers and libraries. Same as -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 /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 .exe) /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[n] enable multi-file IP optimizations (between files) default for n is 1. /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) /Qipo_separate create one object file for every source file (overrides /Qipo[n]) 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) /Qfpstkchk enable fp stack checking after every function/procedure call /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 /GH call __pexit in function epilog; for custom user profiling /Qprefetch[-] enable(DEFAULT)/disable prefetch insertion /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 /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 /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. Language -------- /J change default char type to unsigned /noBool disable 'bool' keyword /Qc99[-] enable/disable(default) C99 support for C programs /Qms[n] allow compilation of certain dubious sources n=0 disable Microsoft compatibility bugs n=1 enable most Microsoft compatibilities (DEFAULT) n=2 full Microsoft compatibility /Qmspp[-] enable(DEFAULT)/disable Microsoft Visual C++ 6.0 Processor Pack binary 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 memb Portability options for CPU2000: ------------------------------- 176.gcc: -Dalloca=_alloca : so as to use the built-in optimized alloca -Fn : 176.gcc uses alloca and this options tells the linker to pre-allocate n bytes of stack. The default amount of stack allocated is not enough and 176.gcc crashes with a run-time error 178.galgel: -FI : Fixed-format F90 source code. -F32000000 : Same as with 176.gcc, pre-allocates a 32MB stack 186.crafty: -DNT_i386 : Specifies that it is a Windows NT Intel processor-based system which makes the compiler use "long long" as the 64-bit variable that 186.crafty needs. 253.perlbmk: -DSPEC_CPU2000_NTOS : This enables the code changes for porting to Windows get included -DPERLDLL : On Windows, we need a perl.exe instead of a perl.exe and perl.dll. This pre-define ensures that the changes necessary to get a single, UNIX-style executible without getting the indirect calls that can cause a 10% performance degradation. This allows the Windows-based executible to be as close as possible to the Unix-based one. -MT : Use the static multi-threaded library else it will not compile. 254.gap: -DSYS_HAS_CALLOC_PROTO : -DSYS_HAS_MALLOC_PROTO : These two pre-defines tell of the existence of malloc and calloc prototypes.