Fixpoint3.Phase.Hoisting
Definitions
def hoistProgram(program: RamProgram): RamProgram
SourceHoists program as described above.
def unifyEqualitiesOp(equalitySets: MutDisjointSets[(RowVar, Int32), r], constEqualities: MutMap[(RowVar, Int32), List[(Boxed, Type)], r], op: RelOp): Unit \ r
SourceCollects equality information in op.
See unifyEqualitiesStmt.
def unifyEqualitiesStmt(equalitySets: MutDisjointSets[(RowVar, Int32), r], constEqualities: MutMap[(RowVar, Int32), List[(Boxed, Type)], r], stmt: RamStmt): Unit \ r
SourceCollects equality information in stmt and save it in equalitySets and constEqualities.
Equalities between 2 RowLoads are added to equalitySets and equalities between RowLoad
and Lit are added to constEqualities.
In equalitySets, we unify (rv1, i1) with (rv2, i2) if they occur together
in an equality statement.
In constEqualities, we save a list of which literals a (rv, i) were equal to.