Proceedings of the 19th ACM SIGPLAN International Conference on Functional Programming 2014
DOI: 10.1145/2628136.2628153
|View full text |Cite
|
Sign up to set email alerts
|

Practical and effective higher-order optimizations

Abstract: Inlining is an optimization that replaces a call to a function with that function's body. This optimization not only reduces the overhead of a function call, but can expose additional optimization opportunities to the compiler, such as removing redundant operations or unused conditional branches. Another optimization, copy propagation, replaces a redundant copy of a still-live variable with the original. Copy propagation can reduce the total number of live variables, reducing register pressure and memory usage… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
4
0
1

Year Published

2015
2015
2021
2021

Publication Types

Select...
5
1
1

Relationship

1
6

Authors

Journals

citations
Cited by 8 publications
(5 citation statements)
references
References 25 publications
0
4
0
1
Order By: Relevance
“…We support the parallelism and concurrency features of PML by transformations on the AST and BOM representations that introduce explicit continuation binders [15,16,4,25]. The translation from BOM to CPS uses the Danvy-Filinski CPS transformation [7] and we perform several kinds of optimizations on the CPS IR [5,3]. The conversion from CPS to CFG uses a flat, safe-for-space, closure representation [6].…”
Section: The Pml Compilermentioning
confidence: 99%
See 1 more Smart Citation
“…We support the parallelism and concurrency features of PML by transformations on the AST and BOM representations that introduce explicit continuation binders [15,16,4,25]. The translation from BOM to CPS uses the Danvy-Filinski CPS transformation [7] and we perform several kinds of optimizations on the CPS IR [5,3]. The conversion from CPS to CFG uses a flat, safe-for-space, closure representation [6].…”
Section: The Pml Compilermentioning
confidence: 99%
“…This technique is borrowed from the SML/NJ system; the spill limit is enforced by the compiler limiting the number of live variables at any control point and over-provisioning the spill area. 3 In short sequences, LLVM's code generator may introduce one or two additional spills, but by limiting the number of values early on, we effectively bound the number of register spills. LLVM's code generator will assign any register spills to frame locations starting from the bottom of the frame, offset from the stack pointer, so the shim preserves all C callee-saved registers at the top of the frame.…”
Section: Proper Tail-call Optimizationmentioning
confidence: 99%
“…From Γ, ϕ |= t l we have Γ, ϕ |= x l 1 , showing Condition 1. Expanding the constraints for Γ, ϕ |= t l further, we get: K l 2 0 ∈ Γ(l 2 ); hence Γ(l 1 ) ⊆ Γ(l 2 .K.0) and K l 2 1 ∈ Γ(l 3 ); thus Γ(l 2 .K.0) ⊆ Γ(l 4 ). Combining these gives Γ(l 1 ) ⊆ Γ(l 4 ), proving Condition 2.…”
Section: Proof Case Split On the Two Kinds Of Top-level Reduction (Smentioning
confidence: 99%
“…0CFA [20] is a popular form of Control Flow Analysis. It is flow insensitive and context insensitive, but precise enough to be useful for many applications, including guiding compiler optimisations [17,2], providing autocompletion hints in IDEs and noninterference analysis [14]. It is perhaps the simplest static analysis that handles higher order functions, which are a staple of functional programming.…”
Section: Cfa For Lambda Calculusmentioning
confidence: 99%
See 1 more Smart Citation