A simple interprocedural register allocation algorithm and its effectiveness for LISP

  • Authors:
  • Peter A. Steenkiste;John L. Hennessy

  • Affiliations:
  • Carnegie-Mellon Univ., Pittsburgh, PA;Stanford Univ., Stanford, CA

  • Venue:
  • ACM Transactions on Programming Languages and Systems (TOPLAS)
  • Year:
  • 1989

Quantified Score

Hi-index 0.00

Visualization

Abstract

Register allocation is an important optimization in many compilers, but with per-procedure register allocation, it is often not possible to make good use of a large register set. Procedure calls limit the improvement from global register allocation, since they force variables allocated to registers to be saved and restored. This limitation is more pronounced in LISP programs due to the higher frequency of procedure calls. An interprocedural register allocation algorithm is developed by simplifying a version of interprocedural graph coloring. The simplification corresponds to a bottom-up coloring of the interference graph. The scheme is evaluated using a number of LISP programs. The evaluation considers the scheme's limitations and compares these “software register windows” against the hardware register windows used in the Berkeley RISC and SPUR processors.