Compilers commonly translate an input program into an intermediate representation (IR) before optimizing it and generating code. Over time there have been a number of different approaches to designing and implementing IRs. Different IRs have varying benefits and drawbacks. In this survey, we highlight key developments in the area of IR for imperative compilers, group them by a taxonomy and timeline, and comment on the divide between academic research and real-world compiler technology. We conclude that mainstream compilers, especially in the multicore era, could benefit from further IR innovations
Abstract. The development and implementation of source-to-source code transformations based on high-...
Program analysis has many applications in software engi-neering and high-performance computation, su...
Most compilers have a single core intermediate representation (IR) (e.g., LLVM) sometimes complement...
Designing compiler intermediate representations (IRs) is often a manual process that makes explorati...
Intermediate representations (IR) are a key issue both for compilers as well as for reverse engineer...
The emergence of heterogeneous parallel systems opens the possibility of higher performance for comp...
High level data structures are a cornerstone of modern programming and at the same time stand in the...
The intermediate representations (IR) used by most compilers have an operational semantics. The node...
124 p.Thesis (Ph.D.)--University of Illinois at Urbana-Champaign, 2003.Much of the research in compi...
Static Single Assignment (SSA) is an Intermediate Representation (IR) that simplifies the design and...
Every compiler passes code through several stages, each a sort of mini- compiler of its own. Thus...
The OpenModelica compiler currently generates code directly from a syntax tree representation, which...
This work was also published as a Rice University thesis/dissertation: http://hdl.handle.net/1911/16...
Compilers for higher-order programming languages like Scheme, ML, and Lisp can be broadly characteri...
We present AHIR, an intermediate representation (IR), that acts as a transition layer between softwa...
Abstract. The development and implementation of source-to-source code transformations based on high-...
Program analysis has many applications in software engi-neering and high-performance computation, su...
Most compilers have a single core intermediate representation (IR) (e.g., LLVM) sometimes complement...
Designing compiler intermediate representations (IRs) is often a manual process that makes explorati...
Intermediate representations (IR) are a key issue both for compilers as well as for reverse engineer...
The emergence of heterogeneous parallel systems opens the possibility of higher performance for comp...
High level data structures are a cornerstone of modern programming and at the same time stand in the...
The intermediate representations (IR) used by most compilers have an operational semantics. The node...
124 p.Thesis (Ph.D.)--University of Illinois at Urbana-Champaign, 2003.Much of the research in compi...
Static Single Assignment (SSA) is an Intermediate Representation (IR) that simplifies the design and...
Every compiler passes code through several stages, each a sort of mini- compiler of its own. Thus...
The OpenModelica compiler currently generates code directly from a syntax tree representation, which...
This work was also published as a Rice University thesis/dissertation: http://hdl.handle.net/1911/16...
Compilers for higher-order programming languages like Scheme, ML, and Lisp can be broadly characteri...
We present AHIR, an intermediate representation (IR), that acts as a transition layer between softwa...
Abstract. The development and implementation of source-to-source code transformations based on high-...
Program analysis has many applications in software engi-neering and high-performance computation, su...
Most compilers have a single core intermediate representation (IR) (e.g., LLVM) sometimes complement...