tip.cfg.dfa
Class LivenessAnalysis

java.lang.Object
  extended by tip.cfg.CFGAnalysisAdapter
      extended by tip.cfg.FlowAnalysis<EqualitySet<ALocalDecl>>
          extended by tip.cfg.dfa.LivenessAnalysis
All Implemented Interfaces:
FixedPointAnalysis<EqualitySet<ALocalDecl>>, ICFGAnalysis

public class LivenessAnalysis
extends FlowAnalysis<EqualitySet<ALocalDecl>>

LivenessAnalysis implements the Liveness backwards-may analysis. The implementation does not handle pointer expression. It uses UnionSetLattice containing ALocalDecl elements as the variables for the program points.

Author:
Johnni Winther, jw@brics.dk

Constructor Summary
LivenessAnalysis()
          Creates a new LivenessAnalysis analysis.
 
Method Summary
 boolean caseCAssignVarStmPoint(AAssignVarStm node, CAssignVarStmPoint point)
          Handle assignment statements.
 boolean caseCDeclStmPoint(ADeclStm node, CDeclStmPoint point)
          Handle declaration statements.
 boolean caseCIfThenElseStmPoint(AIfThenElseStm node, CIfThenElseStmPoint point)
          Handle if-then-else statements.
 boolean caseCIfThenStmPoint(AIfThenStm node, CIfThenStmPoint point)
          Handle if-then statements.
 boolean caseCOutputStmPoint(AOutputStm node, COutputStmPoint point)
          Handle output statements.
 boolean caseCReturnStmPoint(AReturnStm node, CReturnStmPoint point)
          Handle return statements.
 boolean caseCWhileStmPoint(AWhileStm node, CWhileStmPoint point)
          Handle while statements.
 String getVariableString(EqualitySet<ALocalDecl> variable)
          Returns a textual representation of variable.
 
Methods inherited from class tip.cfg.FlowAnalysis
defaultNode, end, getDependencySet, getLattice, getName, getVariable, getVariableStringForPoint, getVariableStringForPoint, setVariable, start
 
Methods inherited from class tip.cfg.CFGAnalysisAdapter
caseCAssignPtrStmPoint, caseCBinopExpPoint, caseCBlockPoint, caseCDerefExpPoint, caseCFunctionCallExpPoint, caseCFunctionPtrCallExpPoint, caseCInputExpPoint, caseCIntConstExpPoint, caseCMallocExpPoint, caseCNullExpPoint, caseCPointerExpPoint, caseCVarExpPoint, caseEntryPoint, caseExitPoint
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface tip.cfg.ICFGAnalysis
caseCAssignPtrStmPoint, caseCBinopExpPoint, caseCBlockPoint, caseCDerefExpPoint, caseCFunctionCallExpPoint, caseCFunctionPtrCallExpPoint, caseCInputExpPoint, caseCIntConstExpPoint, caseCMallocExpPoint, caseCNullExpPoint, caseCPointerExpPoint, caseCVarExpPoint, caseEntryPoint, caseExitPoint
 

Constructor Detail

LivenessAnalysis

public LivenessAnalysis()
Creates a new LivenessAnalysis analysis.

Method Detail

caseCAssignVarStmPoint

public boolean caseCAssignVarStmPoint(AAssignVarStm node,
                                      CAssignVarStmPoint point)
Handle assignment statements.

Specified by:
caseCAssignVarStmPoint in interface ICFGAnalysis
Overrides:
caseCAssignVarStmPoint in class CFGAnalysisAdapter
Parameters:
node - the current assignment statement
point - the current program point
Returns:
true if the variable for point was changed

caseCDeclStmPoint

public boolean caseCDeclStmPoint(ADeclStm node,
                                 CDeclStmPoint point)
Handle declaration statements.

Specified by:
caseCDeclStmPoint in interface ICFGAnalysis
Overrides:
caseCDeclStmPoint in class CFGAnalysisAdapter
Parameters:
node - the current declaration statement
point - the current program point
Returns:
true if the variable for point was changed

caseCIfThenStmPoint

public boolean caseCIfThenStmPoint(AIfThenStm node,
                                   CIfThenStmPoint point)
Handle if-then statements.

Specified by:
caseCIfThenStmPoint in interface ICFGAnalysis
Overrides:
caseCIfThenStmPoint in class CFGAnalysisAdapter
Parameters:
node - the current if-then statement
point - the current program point
Returns:
true if the variable for point was changed

caseCIfThenElseStmPoint

public boolean caseCIfThenElseStmPoint(AIfThenElseStm node,
                                       CIfThenElseStmPoint point)
Handle if-then-else statements.

Specified by:
caseCIfThenElseStmPoint in interface ICFGAnalysis
Overrides:
caseCIfThenElseStmPoint in class CFGAnalysisAdapter
Parameters:
node - the current if-then-else statement
point - the current program point
Returns:
true if the variable for point was changed

caseCWhileStmPoint

public boolean caseCWhileStmPoint(AWhileStm node,
                                  CWhileStmPoint point)
Handle while statements.

Specified by:
caseCWhileStmPoint in interface ICFGAnalysis
Overrides:
caseCWhileStmPoint in class CFGAnalysisAdapter
Parameters:
node - the current while statement
point - the current program point
Returns:
true if the variable for point was changed

caseCOutputStmPoint

public boolean caseCOutputStmPoint(AOutputStm node,
                                   COutputStmPoint point)
Handle output statements.

Specified by:
caseCOutputStmPoint in interface ICFGAnalysis
Overrides:
caseCOutputStmPoint in class CFGAnalysisAdapter
Parameters:
node - the current output statement
point - the current program point
Returns:
true if the variable for point was changed

caseCReturnStmPoint

public boolean caseCReturnStmPoint(AReturnStm node,
                                   CReturnStmPoint point)
Handle return statements.

Specified by:
caseCReturnStmPoint in interface ICFGAnalysis
Overrides:
caseCReturnStmPoint in class CFGAnalysisAdapter
Parameters:
node - the current return statement
point - the current program point
Returns:
true if the variable for point was changed

getVariableString

public String getVariableString(EqualitySet<ALocalDecl> variable)
Returns a textual representation of variable. NodeText is passed to EqualitySet.toString(Stringifier) in order to let EqualitySet print each element as defined by NodeText.

Parameters:
variable - the variable for which a textual representation is returned
Returns:
the textual representation of variable