-qipa
The -qipa option enables interprocedural analysis (IPA) by the compiler.
This enables the compiler to identify optimization opportunities
across procedural
boundaries. It does this by extending the area that is
examined during optimization and inlining from a single procedure to multiple
procedures (possibly in different source files) and the linkage between
them. This option should be included in both the compile and link phases.
There are a rich collection of suboptions of the form -qipa=suboption. See
the compiler man pages for more details about these suboptions. Some
useful options are the -qipa=level=n options where n can be 0, 1, or 2. These
determine the amount of
interprocedural analysis and optimization that is performed. As with the
-On options, the higher the number, the greater the amount of optimization
performed.
-qipa=level=0
This does only minimal interprocedural analysis and optimization.
-qipa=level=1 (-qipa)
This is the default level for ipa. The two options -qipa=level=1 and
-qipa are identical.
This level turns on inlining, limited alias analysis, and limited
call-site tailoring.
Inlining a procedure causes a
procedure call to be replaced by the procedure
itself to eliminate the overhead of the call.
An alias occurs when different variables
in a program refer to the same area of storage. If the compiler is unsure
whether a given global variable is aliased, it will assume that every
procedure call might cause the variable to be read or changed. For this
reason it will generate extra loads
and stores to preserved the value of the variable when the procedure is
called instead of storing it in a register.
Call-site tailoring is IBM's generic term for
optimizations that are performed on a function-call basis
like cloning and inlining.
-qipa=level=2
This ipa level performs full interprocedural data flow and alias analysis.
|