ABSTRACT
Live range splitting techniques improve global register allocation by splitting the live ranges of variables into segments that are individually allocated registers. Load/store range analysis is a new technique for live range splitting that is based on reaching definition and live variable analyses. Our analysis localizes the profits and the register requirements of every access to every variable to provide a fine granularity of candidates for register allocation. Experiments on a suite of C and FORTRAN benchmark programs show that a graph coloring register allocator operating on load/store ranges often provides better allocations than the same allocator operating on live ranges. Experimental results also show that the computational cost of using load/store ranges for register allocation is moderately more than the cost of using live ranges.
- 1.A. V. Aho, R. Sethi and J. D. Ullman, Compilers, Principles, Techniques, and Tools, Addison- Wesley Publishing Company, 1986. Google ScholarDigital Library
- 2.D. Bernstein, D. Q. Goldin, M. C. Golumbic, H. Krawczyk, Y. Mansour, I. Nahshon and R. Y. Pinter, "Spill code minimization techniques for optimizing compilers", Proceedings of ti~e A CM $IGPLAN '89 Conference on Programmi~g Language Design and Implementation, $igplan Notices, vol. 24, no. 6, pp. 258-263, June, 198c~. Google ScholarDigital Library
- 3.P. Briggs, K. D. Cooper, K. Kennedy and L. Torezon, "Coloring heuristics for register allocation", Proceedings of the A CM ${GPLAN '89 Conference on Programming Language Design and implementation, Sigplan Notices, vol. 24, no. 6, pp. 275- 284, June, 1989. Google ScholarDigital Library
- 4.P. Briggs, K. D. Cooper and L. Torczon, "Rematerialization", Proceedings of the ACM SIG- PLAN '9~ Conference on Programming Language Design and Implementation, Sigplan Notices, vol. 27, no. 7, pp. 311-321, June, 1992. Google ScholarDigital Library
- 5.D. Callahan and B. Koblenz, "Register allocation via hierarchical graph coloring", Proceedings of the ACM $IGPLAN '91 Conference on Programming Language Design and Implementation, Sigplan Notices, vol. 26, no. 6, pp. 192-203, June, 1991. Google ScholarDigital Library
- 6.G. J. Chaitin, M. A. Auslander, A. K. Chandra, J. Cocke and P. W. Markstein, "Register allocation via coloring", Computer Languages, vol. 15, pp. 47-57, January, 1981.Google ScholarCross Ref
- 7.G. J. Chaitin, "Register allocation and spilling via coloring", Proceedings of the A CM S~GPLA N '82 Symposium on Compiler Construction, Sigplan Notices, vol. 17, no. 6, pp. 98-105, June, 1982. Google ScholarDigital Library
- 8.F. Chow and J. Hennessy, "The priority-based coloring approach to register allocation", A CM Transactions on Programming Languages and Systems, vol. 12, no. 4, pp. 501-536, October, 1990. Google ScholarDigital Library
- 9.R. Cytron and J. Ferrante, "What's in a name? The value of renaming for parallelism detection and storage allocation", Proceedings of the 1987 International Conference on Parallel Processing, pp. 19-27, August, 1987.Google Scholar
- 10.R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman and F. K. Zadeck, "Efficiently computing static single assignment form and the control dependence graph", A CM Transactions on Programming Languages and Systems, vol. 13, no. 4, pp. 451-490, October, 1991. Google ScholarDigital Library
- 11.S.I. Feldman, D. M. Gay, M. W. Maimone and N. L. Schryer, A Fortran-to-C converter, Computing Science Technical Report No. 149, AT2~T Bell Laboratories, Murray Hill NJ, November, 1990.Google Scholar
- 12.M. R. Garey and D. S. Johnson, Computers and Intractability: A Guide to the Theory of NP-Completeness, W.H. Freeman and Company, New York, 1989. Google ScholarDigital Library
- 13.M. J. Harrold and P. Kolte, "Combat: A compiler based data flow testing system", Proceedings of the 10th Pacific Northwest Software Quality Conference, October, 1992.Google Scholar
- 14.J. L. Hennessy and D. A. Patterson, Computer Architecture: A Quantitative Approach, Morgan Kaufmann Publishers, Inc., 1990. Google ScholarDigital Library
- 15.W.-C. Hsu, C. N. Fischer and J. R. Goodman, "On the minimization of loads/stores in local register allocation", IEEE Transactions on Software Engineering, vol. 15, no. 10, pp. 1252-1260, October, 1989. Google ScholarDigital Library
- 16.P. Kolte, "Load/store range analysis for global register allocation," Masters Paper, Clemson University, August, 1992.Google Scholar
- 17.J. R. Larus and P. N. Hilfinger, "Register allocation in the SPUR Lisp compiler", Proceedings of the A CM Symposium on Compiler Construction, Sigplan Notices, vol. 21, no. 6, pp. 255-263, June, 1986. Google ScholarDigital Library
- 18.T. A. Proebsting and C. N. Fischer, "Probabilistic register allocation", Proceedings of the A CM SIGPLAN '9~ Conference on Programming Language Design and Implementation, Sigplan Notices, vol. 27, no. 7, pp. 300-310, June, 1992. Google ScholarDigital Library
- 19.R. M. Stallman, "Using and porting GNU CC (version 1.37.1)," Free Software Foundation, Inc., Cambridge MA, February, 1990.Google Scholar
Index Terms
- Load/store range analysis for global register allocation
Recommendations
Load/store range analysis for global register allocation
Live range splitting techniques improve global register allocation by splitting the live ranges of variables into segments that are individually allocated registers. Load/store range analysis is a new technique for live range splitting that is based on ...
Bytewise Register Allocation
SCOPES '15: Proceedings of the 18th International Workshop on Software and Compilers for Embedded SystemsTraditionally, variables have been considered as atoms by register allocation: Each variable was to be placed in one register, or spilt (placed in main memory) or rematerialized (recalculated as needed). Some flexibility arose from what would be ...
Fusion-based register allocation
The register allocation phase of a compiler maps live ranges of a program to registers. If there are more candidates than there are physical registers, the register allocator must spill a live range (the home location is in memory) or split a live range ...
Comments