The biggest change for Inter-procedural Analysis is scalability. For parallelism, we want a stable and compact intermediate representation. Then we can do transformations. Some of these transformations are local, and some are global.
local:

  • Devirtualization

  • Dead store elimination

  • Field reordering global:

  • cross-module inlining

  • Virtual function inlining

  • Inter-procedural constant propagation

  • Whole-program Analysis