About Interprocedural Optimization (IPO)

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

 

Interprocedural optimization (IPO) enables multi-file 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.

Enable IPO with the following options:

  • -Qip (-ip on Linux*) for single-file analysis
  • -Qipo (-ipo on Linux) for analysis across multiple files

You need to use IPO during both compilation and linking.

Use IPO in conjunction with PGO for further performance improvement.