IPA Compile step processing

You invoke the IPA Compile step by specifying the IPA(NOLINK) compiler option, as shown in Figure 1. (NOLINK is the default suboption). During the IPA Compile step, the compiler creates optimized objects. These objects contain information that the IPA Link step can use for further optimization.

Figure 1. IPA compile step processing
Graphic showing IPA compile step processing
The following processing takes place for each compilation unit that you specify for the IPA Compile step:
  1. The compiler determines the final suboptions for the IPA option, based upon the compiler options and IPA suboptions that you specified. This is necessary because the compiler does not support some combinations of compiler options and IPA suboptions. The compiler issues a warning message if it finds unsupported combinations.
  2. The compiler promotes some IPA suboptions based upon the presence of related compiler options and issues informational messages if it does so. For more information, see interactions in z/OS XL C/C++ User's Guide.
  3. The compiler generates an IPA object file. This object file contains control information for a compilation unit required for the IPA Link step.

    The IPA object module produced by IPA (NOLINK,NOOBJECT) has the same structure as a regular object module. It should not be used as input to the prelinker, linker, or binder.

    Each IPA object contains a CSECT that includes the ESD name @@IPAOBJ.

  4. If you specify the OBJECT suboption of the IPA option, the compiler produces a combined IPA and conventional object file. While the conventional object file is not required by the IPA Link step, creating it permits you to bind this file to create an executable module, without doing the IPA Link step, because it is more difficult to debug coded optimized by the interprocedural analysis.

During the IPA Compile step, the compiler generates information that allows you to create object libraries with the C370LIB utility or to create z/OS® UNIX archives with the ar utility. The information consists of XSD and ESD records for the external symbols that were defined in the compilation units of your program. You can use the object libraries and z/OS UNIX archives for autocall searching in the IPA Link step. During autocall searching, the IPA Link step searches these libraries and archives for external references from your program.