In a region-based compilation framework, the compiler builds regions to provide the best compilation unit for scheduling and optimization. The compiler uses execution frequency information gained from profiling to place frequently executed blocks in the same region. This paper investigates the use of profiling in a region-based compilation framework and measures its impact on the register allocation phase. The profiling information can be used by the register allocator to assign values to physical registers based on the execution frequency of the regions. Register allocation can be performed on the most frequently executed regions first so that any spilling that occurs causes memory accesses in less frequently executed regions. The experimental study indicates that profile assisted region formation and register allocation can result in code that executes faster than the code that was compiled without using profiling information and the amount of spill code executed can be reduced significantly.
['Kameswari V. Garigipati', 'Cindy Norris']
Evaluating the use of profiling by a region-based register allocator