coins.opt
Class CommonSubexpElim

java.lang.Object
  extended bycoins.opt.CommonSubexpElim
Direct Known Subclasses:
CommonSubexpElimHir

public abstract class CommonSubexpElim
extends java.lang.Object

Common subexpression elimination basic logic class.


Field Summary
protected  int fDbgLevel
           
protected  java.util.Set fFunctionsWithoutSideEffect
           
 FlowRoot flowRoot
           
 SubpFlow fSubpFlow
           
 Sym sym
           
 SymRoot symRoot
           
 
Constructor Summary
CommonSubexpElim(FlowRoot pFlowRoot)
           
 
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
 

Field Detail

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
Constructor Detail

CommonSubexpElim

public CommonSubexpElim(FlowRoot pFlowRoot)
Method Detail

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)