Progressive Spill Code Placement
Dietmar Ebner, Bernhard Scholz, and Andreas Krall

Abstract:

Register allocation has gained renewed attention in the recent past. Several authors propose a separation of the problem into decoupled sub-tasks including spilling, allocation, assignment, and coalescing. This approach is largely motivated by recent advances in SSA-based register allocation that suggest that a decomposition does not significantly degrade the overall allocation quality.

The algorithmic challenges of intra-procedural spilling have been neglected so far and very crude heuristics were employed. In this work, (1) we introduce the constrained min-cut (CMC) problem for solving the spilling problem, (2) we provide an integer linear program formulation for computing an optimal solution of CMC, and (3) we devise a progressive Lagrangian solver that is viable for production compilers. Our experiments with Spec2k and MiBench show that optimal solutions are feasible, even for very large programs, and that heuristics leave significant potential behind for small register files.

Published:

"Progressive Spill Code Placement"
Dietmar Ebner, Bernhard Scholz, and Andreas Krall.
Proceedings of the 2009 international conference on Compilers, architecture, and synthesis for embedded systems (CASES'09) , Grenoble, France, October 2009.

Download:

Paper:

BibTeX Entry:

@inproceedings{1629408,
 author = {Ebner, Dietmar and Scholz, Bernhard and Krall, Andreas},
 title = {Progressive spill code placement},
 booktitle = {CASES '09: Proceedings of the 2009 international conference on Compilers, architecture, and synthesis for embedded systems},
 year = {2009},
 isbn = {978-1-60558-626-7},
 pages = {77--86},
 location = {Grenoble, France},
 doi = {http://doi.acm.org/10.1145/1629395.1629408},
 publisher = {ACM},
 address = {New York, NY, USA},
 }

Valid CSS! Valid HTML 4.01!