2013
DOI: 10.1145/2480741.2480743
|View full text |Cite
|
Sign up to set email alerts
|

Intermediate representations in imperative compilers

Abstract: 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 mainstr… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1
1

Citation Types

0
13
0

Year Published

2015
2015
2022
2022

Publication Types

Select...
3
3
2

Relationship

0
8

Authors

Journals

citations
Cited by 18 publications
(13 citation statements)
references
References 47 publications
0
13
0
Order By: Relevance
“…Many different IRs emerged for simplifying program analysis and optimizations [Stanier and Watson 2013]. The RVSDG is related to SSA [Cytron et al 1989], gated SSA [Tu and Padua 1995], and thinned gated SSA [Havlak 1993].…”
Section: Intermediate Representationsmentioning
confidence: 99%
See 1 more Smart Citation
“…Many different IRs emerged for simplifying program analysis and optimizations [Stanier and Watson 2013]. The RVSDG is related to SSA [Cytron et al 1989], gated SSA [Tu and Padua 1995], and thinned gated SSA [Havlak 1993].…”
Section: Intermediate Representationsmentioning
confidence: 99%
“…The main intermediate representation (IR) for imperative languages in modern compilers is the Control Flow Graph (CFG) [Stanier and Watson 2013]. It explicitly encodes arbitrarily complex control flow, admitting unconstrained control flow optimizations and efficient object code generation.…”
Section: Introductionmentioning
confidence: 99%
“…a sea of IR nodes [17] and E-PEG [78]). However, these IRs complicate the debugging process of program compilation, and are seldom used in real-world, mainstream compilers [74]. Although we did not consider using these IRs, it would be an interesting direction for our future work, particularly when targeting parallel architectures.…”
Section: A More On Intermediate Represen-tationsmentioning
confidence: 99%
“…The GADT pattern-matching above may give a false sense of safety to the programmer -in fact, the latest version of the Scala compiler 4 will happily compile the same code but where f ( beta ( a )) has been replaced by f ( Const (1) On the other hand, the need often arises for more advanced IRs than plain AST [Stanier and Watson 2013], such as ANF (Administrative Normal Form) [Flanagan et al 1993], SSA (Static Single Assignment) or CFG (Control Flow Graph). This is particularly important when DSLs start incorporating effects and mutability, where evaluation order and aliasing become significant.…”
Section: Explicit Approachmentioning
confidence: 99%