Affiliation:
1. IBM Rochester
2. SGI, Mountain View CA
3. University of Minnesota, Department of Electrical Engineering, Minneapolis, MN
Abstract
Many optimizing compilers perform global register allocation using a Chaitin-style graph coloring algorithm. Live ranges that cannot be allocated to registers are spilled to memory. The amount of code required to spill the live range depends on the spilling heuristic used. Chaitin's spilling heuristic offers some guidance in reducing the amount of spill code produced. However, this heuristic does not allow the partial spilling of live ranges and the reduction in spill code is limited to a local level. In this paper, we present a global technique called
interference region
spilling that improves the spilling granularity of any local spilling heuristic. Our technique works above the local spilling heuristic, limiting the normal insertion of spill code to a portion of each spilled live range. By partially spilling live ranges, we can achieve large reductions in dynamically executed spill code; up to 75% in some cases and an average of 33.6% across the benchmarks tested.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
28 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Bibliography;Engineering a Compiler;2023
2. Register Allocation;Engineering a Compiler;2023
3. Register allocation and spilling using the expected distance heuristic;Software: Practice and Experience;2016-02-07
4. Color Flipping;Programming Languages;2015
5. Register Loading via Linear Programming;Algorithmica;2014-05-30