IPA link step listing components

The following information describes the components of an IPA link step listing.

Heading information

The first page of the listing is identified by the product number, the compiler version and release numbers, the central title area, the date and time compilation began (formatted according to the current locale), and the page number.

In the following listing sections, the central title area will contain the primary input file identifier:
  • Prolog
  • Object File Map
  • Source File Map
  • Compiler Options Map
  • Global Symbols Map
  • Inline Report
  • Messages
  • Message Summary
In the following listing sections, the central title area will contain the phrase Partition nnnn, where nnnn specifies the partition number:
  • Partition Map
In the following listing sections, the title contains the phrase Partition nnnn:name. nnnn specifies the partition number, and name specifies the name of the first function in the partition:
  • Pseudo Assembly Listing
  • External Symbol Cross-Reference
  • Storage Offset Listing

Prolog section

The Prolog section of the listing provides information about the compile-time library, file identifiers, compiler options, and other items in effect when the IPA link step was invoked.

The listing displays all compiler options except those with no default (for example, DEFINE). If you specify IPA suboptions that are irrelevant to the IPA link step, the Prolog does not display them. Any problems with compiler options appear after the body of the Prolog section and before the End of Prolog section.

Object File Map

The Object File Map displays the names of the object files that were used as input to the IPA link step. Specify any of the following options to generate the Object File Map:
  • IPA(MAP)
  • LIST

Other listing sections, such as the Source File Map, use the File ID numbers that appear in this listing section.

z/OS® UNIX file names that are too long to fit into a single listing record continue on subsequent listing records.

Source File Map

The Source File Map listing section identifies the source files that are included in the object files. The IPA link step generates this section if you specify any of the following options:
  • IPA(MAP)
  • LIST

The IPA link step formats the compilation date and time according to the locale you specify with the LOCALE option in the IPA link step. If you do not specify the LOCALE option, it uses the default locale.

This section appears near the end of the IPA link step listing. If the IPA link step terminates early due to errors, it does not generate this section.

Compiler Options Map

The Compiler Options Map listing section identifies the compiler options that were specified during the IPA compile step for each compilation unit that is encountered when the object file is processed. For each compilation unit, it displays the final options that are relevant to IPA link step processing. You may have specified these options through a compiler option or #pragma directive, or you may have picked them up as defaults.

The IPA link step generates this listing section if you specify the IPA(MAP) option.

Global Symbols Map

The Global Symbols Map listing section shows how global symbols are mapped into members of global data structures by the global variable coalescing optimization process.

Each global data structure is limited to 16 MB by the z/OS object architecture. If an application has more than 16 MB of data, IPA Link must generate multiple global data structures for the application. Each global data structure is assigned a unique name.

The Global Symbols Map includes symbol information and file name information (file name information may be approximate). In addition, line number information is available for C compilations if you specified any of the following options during the IPA compile step:
  • XREF
  • IPA(XREF)
  • XREF(ATTRIBUTE)

The IPA link step generates this listing section if you specify the IPA(MAP) option and the IPA link step causes global symbols to be coalesced. The Global Symbols Map is only added to the IPA link step listing if the IPA Link phase optimization changes the structure and/or layout of the global symbols used by the final module. If no changes are made, then the Global Symbols Map is not included in the listing.

Inline Report for IPA inliner

The Inline Report describes the actions that are performed by the IPA Inliner. The IPA link step generates this listing section if you specify the INLINE(,REPORT,,), NOINLINE(,REPORT,,), or INLRPT option.

This report is similar to the one that is generated by the non-IPA inliner. In the IPA version of this report, the term 'subprogram' is equivalent to a C/C++ function or a C++ method. The summary contains information such as:
  • Name of each defined subprogram. IPA sorts subprogram names in alphabetical order.
  • Reason for action on a subprogram:
    • A #pragma noinline was specified for the subprogram. The P indicates that inlining could not be performed.
    • inline was specified for the subprogram. For z/OS XL C++, this is a result of the inline specifier. For C, this a result of the #pragma inline. The F indicates that the subprogram was declared inline.
    • The IPA link step performed auto-inlining on the subprogram.
    • There was no reason to inline the subprogram.
    • There was a partition conflict.
    • The IPA link step could not inline the object module because it was a non-IPA object module.
  • Action on a subprogram:
    • IPA inlined subprogram at least once.
    • IPA did not inline subprogram because of initial size constraints.
    • IPA did not inline subprogram because of expansion beyond size constraint.
    • Subprogram was a candidate for inlining, but IPA did not inline it.
    • Subprogram was a candidate for inlining, but was not referenced.
    • The subprogram is directly recursive, or some calls have mismatched parameters.
  • Status of original subprogram after inlining:
    • IPA discarded the subprogram because it is no longer referenced and is defined as static internal.
    • IPA did not discard the subprogram, for various reasons :
      • Subprogram is external. (It can be called from outside the compilation unit.)
      • Subprogram call to this subprogram remains.
      • Subprogram has its address taken.
  • Initial relative size of subprogram (in Abstract Code Units (ACUs)).
  • Final relative size of subprogram (in ACUs) after inlining.
  • Number of calls within the subprogram and the number of these calls that IPA inlined into the subprogram.
  • Number of times the subprogram is called by others in the compile unit and the number of times IPA inlined the subprogram.
  • Mode that is selected and the value of threshold and limit you specified for the compilation.

