Class InterConstantPropagation
java.lang.Object
pascal.taie.analysis.Analysis
pascal.taie.analysis.ProgramAnalysis<DataflowResult<Node,Fact>>
pascal.taie.analysis.dataflow.inter.AbstractInterDataflowAnalysis<JMethod,Stmt,CPFact>
pascal.taie.analysis.dataflow.inter.InterConstantPropagation
- All Implemented Interfaces:
InterDataflowAnalysis<Stmt,
CPFact>
Implementation of interprocedural constant propagation for int values.
-
Field Summary
Fields inherited from class pascal.taie.analysis.dataflow.inter.AbstractInterDataflowAnalysis
icfg, solver
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
finish()
If the concrete analysis needs to perform some finishing work after the solver finishes, then it can overwrite this method.protected void
If the concrete analysis needs to perform some initialization before the solver starts, then it can overwrite this method.boolean
void
Meets a fact into another (target) fact.newBoundaryFact
(Stmt boundary) protected CPFact
transferCallEdge
(CallEdge<Stmt> edge, CPFact callSiteOut) protected boolean
transferCallNode
(Stmt stmt, CPFact in, CPFact out) Transfer function for call node.protected CPFact
transferCallToReturnEdge
(CallToReturnEdge<Stmt> edge, CPFact out) protected boolean
transferNonCallNode
(Stmt stmt, CPFact in, CPFact out) Transfer function for non-call node.protected CPFact
transferNormalEdge
(NormalEdge<Stmt> edge, CPFact out) protected CPFact
transferReturnEdge
(ReturnEdge<Stmt> edge, CPFact returnOut) Methods inherited from class pascal.taie.analysis.dataflow.inter.AbstractInterDataflowAnalysis
analyze, transferEdge, transferNode
Methods inherited from class pascal.taie.analysis.Analysis
getId, getOptions
-
Field Details
-
ID
- See Also:
-
-
Constructor Details
-
InterConstantPropagation
-
-
Method Details
-
initialize
protected void initialize()Description copied from class:AbstractInterDataflowAnalysis
If the concrete analysis needs to perform some initialization before the solver starts, then it can overwrite this method.- Overrides:
initialize
in classAbstractInterDataflowAnalysis<JMethod,
Stmt, CPFact>
-
finish
protected void finish()Description copied from class:AbstractInterDataflowAnalysis
If the concrete analysis needs to perform some finishing work after the solver finishes, then it can overwrite this method.- Overrides:
finish
in classAbstractInterDataflowAnalysis<JMethod,
Stmt, CPFact>
-
isForward
public boolean isForward()- Returns:
- true if this analysis is forward, otherwise false.
-
newBoundaryFact
- Returns:
- new fact in boundary conditions, i.e., the fact for entry node in forward analysis or exit node in backward analysis.
-
newInitialFact
- Returns:
- new initial fact for non-boundary nodes.
-
meetInto
Description copied from interface:InterDataflowAnalysis
Meets a fact into another (target) fact. This function will be used to handle control-flow confluences. -
transferCallNode
Description copied from class:AbstractInterDataflowAnalysis
Transfer function for call node.- Specified by:
transferCallNode
in classAbstractInterDataflowAnalysis<JMethod,
Stmt, CPFact>
-
transferNonCallNode
Description copied from class:AbstractInterDataflowAnalysis
Transfer function for non-call node.- Specified by:
transferNonCallNode
in classAbstractInterDataflowAnalysis<JMethod,
Stmt, CPFact>
-
transferNormalEdge
- Specified by:
transferNormalEdge
in classAbstractInterDataflowAnalysis<JMethod,
Stmt, CPFact>
-
transferCallToReturnEdge
- Specified by:
transferCallToReturnEdge
in classAbstractInterDataflowAnalysis<JMethod,
Stmt, CPFact>
-
transferCallEdge
- Specified by:
transferCallEdge
in classAbstractInterDataflowAnalysis<JMethod,
Stmt, CPFact>
-
transferReturnEdge
- Specified by:
transferReturnEdge
in classAbstractInterDataflowAnalysis<JMethod,
Stmt, CPFact>
-