Class Summary |
EnterSSA |
This compiler phase constructs SSA form. |
GCP |
Global code placement comes in two flavours. |
GCP.GCPFinalization |
This class sets up the IR state prior to entering SSA for GCP |
GCP.GCPPreparation |
This class sets up the IR state prior to entering SSA for GCP |
GlobalCSE |
This class provides global common sub expression elimination. |
GlobalValueNumber |
This class implements global value numbering
ala Alpern, Wegman and Zadeck, PoPL 88. |
GlobalValueNumberState |
This class holds the results of global value numbering. |
GVCongruenceClass |
This class represents a congruence class for
global value numbering. |
HeapVariable<T> |
An HeapVariable represents a heap variable for heap array SSA form. |
IndexPropagation |
Perform index propagation (see Fink, Knobe && Sarkar, SAS 2000)
This analysis computes for each Array SSA variable A,
the set of value numbers V(k) such that location
A[k] is "available" at def A, and thus at all uses of A
We formulate this as a data flow problem as described in the paper. |
IndexPropagation.ArrayCell |
An ArrayCell is a lattice cell for the index propagation
problem, used in redundant load elimination for one-dimensional arrays. |
IndexPropagation.ObjectCell |
An ObjectCell is a lattice cell for the index propagation
problem, used in redundant load elimination for fields. |
IndexPropagationSystem |
Represents a set of dataflow equations used to solve the
index propagation problem. |
IndexPropagationSystem.MeetOperator |
Represents a MEET function (intersection) over Cells. |
IndexPropagationSystem.UpdateUseArrayOperator |
Represents an UPDATE_USE function over two ArrayCells. |
IndexPropagationSystem.UpdateUseObjectOperator |
Represents an UPDATE_USE function over two ObjectCells. |
LeaveSSA |
This compiler phase translates out of SSA form. |
LeaveSSA.Copy |
An instance of this class represents a pending copy instruction
to be inserted. |
LeaveSSA.VariableStacks |
This class provides an abstraction over stacks of names
for registers. |
LICM |
This class does loop invariant code movement. |
LiveRangeSplitting |
Perform live-range splitting. |
LiveRangeSplitting.LiveRangeSplittingPhase |
|
LiveRangeSplitting.LiveRangeSplittingPhase.BasicBlockPair |
A utility class to represent an edge in the CFG. |
LiveRangeSplitting.RenamePreparation |
This class sets up the IR state prior to entering SSA. |
LoadElimination |
This class implements the redundant load elimination by
Fink, Knobe && Sarkar. |
LoadElimination.GVNPreparation |
This class sets up the IR state prior to entering SSA for GVN. |
LoadElimination.LoadEliminationPreparation |
This class sets up the IR state prior to entering SSA for load
elimination |
LoadElimination.LoadEliminator |
|
LoadElimination.UseRecord |
|
LoadElimination.UseRecordSet |
|
LoopVersioning |
This optimisation works from the outer most loop inward, optimising
loops that conform to being regular AnnotatedLSTNode s. |
PiNodes |
This pass inserts PI nodes (Effectively copies)
on branch edges, to introduce new names for analysis |
RedundantBranchElimination |
Redundant branch elimination based on SSA form, global value numbers,
and dominance relationships. |
RedundantBranchElimination.EnsureSSA |
|
RedundantBranchElimination.RBE |
|
SSA |
This module holds utility functions for SSA form. |
SSADictionary |
An SSADictionary structure holds lookaside
information regarding Heap Array SSA form for an IR. |
SSADictionary.AllInstructionEnumeration |
This class implements an Enumeration over all
instructions for a basic block. |
SSADictionary.HeapKey<T> |
This class represents the name of a heap variable in the heap array
SSA form. |
SSAOptions |
This module defines parameters to the SSA construction process. |
SSATuneUp |
This phase puts the IR in SSA form and performs a set of simple
optimizations to clean up. |
SSATuneUp.FoldingDriver |
This class drives expression folding. |
SSATuneUp.TuneUpPreparation |
This class sets up the IR state prior to entering SSA. |
UniformlyGeneratedGVN |
This class implements index equivalence via global value numbering
and 'uniformly generated expressions'. |
ValueGraph |
This class implements the value graph used in global value numbering
a la Alpern, Wegman and Zadeck. |
ValueGraphEdge |
This class implements an edge in the value graph used in global value
numbering
ala Alpern, Wegman and Zadeck. |
ValueGraphParamLabel |
Represent a value that is a parameter |
ValueGraphVertex |
This class implements a vertex in the value graph used in global
value numbering
ala Alpern, Wegman and Zadeck. |
ValueNumberPair |
Represents a pair of value numbers. |