Contributors:
- Steven Bosscher
- Dale Johannesen
- Stuart Hasting
- Jan Hubicka
Delivery Date:
- 2005-03-31
Dependencies:
Description:
- Going to low GIMPLE and building the CFG before inlining to allow profile guided inlining. This is one of the most important profile guided optimizations. The most important changes are needed to allow multiple CFGs to co-exist. This requires some changes to the APIs previously discussed
with rth. Basically we add _FN versions of some of the current basic block traversing macros, with an extra parameter specifying the struct function to manipulate.
The CFG is now a substructure of struct function to allow manipulating the CFG for each function without destroying the CFG for other functions. There are also some EH changes to make this work. These changes are required to allow the tree-inliner to inline function bodies as CFGs instead of a tree. The risks are mainly in:
- the currently not completely ideal shape of the CFG inliner
- (concerning code cleanness and maintainability, but I hope to resolve this before March 31); and
- an increased memory footprint because we keep statement
- annotations and basic block datastructures around for every function. I can provide data on this.
Status:
- The CFG inliner has now (2005-05-17) been merged. Other parts including the Profile Based Inliner have not yet been included in mainline. Other projects can make use of the CFG inliner now.