Compiler Options Quick Reference Guide

This topic provides you with a reference to all the compilation control options and some linker control options.

Option Description Default
-0f_check
IA-32 only
Avoids the incorrect decoding of certain 0f instructions for code targeted at older processors.
OFF
-A- Disables all predefined macros.
OFF

-[no]align
IA-32 only

Analyze and reorder memory layout for variables and arrays.

OFF

-Aname[(value)]

Associates a symbol name  with the specified sequence of value . Equivalent to an #assert preprocessing directive.

OFF

-ansi[-] Enables [disables] assumption of the program's ANSI conformance.
OFF
-ax{i|M|K|W}
IA-32 only
Generates specialized code for processor-specific codes i, M, K, W while also generating generic IA-32 code.
  • i = Pentium® Pro and Pentium II processor instructions
  • M =  MMX(TM) instructions
  • K = streaming SIMD extensions
  • W = Pentium 4 processor instructions
OFF
-C Places comments in preprocessed source output.
OFF
-c Stops the compilation process after an object file has been generated. The compiler generates an object file for each C or C++ source file or preprocessed source file. Also takes an assembler file and invokes the assembler to generate an object file.
OFF

-c99

Enable C99 support for C programs

OFF

-Dname[{=|#}value]

Defines a macro name  and associates it with the specified value .

OFF

-dryrun

Show driver tool commands but do not execute tools.

OFF

-E

Stops the compilation process after the C or C++ source files have been preprocessed, and writes the results to stdout.

OFF

-EP Preprocess to stdout omitting #line directives.
OFF

-falias

Assume aliasing in program.

ON

-fcode-asm

Produce assembly file with optional code annotations.

OFF

-fno-alias

Assume no aliasing in program.

OFF

-ffnalias

Assume aliasing within functions

ON

-fno-fnalais

Assume no aliasing within functions, but assume aliasing across calls.

OFF

-f[no]verbose-asm

Produce assembly file with compiler components.

ON

-fp
IA-32 only

Use EBP stack frame for all functions.

OFF

-fpic, -fPic

Generate position independent code.

OFF

-fp_port
IA-32 only

Round fp results at assignments and casts. Some speed impact.

OFF

-fr32
Itanium-based
systems only
Use only lower 32 floating-point registers. OFF

-fsource-asm

Produce assembly file with optional code annotations.

 

-ftz
Itanium-based
systems only

Flushes denormal results to zero.

OFF

-g

Generates symbolic debugging information in the object code for use by source-level debuggers.

OFF

-H Print "include" file order; don't compile. OFF
-help Prints compiler options summary. OFF
-Idirectory

Specifies an additional directory  to search for include files.

OFF

-i_dynamic

Link Intel provided libraries dynamically.

OFF

-inline_debug_info

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

OFF

-ip Enables interprocedural optimizations for single file compilation.
OFF

-IPF_fma[-]
Itanium-based
systems only

Enable [disable] the combining of floating-point multiplies and add/subtract operations.

OFF

-IPF_fltacc[-]
Itanium-based
systems only

Enable [disable] optimizations that affect floating-point accuracy.

OFF

-IPF_flt_eval_method0
Itanium-based
systems only

Floating-point operands evaluated to the precision indicated by the program.

OFF

-IPF_fp_speculationmode
Itanium-based
systems only

Enable floating-point speculations with the following mode conditions:

  • fast - speculate floating-point operations
  • safe - speculate only when safe
  • strict - same as off
  • off - disables speculation of floating-point operations

OFF

-ip_no_inlining

Disables inlining that would result from the -ip interprocedural optimization, but has no effect on other interprocedural optimizations.

OFF

-ip_no_pinlining

Disable partial inlining. Requires -ip or -ipo.

OFF

-ipo

Enables interprocedural optimizations across files.

OFF
-ipo_c Generates a multifile object file (ipo_out.o) that can be used in further link steps.
OFF
-ipo_obj Forces the compiler to create real object files when used with -ipo.
OFF
-ipo_S Generates a multifile assembly file named ipo_out.s that can be used in further link steps.
OFF

-ivdep_parallel
Itanium-based
systems only

This option indicates there is absolutely no loop-carried memory dependency in the loop where IVDEP directive is specified.

OFF

-Kc++

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

OFF

-Kc++eh

Enable C++ exception handling.

ON

-Knopic, -KNOPIC
Itanium-based
systems only

Don't generate position independent code.

OFF

-KPIC, -Kpic Generate position independent code. OFF for IA-32
ON for Itanium-based systems
-Ldirectory

Instruct linker to search directory  for libraries.

OFF
-long_double
IA-32 only
Changes the default size of the long double data type from 64 to 80 bits.
OFF
-M Generates makefile dependency lines for each source file, based on the #include lines found in the source file. OFF
-mp Favors conformance to the ANSI C and IEEE 754 standards for floating-point arithmetic. OFF
-mp1 Improve floating-point precision (speed impact is less than -mp).
OFF
-nobss_init Places variables that are initialized with zeroes in the DATA section. Disables placement of zero-initialized variables in BSS (use DATA).
OFF

-no_cpprt

Do not link in C++ run time libraries.

OFF

-nolib_inline

Disables inline expansion of standard library functions.

OFF

-nostartfiles

Do not use standard startup files when linking.

OFF

-nostdlib

Do not use standard libraries and startup files when linking.

OFF

-O

Same as -O1 on IA-32. Same as -O2 on Itanium-based systems.

OFF

-O0 Disables optimizations.
OFF
-O1 Enable optimizations. Optimizes for speed. For Itanium compiler, -O1 turns off software pipelining to reduce code size.
OFF
-O2 Same as -O1 on IA-32. Same as -O on Itanium-based systems.
ON
-O3 Enable -O2 plus more aggressive optimizations that  may increase the compilation time. Impact on performance is application dependent, some applications may not see a performance improvement.
OFF
-ofile

Name output file .

OFF
-openmp Enables the parallelizer to generate multi-threaded code based on the OpenMP* directives. The -openmp option only works at an optimization level of -O2 (the default) or higher.
OFF
-openmp_report{0|1|2} Controls the OpenMP* parallelizer's diagnostic levels.
-openmp_report1

-openmpP

Same as openmp (parallel).

 

-openmpS

Enables the user to compile OpenMP* programs in sequential mode. The openmp directives are ignored, and a stub OpenMP library is linked (sequential).

 

-opt_report

Generates an optimization report directed to stderr, unless -opt_report_file is specified.

OFF

-opt_report_filefilename

Specifies the filename for the optimization report. It is not necessary to invoke -opt_report when this option is specified.

OFF

-opt_report_level[level]

Specifies the verbosity level of the output. Valid level arguments:
  • min
  • med
  • max

If a level is not specified, min is used by default.

OFF

-opt_report_phasename

Specifies the compilation phase for which reports are generated. The option can be used multiple times in the same compilation to get output from multiple phases.
Valid phase arguments:

  • ipo: Interprocedural Optimizer
  • hlo: High Level Optimizer
  • ilo: Intermediate Language Scalar Optimizer
  • ecg: Electron Code Generator
  • omp: OpenMP*
  • all: All phases

OFF

-opt_report_routinesubstring

Specifies a routine substring. Reports from all routines with names that include substring as part of the name are generated. By default, reports for all routines are generated.

OFF

-opt_report_help

Displays all possible settings for -opt_report_phase. No compilation is performed.

OFF

-P, -F

Stops the compilation process after C or C++ source files have been preprocessed and writes the results to files named according to the compiler's default file-naming conventions.

OFF

-parallel

Detects parallel loops capable of being executed safely in parallel and automatically generates multithreaded code for these loops.

 

-par_report{0|1|2|3}

Controls the auto-parallelizer's diagnostic levels 0, 1, 2, or 3 as follows:

  • -par_report0: no diagnostic information is displayed.
  • -par_report1: indicates loops successfully auto-parallelized (default).
  • -par_report2: loops successfully and unsccessfully auto-parallelized.
  • -par_report3: same as 2 plus additional information about any proven or assumed dependences inhibiting auto-parallelization.

OFF

-par_threshold[n]

Sets a threshold for the auto-parallelization of loops based on the probability of profitable execution of the loop in parallel, n=0 to 100. This option is used for loops whose computation work volume cannot be determined at compile time.

  • -par_threshold0: loops get auto-parallelized regardless of computation work volume.
  • -par_threshold100: loops get auto-parallelized only if profitable parallel execution is almost certain.

OFF

-pc32
IA-32 only

Set internal FPU precision to 24-bit significand.

OFF

-pc64
IA-32 only
Set internal FPU precision to 53-bit significand. ON
-pc80
IA-32 only
Set internal FPU precision to 64-bit significand. OFF
-prec_div
IA-32 only
Disables the floating point division-to-multiplication optimization. Improves precision of floating-point divides.
OFF
-prof_dir dirname

Specify the directory (dirname ) to hold profile information (*.dyn, *.dpi).

OFF
-prof_file filename

Specify the   filename  for profiling summary file.

OFF
-prof_gen[x] Instruments the program to prepare for instrumented execution and also creates a new static profile information file (.spi ). With the x qualifier, extra information is gathered.
OFF
-prof_use Uses dynamic feedback information.
OFF
-Qansi[-]
Itanium-based
systems only
Enable [disable] stating ANSI compliance of the compiled program and that optimizations can be based on the ANSI rules. ON
-Qinstall dir

Sets dir  as root of compiler installation.

OFF

-Qlocation,tool,path

Sets path  as the location of the tool specified by tool .

OFF
-Qoption,tool,list

Passes an argument list  to another tool  in the compilation sequence, such as the assembler or linker.

OFF

-qp, -p

Compile and link for function profiling with UNIX* prof tool

OFF

-rcd
IA-32 only

Disables changing of the FPU rounding control. Enables fast float-to-int conversions.

OFF

-restrict Enables pointer disambiguation with the
restrict
qualifier.
OFF
-S Generates assembly files with .s suffix, then stops the compilation.
OFF 

-shared

Produce a shared object.

OFF

-size_lp64
Itanium-based
systems only

Assume 64-bit size for long and pointer types.

OFF

-sox[-]
IA-32 only
Enables [disables] the saving of compiler options and version information in the executable file. NOTE: This option is maintained for compatibility only on Itanium(TM)-based systems. ON

-static

Prevents linking with shared libraries.

OFF

-syntax

Checks the syntax of a program and stops the compilation process after the C or C++ source files and preprocessed source files have been parsed. Generates no code and produces no output files. Warnings and messages appear on stderr.

OFF

-tpp5
IA-32 only
Targets the optimizations to the Intel® Pentium® processor.
OFF
-tpp6
IA-32 only
Targets the optimizations to the Intel Pentium Pro, Pentium II and Pentium III processors.
ON (IA-32)
OFF(Itanium-based systems)
-tpp7
IA-32 only
Tunes code to favor the Intel Pentium 4 processor.
OFF
-Uname

Suppresses any definition of a macro name . Equivalent to a #undef preprocessing directive.

OFF
-unroll0
Itanium-based
systems only
Disable loop unrolling.
OFF
-unroll[n]
IA-32 only

Set maximum number of times to unroll loops. Omit n to use default heuristics. Use n =0 to disable loop unroller.

OFF

-use_asm

Produce objects through assembler.

OFF

-use_msasm
IA-32 only

Accept the Microsoft* MASM-style inlined assembly format instead of GNU-style.   

OFF

-u symbol

Pretend the symbol is defined.

OFF

-V

Display compiler version information.

OFF

-vec[-]
IA-32 only

Enable [disable] the vectorizer.

ON

-vec_report[n]
IA-32 only

Controls the amount of vectorizer diagnostic information.

  • n =0 no diagnostic information
  • n =1 indicates vectorized loops (DEFAULT)          
  • n =2 indicates vectorized/non-vectorized loops
  • n =3 indicates vectorized/non-vectorized loops and prohibiting data dependence information
  • n =4 indicates non-vectorized loops
  • n =5 indicates non-vectorized loops and prohibiting data

-vec_report1

-w Disable all warnings. OFF
-wn

Control diagnostics.

  • n =0 displays errors (same as -w)
  • n =1 displays warnings and errors (DEFAULT)
  • n =2 displays remarks, warnings, and errors
OFF
-wdL1[,L2,...]

Disables diagnostics L1 through LN.

OFF
-weL1[,L2,...] Changes severity of diagnostics L1 through LN to error.
OFF
-wnn

Limits the number of errors displayed prior to aborting compilation to n .

n=100
-wp_ipo Compile all objects over entire program with multifile interprocedural optimizations. This option additionally makes the whole program assumption that all variables and functions seen in compiled sources are referenced only within those sources; the user must guarantee that this assumption is safe.
OFF
-wrL1[,L2,...] Changes the severity of diagnostics L1 through LN to remark.
OFF
-wwL1[,L2,...] Changes severity of diagnostics L1 through LN to warning.
OFF

-Wl,o1[,o2,...]

Pass options o1, o2, etc. to the linker for processing.

OFF

-xtype

All source files found subsequent to -xtype will be recognized as one of the following types:

  • c - C source file
  • c++ - C++ source file
  • c-header - C header file
  • cpp-output - C preprocessed file
  • assembler - assembly file
  • assembler-with-cpp - Assembly file that needs to be preprocessed.
  • none - Disable recognition and revert to file extension.

OFF

-X

Removes the standard directories from the list of directories to be searched for include files.

OFF

-Xa Select extended ANSI C dialect. OFF
-Xc, -ansi Select strict ANSI conformance dialect. OFF
-x{i|M|K|W}
IA-32 only
Generates specialized code to run exclusively on processors supporting the extensions indicated by processor-specific codes i, M, K, W.
  • i = Pentium® Pro and Pentium II processor instructions
  • M =  MMX(TM) instructions
  • K = streaming SIMD extensions
  • W = Pentium 4 processor instructions

OFF

-Xlinker val

Pass val directly to the linker for processing.

OFF

-Zp{1|2|4|8|16} Specifies the strictest alignment constraint for structure and union types as one of the following: 1, 2, 4, 8, or 16 bytes.
-Zp16