About Interprocedural Optimization (IPO)

  • The compiler may produce faster code.

  • No makefile changes are required with -Qip.

  • -Qipo is the only option that enables multi-file optimizations.

  • Code size may bloat.

  • Compilation may take more time.

    Interprocedural optimization (IPO) enables multifile inlining, constant propagation, code placement (i.e. function layout), and data placement. It also provides information about parameters that are aliased, modified, or referenced across call sites. Also, see disambiguation.

    When IPO is enabled, the compiler analyzes your code for these optimizations:
    • inline function expansion—affecting calls, jumps, branches and loops
    • interprocedural constant propagation—affecting arguments, global variables and return values
    • dead code elimination—affecting code size
    • propagation of function characteristics—affecting call deletion and call movement

    Use IPO in conjunction with PGO for further performance improvement.