SPEC CPU95 NT/Alpha Switch Disclosure Digital Equipment Corporation 2 Feb 1998 This switch disclosure contains all switches used in Windows NT/Alpha submissions through Feb 1998. Switches are given in alphabetical order rather than by product or benchmark (it is hoped that this order will be useful to the reader). The collating sequence ignores upper/lower case, hyphens, and the presence of "no" for negation. (So if you're looking for "-notransform_loops", try looking under "-transform_loops".) In a few cases, switches documented below are not actually entered, but are generated by other switches. /ag=a (KAP Fortran 77) Perform aggressive optimization, pad common blocks and subroutine-local memory to avoid cache line collisions. /ag=ab (KAP Fortran 77) Redefine the array indices of arrays when doing so would cause cache utilization benefits. -align:dcommons (Visual Fortran) COMMON fields use natural alignment -align:records (Visual Fortran) RECORD fields use natural alignment -arch:pca56 (SPIKE) Optimize for the Alpha 21164PC. -arch:ev56 (SPIKE) Optimize for the Alpha 21164 with byte/word instructions. -noarclimit (KAP Fortran 77) Specifies unlimited data dependence analysis. -assume:noaccuracy_sensitive (Visual Fortran) Allow expression re-ordering -nocompile (SPIKE) Do not invoke the compiler, just invoke spike. -debug (linker) Preserve debug information. -debugtype:fixup (linker) Preserve relocation records. -fast (Visual Fortran) Generates most-optimized code. This switch is equivalent to -assume:noaccuracy_sensitive -align:records -align:dcommons -math_library:fast -fast (SPIKE) Enable -hco, register allocation, copy elimination, and whole-program inlining. -Fe%binary% (VISUAL C++) Name the output file. -fixed:no (Linker) Allow program to be relocated. /fkapargs="switch" (KAP Fortran 77) Pass the switches between apostrophes to the KAP optimizer. /fuse (KAP Fortran 77) Perform loop fusion. /fuselevel=1 or 2 (KAP Fortran 77) Perform more aggressive fusion (0=default). -GF (Visual C++) Enable read-only-string pooling. -Gs (Visual C++) Disable stack limit checks. -Gy (Visual C++) Allow the compiler to package individual functions in the form of packaged functions (COMDATs). -hco (SPIKE) Apply hot/cold optimizations, which partitions routines into hot and cold parts based on profile feedback and shrinks the hot part to avoid un-needed instructions. -heaplimit=500 (KAP Fortran 77) KAP may require large amounts of memory in order to process your source code. The heaplimit switch specifies the maximum size in megabytes that the KAP heap can grow. -inline:speed (Visual Fortran) Provides inline expansion of function calls even when doing so may significantly increase the size of the program. /ipa (KAP Fortran 77) Do interprocedural analysis. -ipa_depth=10 (KAP Fortran 77) The ipa_depth switch sets the maximum level of subprogram nesting which kapf will attempt to analyze. /ipa_optimize=2 (KAP Fortran 77) Enables a group of interprocedural analysis options useful for optimizing large codes, including -ipa, -ipa_loop_level=3, -ipa_depth=10, -heaplimit=500 and -noarclimit. -ipa_looplevel=3 (KAP Fortran 77) The ipa_looplevel switch enables the user to limit inlining to just functions which are referenced in nested loops where the effects of reduced function call overhead or enhanced optimizations will be multiplied. kf77 (KAP Fortran 77) Invokes the KAP Fortran pre-processor and then invokes the Digital Visual Fortran compiler. -link (Visual C++, Visual Fortran) Pass the rest of the command line to the linker -math_library:fast (Visual Fortran) Require slightly less accuracy and less error checking. -Ob3 (Visual C++) Inline where the compiler believes speed can be increased, even at the cost of additional space. -Ob4 (Visual C++) Maximum inlining. -Oi (Visual C++) Enable intrinsic functions. /o=0 (KAP Fortran 77) KAP's general optimization level. Setting it to 0 disables optimizations such as DO loop interchanging and lifetime analysis. -optimize:4 (Visual Fortran) Fortran's general optimization level. O0 disable all optimizations O1 local optimizations and common subexpressions O2 global optimizations such as code motion, strength reduction, lifetime analysis, and code scheduling O3 additional global optimizations that may cost more space, such as loop unrolling and code replication O4 inline expansion O5 software pipelining and loop transformation -O2 (Visual C++) Perform all speed optimizations. -Ox (Visual C++) Perform optimizations that favor speed over code size. -pipeline (Visual Fortran) Enable software pipelining -pixie (SPIKE) Instrument the application to collect profiles for use by spike. If spike is invoked via the scc driver with -prof_use_spike, this switch is generated automatically. -profile_accuracy:low (SPIKE) The profile may not be representative; make optimizations more conservative. This switch may be useful as part of a software build that runs a relatively short workload, rather than exposing the application to a full production workload. -prof_dir:c:\tmp\prof (SPIKE) Name directory to hold profile information. -prof_gen_gem (SPIKE) Instrument application to collect profiles for use by the compiler. -prof_gen_spike (SPIKE) Instrument application to collect profiles for use by spike. -prof_use_gem (SPIKE) Use feedback with the compiler. GEM is the name of the compiler common back end. -prof_use_spike (SPIKE) Use spike with feedback. -QAgq (Visual C++) Use quadword granularity. -r=n (KAP Fortran 77) Tolerance for roundoff-changing transformations: 0 none 1 expression simplification, code floating, reductions, interchange 2 reciprocal substitution 3 {default} induction variables scc (SPIKE) Invokes Visual C++ followed by spike. /so=0 (KAP Fortran 77) Scalar optimizations. Setting this switch to 0 disables optimizations such as code floating out of loops, loop unrolling, and loop peeling. spike (SPIKE) A post-link time optimizer which does optimizations such as icache packing and procedure splitting. Note that in this disclosure, "SPIKE" refers to the software package as a whole, whereas "spike" refers to just the actual optimizer. -spike_hco (SPIKE) A synonym for -hco. -split_thresh .001 (SPIKE) Split procedures more conservatively. The default is .01 and smaller numbers cause fewer splits. -transform_loops (Visual Fortran) Enables a group of loop transformation optimizations that apply to array references within loops, including loop blocking, distribution, fusion, and interchange. /tune=ev4 (KAP Fortran 77) Optimize for the EV4 (21064) chip. Also enables KAP's inner loop unroller. /tune=ev5 (KAP Fortran 77) Optimize for the EV5 (21164) chip. Also disables KAP's inner loop unroller. -tune:ev5 (Visual Fortran) Optimize for the EV5 (21164) chip /ur= (KAP Fortran 77) The maximum number of iterations to unroll inner loops. /ur2= (KAP Fortran 77) The maximum work allowed in an unrolled loop. Work is estimated by counting operands and operators in a loop.