You can use the -qlistfmt option to generate a compiler
report in XML 1.0 format that indicates some of the details of how
your program was optimized. You can use this information to understand
your application code and to tune your code for better performance.
The compiler report in XML format can be viewed in a
browser that supports XSLT. If you compile with the stylesheet suboption, -qlistfmt=xml=all:stylesheet=xlstyle.xsl,
the report will contain a link to a stylesheet that renders the XML
readable and provides you with opportunities to improve the optimization
of your code. You can also create tools to parse this information.
Inline reports
If
compiled with -qinline and -qlistfmt=xml=inlines or -qlistfmt=xml=all,
the compiler report generated includes a list of inline attempts during
the compilation. The report also specifies the type of attempt and
its outcome.
For each function that the compiler
has attempted to inline, there is an indication of whether or not
the inline was successful. The report might contain any number of
explanations for a named function that has not been successfully inlined.
Some examples of these explanations are:
- FunctionTooBig - The function is too big to be inlined
- RecursiveCall - The function is not inlined because it is recursive.
- ProhibitedByUser - Inlining was not performed because of a user
specified pragma or directive.
- CallerIsNoopt - No inlining was performed because the caller was
compiled without optimization.
- WeakAndNotExplicitlyInline The calling function is weak and not
marked as inline.
For a complete list of the possible explanations,
see the Inline optimization types section of the
XML schema file called XMLContent.html that is in the /usr/vacpp/listings/ directory.
Loop transformations
If
compiled with
-qhot and
-qlistfmt=xml=transforms or
-qlistfmt=xml=all,
the compiler report generated includes a list of the transformations
performed on all loops in the file during the compilation. It also
lists reasons why some transformations were not performed. These might
include:
- Reasons why a loop could not be automatically parallelized
- Reasons why a loop could not be unrolled
- Reasons why SIMD vectorization failed
For a complete list of the possible transformation problems,
see the Loop transformation types section of the
XML schema file called XMLContent.html that is in the /usr/vacpp/listings/ directory.
Data reorganizations
If compiled
with
-qhot and
-qlistfmt=xml=data or
-qlistfmt=xml=all,
the compiler report generated includes a list of data reorganizations
performed on the program during compilation. These data reorganizations
include:
- Array splitting
- Array coalesce
- Array interleaving
- Array transposition
- Memory merge
For each of these reorganizations, the report contains
details about the name of the data, filenames, line numbers and the
region names.
Profile-directed feedback reports
If compiled with
-qpdf and
-qlistfmt=xml=pdf or
-qlistfmt=xml=all,
the compiler report generated includes:
- Loop iteration counts
- Block and call counts
- Cache misses (if compiled with -qpdf1=level=2)