Specifies one or more optimizer phases for which optimization reports are generated.
Linux and macOS:
- (Optional) Specifies one or more phases to generate reports for. If you specify more than one phase, they must be separated with commas. The values you can specify are:
- The phase for code generation
- The phase for Interprocedural Optimization
- The phase for loop nest optimization
- The phase for OpenMP
- The phase for auto-parallelization
- The phase for Profile Guided Optimization
- The phase for trace collection
- The phase for vectorization
- All optimizer phases. This is the default if you do not specifylist.
- No optimization report is generated.
This option specifies one or more optimizer phases for which optimization reports are generated.
For certain phases, you also need to specify other options:
- If you specify phasecg, you must also specify optionO1,O2(default), orO3.
- If you specify phaseipo, you must also specify option[Q]ipo.
- If you specify phaseloop, you must also specify optionO2(default) orO3.
- If you specify phaseopenmp, you must also specify option[q or Q]openmp.
- If you specify phasepar, you must also specify option[Q]parallel.
- If you specify phasepgo, you must also specify option[Q]prof-use.
- If you specify phasetcollect, you must also specify option[Q]tcollect.
- If you specify phasevec, you must also specify optionO2(default) orO3. If you are interested in explicit vectorization by OpenMP* SIMD, you must also specify option[q or Q]openmp.
To find all phase possibilities, specify option
[q or Q]opt-report-help.
If you use this option, you do not have to specify option
[q or Q]opt-report.
However, if you want to get more details for each phase, specify option
[q or Q]opt-report=
nalong with this option and indicate the level of detail you want by specifying an appropriate value for
n. (See also the Example section below.)
When optimization reporting is enabled, the default is
The following shows examples of the details you may receive when you specify one of the optimizer phases and a particular level (
n) for option
[q or Q]opt-report. Note that details may change in future releases.
The level specified in option
[q or Q]opt-report
Generates a list of which intrinsics were lowered and which memcall optimizations were performed.
For each compiled routine, generates a list of the routines that were inlined into the routine, called directly by the routine, and whose calls were deleted.
Generates level 1 details, values for important inlining command line options, and a list of the routines that were discovered to be dead and eliminated.
Generates level 2 details, whole program information, the sizes of inlined routines, and the reasons routines were not inlined.
Generates level 3 details, detailed footnotes on the reasons why routines are not inlined, and what action the user can take to get them inlined.
Reports high-level details about which optimizations have been performed on the loop nests (along with the line number). Most of the loop optimizations (like fusion, unroll, unroll & jam, collapsing, rerolling etc) only support this level of detail.
Generates level 1 details, and provides more detail on the metrics and types of references (like prefetch distance, indirect prefetches etc) used in optimizations. Only a few optimizations (like prefetching, loop classification framework etc) support these extra details.
Reports loops, regions, sections, and tasks successfully parallelized.
Generates level 1 details, and messages indicating successful handling of
master constructs, single constructs, critical constructs, ordered constructs, atomic pragmas,and so forth.
Reports which loops were parallelized.
Generates level 1 details, and reports which loops were not parallelized along with a short reason.
Generates level 2 details, and prints the memory locations that are categorized as private, shared, reduction, etc..
For this phase, this is the same as specifying level 3.