Global register allocation using program structure

The Chaitin-Briggs approach to register allocation by graph coloring is the dominant method used in industrial and research compilers. It usually produces highly-efficient allocations, but sometimes exhibits pathological spilling behavior so that some programs execute significantly more spill operat...

Full description

Bibliographic Details
Main Author: Eckhardt, Jason
Other Authors: Cooper, Keith D.
Format: Others
Language:English
Published: 2009
Subjects:
Online Access:http://hdl.handle.net/1911/17773
Description
Summary:The Chaitin-Briggs approach to register allocation by graph coloring is the dominant method used in industrial and research compilers. It usually produces highly-efficient allocations, but sometimes exhibits pathological spilling behavior so that some programs execute significantly more spill operations than is necessary. This thesis examines and improves two previously proposed approaches of attacking this problem. Passive splitting attempts a lazy form of live range splitting which can substantially reduce dynamic spill count compared to Chaitin-Briggs. We incorporate program structure into the passive splitting framework to better guide splitting decisions and to place splits at infrequently executed regions of code. Also investigated is the Hierarchical Graph Coloring approach, which uses program structure during allocation. We provide an empirical evaluation of this poorly-understood algorithm, and propose some improvements.