coins.opt
Class CommonSubexpElim
java.lang.Object
coins.opt.CommonSubexpElim
- Direct Known Subclasses:
- CommonSubexpElimHir
- public abstract class CommonSubexpElim
- extends java.lang.Object
Common subexpression elimination basic logic class.
|
Method Summary |
boolean |
doBBlockLocal(BBlock pBBlock)
Performs the common subexpression elimination within the given BBlock. |
boolean |
doBBlockLocal(SubpFlow pSubpFlow)
Performs the common subexpression elimination within each BBlock for the given SubpFlow. |
(package private) abstract HIR |
eliminateComplex(HIR pCompoundNode,
HIR pPrevCompoundNode,
SetRefRepr pPrevCalcSetRefRepr,
SetRefReprList pSetRefReprs,
java.util.Map pCompoundToNodeAndSetRefRepr,
java.util.Map ContainsMap)
|
(package private) abstract HIR |
eliminateSimple(HIR pCompoundNode,
HIR pVarNode,
SubpFlow pSubpFlow,
java.util.Set pModSyms,
boolean pMod)
|
(package private) abstract java.util.Set |
operandSet(java.lang.Object o)
|
(package private) abstract void |
registerUseSyms(HIR pSubtree,
java.util.Map pContainsMap,
java.lang.Object pCompound)
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
flowRoot
public final FlowRoot flowRoot
symRoot
public final SymRoot symRoot
sym
public final Sym sym
fSubpFlow
public final SubpFlow fSubpFlow
fFunctionsWithoutSideEffect
protected java.util.Set fFunctionsWithoutSideEffect
fDbgLevel
protected int fDbgLevel
CommonSubexpElim
public CommonSubexpElim(FlowRoot pFlowRoot)
doBBlockLocal
public boolean doBBlockLocal(SubpFlow pSubpFlow)
- Performs the common subexpression elimination within each BBlock for the given SubpFlow. Inter-BBlock data flow is not considered (it is assumed no flow exists between BBlocks).
- Returns:
- true if the subprogram changed (optimized).
doBBlockLocal
public boolean doBBlockLocal(BBlock pBBlock)
- Performs the common subexpression elimination within the given BBlock.
- Returns:
- true if the underlying IR has changed (optimized).
operandSet
abstract java.util.Set operandSet(java.lang.Object o)
eliminateSimple
abstract HIR eliminateSimple(HIR pCompoundNode,
HIR pVarNode,
SubpFlow pSubpFlow,
java.util.Set pModSyms,
boolean pMod)
eliminateComplex
abstract HIR eliminateComplex(HIR pCompoundNode,
HIR pPrevCompoundNode,
SetRefRepr pPrevCalcSetRefRepr,
SetRefReprList pSetRefReprs,
java.util.Map pCompoundToNodeAndSetRefRepr,
java.util.Map ContainsMap)
registerUseSyms
abstract void registerUseSyms(HIR pSubtree,
java.util.Map pContainsMap,
java.lang.Object pCompound)