Static functions whose names are not unique within the application as a whole will have names prefixed with nnnn:, where nnnn is the source file number.

The detailed call structure contains specific information of each subprogram such as:
  • Subprograms that it calls
  • Subprograms that call it
  • Subprograms in which it is inlined.
The information can help you to better analyze your program if you want to use the inliner in selective mode.

Inlining may result in additional messages. For example, if inlining a subprogram with automatic storage increases the automatic storage of the subprogram it is being inlined into by more than 4K, the IPA link step issues a message.

This report may display information about inlining specific subprograms, at the point at which IPA determines that inlining is impossible.

The counts in this report do not include calls from non-IPA to IPA programs.

Note: Even if the IPA link step did not perform any inlining, it generates the IPA Inline Report if you request it.

Partition Map

The Partition Map listing section describes each of the object code partitions the IPA link step creates. It provides the following information:
  • The reason for generating each partition
  • How the code is packaged (the CSECTs)
  • The options used to generate the object code
  • The function and global data included in the partition
  • The source files that were used to create the partition
The IPA link step generates this listing section if you specify either of the following options :
  • IPA(MAP)
  • LIST

The Pseudo Assembly, External Symbol Dictionary, External Symbol Cross-Reference, and Storage Offset listing sections follow the Partition Map listing section for the partition, if you have specified the appropriate compiler options.

Pseudo Assembly Listing

The LIST compiler option generates a listing of the machine instructions in the current partition of the object module, in a form similar to assembler language.

This Pseudo Assembly listing displays the source statement line numbers and the line number of inlined code to aid you in debugging inlined code. Refer to GONUMBER | NOGONUMBER, IPA | NOIPA, and LIST | NOLIST for information about source and line numbers in the listing section.

External Symbol Dictionary

The External Symbol Dictionary lists the names that the IPA link step generates for the current partition of the object module. It includes address information and size information about each symbol.

External Symbol Cross-Reference

The IPA link step generates this section if you specify the ATTR or XREF compiler option. It shows how the IPA link step maps internal and ESD names for external symbols that are defined or referenced in the current partition of the object module.

Storage Offset Listing

The Storage Offset listing section displays the offsets for the data in the current partition of the object module.

During the IPA compile step, the compiler saves symbol storage offset information in the IPA object file as follows:
  • For C, if you specify the XREF, IPA(ATTRIBUTE), IPA(XREF) options, or the #pragma options(XREF)
  • For C++, if you specify the ATTR, XREF, IPA(ATTRIBUTE), or IPA(XREF) options
If this is done and the compilation unit includes variables, the IPA link step may generate a Storage Offset listing.

If you specify the ATTR or XREF option on the IPA link step, and any of the compilation units that contributed variables to a particular partition had storage offset information encoded in the IPA object file, the IPA link step generates a Storage Offset listing section for that partition.

The Storage Offset listing displays the variables that IPA did not coalesce. The symbol definition information appears as file#:line#.

Static Map

If you specify the ATTR or XREF option, the listing file includes offset information for file scope read/write static variables.

Messages

If the IPA link step detects an error, or the possibility of an error, it issues one or more diagnostic messages, and generates the Messages listing section. This listing section contains a summary of the messages that are issued during IPA link step processing.

The IPA link step listing sorts the messages by severity. The Messages listing section displays the listing page number where each message was originally shown. It also displays the message text, and optionally, information relating the error to a file name, line (if known), and column (if known).

For more information on compiler messages, see FLAG | NOFLAG, and z/OS XL C/C++ Messages.

Message Summary

This listing section displays the total number of messages and the number of messages for each severity level.

The following tables show the components that are included in the listing depending on which option is specified:

Table 1. IPA link step listing components
Listing Component

-Wl,
I,
ATTR

-Wl,
I,
INLINE
(,
REPORT
,,)

-Wl,
I,
INLRPT
(des
tina
tion)

-Wl,
I,
IPA
(MAP)

-Wl,
I,
LIST
(des
tina
tion)

-Wl,
I,
XREF

-V Phase
Compiler Options Map           IPA Link
Cross-Reference Table             Binder
Entry Point and Alias Summary             Binder
External Symbol Cross-Reference         Backend
External Symbol Dictionary           Backend
Global Symbols Map **           IPA Link
Imported and Exported Symbols             Binder
Inline Report           IPA Link
Input List             Binder
Message Summary IPA Link
Message Summary Report             Binder
Messages * IPA Link
Module Map             Binder
Object File Map           IPA Link
Partition Map           IPA Link
Processing Options             Binder
Prolog IPA Link
Pseudo Assembly Listing           Backend
Save Module Attributes             Binder
Save Operation Summary             Binder
Source File Map           IPA Link
Storage Offset Listing             Backend

* This section is only generated if diagnostic messages are issued.

** This section is only generated if the IPA Link phase coalesces global variables.