Abstract
Functional programming languages provide a perspective on SSA that complements presentations based on phi-functions using notions such as nested scope, parameter passing, and mutually recursive function definitions. The correspondence extends from syntactic aspects to tasks such as SSA construction, data-flow analysis, and program transformations, and can be expressed in terms of multiple intermediate representation forms, all commonly found in compilers for functional programming languages. The chapter concludes with a discussion of loop nesting forests and their relationship to the relative placement of mutually recursive functions during block sinking and lambda dropping.
Original language | English (US) |
---|---|
Title of host publication | SSA-based Compiler Design |
Publisher | Springer International Publishing |
Pages | 63-88 |
Number of pages | 26 |
ISBN (Electronic) | 9783030805159 |
ISBN (Print) | 9783030805142 |
DOIs | |
State | Published - Jan 1 2022 |
All Science Journal Classification (ASJC) codes
- General Engineering
- General Computer Science
Keywords
- Alpha-renaming
- Basic-block sinking
- Compiler design
- Continuation-based form (CPS form)
- Direct style
- Formal parameters
- Free variable
- Functional loop nesting
- Functional program representation
- Irreducible graph
- Lambda-dropping
- Lambda-lifting
- Let-binding
- Loop nesting forest
- Loop-closed
- Lost-copy problem
- Parameter dropping
- Reducible graph
- Referential transparency
- SSA destruction
- Static scope
- Static single assignment form (SSA form)
- Swap problem
- Syntactic scope
- Tail-recursive
- Vanilla SSA