Compiler listings
A listing is a compiler output file (with a .lst suffix) that contains information about a particular compilation. As a debugging aid, a compiler listing is useful for determining what has gone wrong in a compilation.
To produce a listing, you can compile with any of the following
options, which provide different types of information:
Listing information
is organized in sections. A listing contains
a header section and a combination of other sections, depending on
other options in effect. The contents of these sections are described
as follows.
- Header section
- Lists the compiler name, version, release, the source file name, and the date and time of the compilation.
- File table section
- Lists the file name and number for each main source file and include file. Each file is associated with a file number, starting with the main source file, which is assigned file number 0.
- PDF report section
- The
following information is included in this section when you
use the -qreport option with the -qpdf2 option:
- Loop iteration count
- The most frequent loop iteration count and the average iteration count, for a given set of input data, are calculated for most loops in a program. This information is only available when the program is compiled at optimization level -O5.
- Block and call count
- This section covers the Call Structure of the program and the respective execution count for each called function. It also includes Block information for each function. For non-user defined functions, only execution count is given. The Total Block and Call Coverage, and a list of the user functions ordered by decreasing execution count are printed in the end of this report section. In addition, the Block count information is printed at the beginning of each block of the pseudo-code in the listing files.
- Cache miss
- This section is printed
in a single table. It reports the number
of Cache Misses for certain functions, with additional information
about the functions such as: Cache Level , Cache
Miss Ratio, Line Number, File Name,
and Memory Reference. Note: You must use the option -qpdf1=level=2 to get this report.You can also select the level of cache to profile using the environment variable PDF_PM_EVENT during run time.
- Relevance of profiling data
- This section shows the relevance of the profiling data to the source code during the PDF1 step. The relevance is indicated by a number in the range of 0 - 100. The larger the number is, the more relevant the profiling data is to the source code, and the more performance gain can be achieved by using the profiling data.
- Missing profiling data
- This section might include a warning message about missing profiling data. The warning message is issued for each function for which the compiler does not find profiling data.
- Outdated profiling data
- This section might include a warning message about outdated profiling data. The compiler issues this warning message for each function that is modified after the PDF1 step. The warning message is also issued when the optimization level changes from the PDF1 step to the PDF2 step.
- Transformation report section
- If the -qreport option is in effect,
this section
displays pseudo code that corresponds to the original source code,
so that you can see parallelization and loop transformations that
the -qhot or -qsmp option
has generated. This section of the report
also shows additional loop transformation and parallelization information
about loop nests if you compile with -qsmp and -qhot=level=2.
This section also reports the number of streams created for a given loop and the location of data prefetch instructions inserted by the compiler. To generate information about data prefetch insertion locations, use the optimization level of -qhot, -O3 -qhot, -O4 or -O5 together with -qreport.
- Data reorganization section
- Displays data reorganization messages
for program variable data
during the IPA link pass when -qreport is used
with -qipa=level=2 or -O5.
Reorganization information includes:
- array splitting
- array transposing
- memory allocation merging
- array interleaving
- array coalescing
- Object section
- If you specify the -qlist option, the Object section lists the object code generated by the compiler. This section is useful for diagnosing execution-time problems, if you suspect the program is not performing as expected due to code generation error.