Survey on Combinatorial Register Allocation and Instruction Scheduling

Roberto Castañeda Lozano, Christian Schulte

Research output: Contribution to journalArticlepeer-review


Register allocation (mapping variables to processor registers or memory) and instruction scheduling (reordering instructions to increase instruction-level parallelism) are essential tasks for generating efficient assembly code in a compiler. In the past three decades, combinatorial optimization has emerged as an alternative to traditional, heuristic algorithms for these two tasks. Combinatorial optimization approaches can deliver optimal solutions according to a model, can precisely capture trade-offs between conflicting decisions, and are more flexible at the expense of increased compilation time.

This article provides an exhaustive literature review and a classification of combinatorial optimization approaches to register allocation and instruction scheduling, with a focus on the techniques that are most applied in this context: integer programming, constraint programming, partitioned Boolean quadratic programming, and enumeration. Researchers in compilers and combinatorial optimization can benefit from identifying developments, trends, and challenges in the area; compiler practitioners may discern opportunities and grasp the potential benefit of applying combinatorial optimization.
Original languageEnglish
Article number62
Pages (from-to)62:1-62:50
Number of pages50
JournalACM Computing Surveys
Issue number3
Publication statusPublished - 18 Jun 2019


  • register allocation
  • instruction scheduling
  • Combinatorial optimization

Fingerprint Dive into the research topics of 'Survey on Combinatorial Register Allocation and Instruction Scheduling'. Together they form a unique fingerprint.

Cite this