Squeampiler
Last updated at 2:16 am UTC on 17 July 2004
Squeampiler is an retargetable optimizing compiler backend for Squeak by Lee Salzman. Squeampiler aspires to become a dynamic and static compiler for Squeak. Squeampiler implements a number of strong optimizations and analyses found in commercial compilers including the following:
- SSA translation
- Memory alias analysis
- Loop detection with induction variable classification
- Loop unrolling
- Partial redundancy elimination of expressions (including memory loads and bounds checks)
- Strength reduction
- Linear function test replacement
- Loop limit substitution of bounds check expressions
- Dead code and dead store elimination
- Second-chance linear scan register allocation
- Constant and copy propagation
- Expression simplification
Squeampiler is currently still under development and is lacking in various bits of glue code and targets. However, Squeampiler is rapidly approaching feature completeness and may be useable very soon. The current code can be downloaded at:
http://www.tunes.org/~eihrul/Squeampiler.cs
References:
- "Partial Redundancy Elimination in SSA Form", Kennedy et al
- "Strength Reduction via SSAPRE", Kennedy et al
- "Register Promotion by Sparse Partial Redundancy Elimination of Loads and Stores", Lo et al
- "Elimination of Redundant Array Subscript Range Checks", Kolte et al
- "Beyond Induction Variables: Detecting and Classifying Sequences Using a Demand-Driven SSA Form", Gerlek et al
- "Practical Improvements to the Construction and Destruction of Static Single Assignment Form", Briggs et al
- "Finding Regions Fast: Single Entry Single Exit and Control Regions in Linear Time", Johnson et al
- "Quality and Speed in Linear-scan Register Allocation", Traub et al