Structure Reorganization Optimization
- This project aims to continue implementing structures reorganization optimization suggested by Mostafa Hagoge and Caroline
Tice in their paper "Cache aware data layout reorganization optimizations" presented on GCC Developers' Summit 2005. In this optimization, each C language data structure is considered along with its instances. The analysis part, based on gcc basic block profiling, calculates the data structure field accesses and their mutual positions in the memory layout. Then the subsequent decision stage suggests the optimal reorganization of the data structure definition when driven by consideration of cache locality. The three types of reorganizations can be concluded by this stage: fields reordering, structure peeling and structure splitting (is not yet implemented). The fields reordering transformation changes the order of fields in the structure leaving other aspects of its definition untouched. The structure splitting transformation is used to distribute the fields of original structure among newly defined structures while preserving their original reachibility through introduction of pointers. The structure peeling transformation is a particular case of structure splitting in which introduction of pointers is not needed. The selected transformation is performed as part of transformation stage.
- Olga Golovanevsky
- The former version is ready on struct-reorg-branch. Clean ups and updates will be available by 2006-01-01.
- Compile time and memory savings. Simplification of the induction variable optimizations code.
- Unknown; the former version has been based on the former tree-profiling branch.
- A new optimization pass need to be added to be activated by new C language hook.