Compiler Optimizations

Optimizations

Basic Optimizations
Basic optimizations are a family of common types of optimizations, such as Constant Folding, Strength Reduction, Simplification, and many others.
Bit Tracker
Bit Tracker tracks the known state of bits and value ranges thru the various operations. This enables various optimization and shortcuts.
Long Expansion
Expands 64-bit instructions into 32-bit components for platforms without native 64-bit instructions.
Inline Expansion
Inline Expansion replaces a methods call site with the body of the called method. This improves the performance, because calls can be expensive (storing the registers, placing the arguments onto stack, jumping to another location).
Static Single Assignment Form
Transforms instructions to Single Static Assignment (SSA) form. In SSA form, all virtual registers may only have one definition. This is not an optimization by itself, but this form enables other optimization opportunities in other types of optimizations.
Sparse Conditional Constant Propagation
Sparse conditional constant propagation is an optimization applied after conversion to static single assignment form (SSA). It simultaneously removes dead code and propagates constants. It can finds more constant values, and thus more opportunities for improvement, than other optimizations.
Value Numbering
Value numbering is a technique of determining when two computations in a program are equivalent and eliminating one of them with while preserving the same semantics.
Two Pass Optimizations
This options causes the optimization stages to be executed again, possibility unlocked additional optimizations.