Developer Guide and Reference

Contents

qopt-report-phase, Qopt-report-phase

Specifies one or more optimizer phases for which optimization reports are generated.

Syntax

Linux and macOS:
-qopt-report-phase
[
=
list
]
Windows:
/Qopt-report-phase
[
:
list
]
Arguments
list
(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:
cg
The phase for code generation
ipo
The phase for Interprocedural Optimization
loop
The phase for loop nest optimization
openmp
The phase for OpenMP
par
The phase for auto-parallelization
pgo
The phase for Profile Guided Optimization
tcollect
The phase for trace collection
vec
The phase for vectorization
all
All optimizer phases. This is the default if you do not specify
list
.
Default
OFF
No optimization report is generated.
Description
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 phase
    cg
    , you must also specify option
    O1
    ,
    O2
    (default), or
    O3
    .
  • If you specify phase
    ipo
    , you must also specify option
    [Q]ipo
    .
  • If you specify phase
    loop
    , you must also specify option
    O2
    (default) or
    O3
    .
  • If you specify phase
    openmp
    , you must also specify option
    [q or Q]openmp
    .
  • If you specify phase
    par
    , you must also specify option
    [Q]parallel
    .
  • If you specify phase
    pgo
    , you must also specify option
    [Q]prof-use
    .
  • If you specify phase
    tcollect
    , you must also specify option
    [Q]tcollect
    .
  • If you specify phase
    vec
    , you must also specify option
    O2
    (default) or
    O3
    . 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
=
n
along 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
-qopt-report-phase=all
(Linux* and
macOS*
) or
/Qopt-report-phase:all
(Windows*).
Alternate Options
None
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.
Optimizer phase
The level specified in option
[q or Q]opt-report
Description
cg
1
Generates a list of which intrinsics were lowered and which memcall optimizations were performed.
ipo
1
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.
2
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.
3
Generates level 2 details, whole program information, the sizes of inlined routines, and the reasons routines were not inlined.
4
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.
loop
1
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.
2
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.
openmp
1
Reports loops, regions, sections, and tasks successfully parallelized.
2
Generates level 1 details, and messages indicating successful handling of
master constructs, single constructs, critical constructs, ordered constructs, atomic pragmas,
and so forth.
par
1
Reports which loops were parallelized.
2
Generates level 1 details, and reports which loops were not parallelized along with a short reason.
3
Generates level 2 details, and prints the memory locations that are categorized as private, shared, reduction, etc..
4
For this phase, this is the same as specifying level 3.