- GCC currently perform interprocedural optimizations on plain low GIMPLE, while all global optimizations are performed on SSA level GIMPLE. Analysis is easier on SSA and thus moving interprocedural optimizations to SSA will allow implementing more powerful optimizations. Also pass ordering issues can be relaxed and early optimizations can be done.
- Honza Hubička
- First part of patches was already sent for ipa branch
- In short term a small inlining heuristic improvements. 1% speedup on SPECint for single file optimization, 2% speedup with --combine. 7% speedup on Tramp3d. There are memory usage increases on tramp3d, no measurable changes on combine.c
- The merge plan is roughly
localize SSA variables into cfun->ssa (patch sent)
- resolve variable annotations issues (IPA branch use rather hackish way, perhaps decomposing annotations and making them disappear is good stage1 subproject)
- pass manager updates
- operand scan update to allow simple optimization without aliasing (currently IPA branch can't do aliasing early because of variable annotations, might be unnecesary if aliasing code was localized)
- inliner updates to maintain SSA form
- change to SSA inlining by default
- change to SSA IPCP - by Razya
- possible merge of other optimizations passes housed on IPA branch, not part of this project.