The IPO report provides information on the functions that have been inlined and can help to identify the problem loops. The report can help to identify how and where the compiler applied IPO to the source files.
The following command examples demonstrate how to run the IPO reports with the minimum output.
Operating System |
Syntax Examples |
---|---|
Linux* and Mac OS* X |
icc -opt-report 1 -opt-report-phase=ipo a.cpp b.cpp |
Windows* |
icl /Qopt-report:1 /Qopt-report-phase:ipo a.cpp b.cpp |
where -opt-report (Linux and Mac OS X) or /Qopt-report (Windows) invokes the report generator, and -opt-report-phase=ipo (Linux and Mac OS X) or /Qopt-report-phase:ipo (Windows) indicates the phase (ipo) to report.
You can use -opt-report-file (Linux and Mac OS X) or /Qopt-report-file (Windows) to specify an output file to capture the report results. Specifying a file to capture the results can help to reduce the time you spend analyzing the results and can provide a baseline for future testing.
The IPO report details information in two general sections: whole program analysis and inlining. By default, the report generates a medium level of detail. You can specify an output file to capture the report results. Running maximum IPO report results can be very extensive and technical; specifying a file to capture the results can help to reduce analysis time. The following sample report illustrates the general layout.
Sample IPO Report |
---|
IP OPTIMIZATION REPORT: ... WHOLE PROGRAM (SAFE) [EITHER METHOD]: TRUE WHOLE PROGRAM (SEEN) [TABLE METHOD]: TRUE WHOLE PROGRAM (READ) [OBJECT READER METHOD]: TRUE INLINING OPTION VALUES: -inline-factor: 100 -inline-min-size: 7 -inline-max-size: 230 -inline-max-total-size: 2000 -inline-max-per-routine: disabled -inline-max-per-compile: disabled INLINING REPORT: (main) [1/5=20.0%] -> INLINE: _Z3bari(6) (isz = 12) (sz = 17 (5+12)) -> _ZNSolsEPFRSoS_E(EXTERN) ... |
The following table summarizes the common report elements and provides a general description to help interpret the results.
Report Element |
Description |
---|---|
WHOLE PROGRAM (SAFE) [EITHER METHOD]: | TRUE or FALSE.
See Inteprocedural Optimizations (IPO) Overview for more information on the whole program analysis models. |
WHOLE PROGRAM (SEEN) [TABLE METHOD]: | TRUE or FALSE.
|
WHOLE PROGRAM (READ) [OBJECT READER METHOD]: | TRUE or FALSE.
|
INLINING OPTION VALUES: | Displays the compilation values used for the following developer-directed inline expansion options:
If you specify the one or more of the appropriate options, the report lists the values you specified; if you do not specify an option and value the compiler uses the defaults values for the listed options, and the compiler will list the default values. The values indicate the same intermediate language units listed in Compiler Options for each of these options. See Developer Directed Expansion of User Functions for more information about using these options. |
INLINING REPORT: | Includes a string in the format of the following (<name>) [<current number>/<total number>=<percent complete>] where
|
INLINE: | If a function is inlined, the function line has the prefix "-> INLINE: _". The option reports displays the mangled names of the functions. The report uses the following general syntax format: -> INLINE: _<name>(#) (isz) (sz) where
|
DEAD STATIC FUNCTION ELIMINATION: | Indicates the reported function is a dead static. Code does not need to be created for these functions. This behavior allows the compiler to reduce the overall code size. |