svf-tools 1.0.372 → 1.0.376
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +5 -6
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Conditions_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ConsG_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +15 -15
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -10
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMUtil_8h.html +3 -3
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +10 -11
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Options_8cpp_source.html +22 -21
- package/SVF-doxygen/html/html/Options_8h_source.html +22 -21
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +14 -14
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +8 -10
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +72 -73
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +37 -35
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +66 -68
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +18 -19
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +121 -127
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +39 -30
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +10 -7
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +93 -53
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +82 -85
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +17 -16
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/VFG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +5 -6
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +12 -13
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BranchCondManager.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +22 -25
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +16 -25
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +22 -25
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +17 -26
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +23 -26
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +17 -26
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +22 -25
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +18 -27
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +21 -24
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +18 -27
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +22 -25
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +19 -28
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +24 -27
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +42 -51
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +30 -35
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +34 -106
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +15 -16
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +47 -81
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +87 -87
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +7 -8
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +162 -211
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +22 -25
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +23 -32
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +55 -54
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +47 -21
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +22 -25
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +18 -27
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +214 -227
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +82 -83
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +582 -529
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +23 -26
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +54 -151
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder-members.html +10 -7
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +182 -72
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +9 -11
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +131 -162
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +26 -25
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +21 -24
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +16 -25
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +22 -25
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +18 -27
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +12 -12
- package/SVF-doxygen/html/html/functions_a.html +24 -24
- package/SVF-doxygen/html/html/functions_c.html +1 -1
- package/SVF-doxygen/html/html/functions_f.html +19 -22
- package/SVF-doxygen/html/html/functions_func.html +24 -24
- package/SVF-doxygen/html/html/functions_func_c.html +1 -1
- package/SVF-doxygen/html/html/functions_func_g.html +20 -23
- package/SVF-doxygen/html/html/functions_func_h.html +1 -1
- package/SVF-doxygen/html/html/functions_func_i.html +11 -17
- package/SVF-doxygen/html/html/functions_func_l.html +2 -2
- package/SVF-doxygen/html/html/functions_func_o.html +4 -4
- package/SVF-doxygen/html/html/functions_func_r.html +5 -2
- package/SVF-doxygen/html/html/functions_g.html +18 -21
- package/SVF-doxygen/html/html/functions_h.html +1 -1
- package/SVF-doxygen/html/html/functions_i.html +12 -21
- package/SVF-doxygen/html/html/functions_l.html +8 -8
- package/SVF-doxygen/html/html/functions_m.html +4 -1
- package/SVF-doxygen/html/html/functions_o.html +22 -18
- package/SVF-doxygen/html/html/functions_p.html +3 -3
- package/SVF-doxygen/html/html/functions_r.html +5 -2
- package/SVF-doxygen/html/html/functions_rela.html +2 -1
- package/SVF-doxygen/html/html/functions_s.html +6 -5
- package/SVF-doxygen/html/html/functions_t.html +4 -4
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_f.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_i.html +3 -6
- package/SVF-doxygen/html/html/functions_vars_m.html +3 -0
- package/SVF-doxygen/html/html/namespaceSVF.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +8 -8
- package/SVF-doxygen/html/html/namespacemembers_func.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_s.html +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +22 -22
- package/SVF-doxygen/html/html/search/all_10.js +4 -4
- package/SVF-doxygen/html/html/search/all_12.js +5 -4
- package/SVF-doxygen/html/html/search/all_13.js +6 -6
- package/SVF-doxygen/html/html/search/all_14.js +4 -4
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +1 -1
- package/SVF-doxygen/html/html/search/all_6.js +0 -1
- package/SVF-doxygen/html/html/search/all_7.js +9 -9
- package/SVF-doxygen/html/html/search/all_8.js +1 -1
- package/SVF-doxygen/html/html/search/all_9.js +2 -5
- package/SVF-doxygen/html/html/search/all_c.js +4 -4
- package/SVF-doxygen/html/html/search/all_d.js +1 -0
- package/SVF-doxygen/html/html/search/all_e.js +3 -3
- package/SVF-doxygen/html/html/search/all_f.js +3 -3
- package/SVF-doxygen/html/html/search/functions_0.js +22 -22
- package/SVF-doxygen/html/html/search/functions_10.js +2 -2
- package/SVF-doxygen/html/html/search/functions_2.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +9 -9
- package/SVF-doxygen/html/html/search/functions_7.js +1 -1
- package/SVF-doxygen/html/html/search/functions_8.js +1 -3
- package/SVF-doxygen/html/html/search/functions_a.js +1 -1
- package/SVF-doxygen/html/html/search/functions_d.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/functions_f.js +1 -0
- package/SVF-doxygen/html/html/search/related_9.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +2 -2
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_6.js +0 -1
- package/SVF-doxygen/html/html/search/variables_9.js +1 -2
- package/SVF-doxygen/html/html/search/variables_d.js +1 -0
- package/SVF-doxygen/html/html/search/variables_e.js +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +7 -21
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +3 -3
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +4 -4
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +2 -2
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +2 -2
- package/include/MemoryModel/LocationSet.h +0 -6
- package/include/MemoryModel/SVFIR.h +5 -37
- package/include/MemoryModel/SVFStatements.h +1 -1
- package/include/MemoryModel/SVFVariables.h +4 -21
- package/include/MemoryModel/SymbolTableInfo.h +8 -24
- package/include/SVF-FE/LLVMUtil.h +1 -1
- package/include/SVF-FE/SVFIRBuilder.h +91 -108
- package/include/SVF-FE/SymbolTableBuilder.h +9 -2
- package/include/Util/Options.h +1 -0
- package/lib/Graphs/ICFG.cpp +1 -47
- package/lib/MemoryModel/LocationSet.cpp +7 -3
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
- package/lib/MemoryModel/SVFIR.cpp +61 -19
- package/lib/MemoryModel/SVFVariables.cpp +6 -13
- package/lib/MemoryModel/SymbolTableInfo.cpp +57 -68
- package/lib/SVF-FE/LLVMUtil.cpp +3 -3
- package/lib/SVF-FE/SVFIRBuilder.cpp +83 -136
- package/lib/SVF-FE/SymbolTableBuilder.cpp +81 -23
- package/lib/Util/Options.cpp +6 -0
- package/lib/Util/TypeBasedHeapCloning.cpp +1 -1
- package/lib/WPA/AndersenStat.cpp +1 -1
- package/package.json +1 -1
|
@@ -66,7 +66,7 @@ $(function() {
|
|
|
66
66
|
<div class="title">SVFStatements.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="SVFStatements_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- SVFStatements.h -- SVF statements-------------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">/*</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * SVFStatements.h</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> *</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Created on: Nov 10, 2013</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> */</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#ifndef PAGEDGE_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#define PAGEDGE_H_</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="GenericGraph_8h.html">Graphs/GenericGraph.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="LocationSet_8h.html">MemoryModel/LocationSet.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="ICFGNode_8h.html">Graphs/ICFGNode.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ab502ff5e204678640c1081d104f60971"> 41</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">/*</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment"> * SVFIR program statements (PAGEdges)</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment"> */</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericEdge.html">GenericEdge<SVFVar></a> <a class="code" href="namespaceSVF.html#ab502ff5e204678640c1081d104f60971">GenericPAGEdgeTy</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html"> 47</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> : <span class="keyword">public</span> GenericPAGEdgeTy</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9"> 54</a></span>  <span class="keyword">enum</span> <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">PEDGEK</a></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688"> 56</a></span>  <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">Addr</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">Copy</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">Store</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">Load</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">Call</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">Ret</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">Gep</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">Phi</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">Select</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">Cmp</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">BinaryOp</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">UnaryOp</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">Branch</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">ThreadFork</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">ThreadJoin</a></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a6a689f62af301bd6ac09d7019aba1c17"> 60</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1SVFStmt.html#a6a689f62af301bd6ac09d7019aba1c17">value</a>; </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a877c7137875233e147faeb1198243f36"> 61</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *<a class="code" href="classSVF_1_1SVFStmt.html#a877c7137875233e147faeb1198243f36">basicBlock</a>; </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a50046a1500ec6e2819ef55162e70cc71"> 62</a></span>  <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *<a class="code" href="classSVF_1_1SVFStmt.html#a50046a1500ec6e2819ef55162e70cc71">icfgNode</a>; </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a593cc8136f2138a518476405e667e060"> 63</a></span>  <a class="code" href="namespaceSVF.html#ae71551d6a1fc300e0403297aa25ddf94">EdgeID</a> <a class="code" href="classSVF_1_1SVFStmt.html#a593cc8136f2138a518476405e667e060">edgeId</a>; </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#af1a9c2a18805560e46425bd98a35dea9"> 65</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SVFStmt.html#af1a9c2a18805560e46425bd98a35dea9">totalEdgeNum</a>; </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="classSVF_1_1SVFStmt.html#a47102f72115d41bff899b1b2ffec75b1">SVFStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> k);</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#aac79c7e8d390f297002782afb0ba3ff0"> 70</a></span>  <a class="code" href="classSVF_1_1SVFStmt.html#aac79c7e8d390f297002782afb0ba3ff0">~SVFStmt</a>()</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#ac517a3166a3afe45d04480534ac3bb50"> 76</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFStmt.html#ac517a3166a3afe45d04480534ac3bb50">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>*)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a00339663741d9f581d2f3ecae5a3e7e3"> 80</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFStmt.html#a00339663741d9f581d2f3ecae5a3e7e3">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a> ||</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a> ||</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a> ||</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a> ||</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a> ||</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a> ||</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a> ||</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVFStmt::Cmp</a> ||</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVFStmt::BinaryOp</a> ||</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">SVFStmt::UnaryOp</a> ||</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a> ||</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#af7bb0d687fc61cae1de639c88e472491"> 98</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ae71551d6a1fc300e0403297aa25ddf94">EdgeID</a> <a class="code" href="classSVF_1_1SVFStmt.html#af7bb0d687fc61cae1de639c88e472491">getEdgeID</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFStmt.html#a593cc8136f2138a518476405e667e060">edgeId</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">isPTAEdge</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a86628ea173dec4934322f5d1caf2e1db"> 107</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* <a class="code" href="classSVF_1_1SVFStmt.html#a86628ea173dec4934322f5d1caf2e1db">getInst</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>>(<a class="code" href="classSVF_1_1SVFStmt.html#a6a689f62af301bd6ac09d7019aba1c17">value</a>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a24dddb4e346a6e569908e3efe8a6ecc0"> 111</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStmt.html#a24dddb4e346a6e569908e3efe8a6ecc0">setValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  value = val;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a65ee8b43a3a4999eb112a197d1a9f882"> 115</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1SVFStmt.html#a65ee8b43a3a4999eb112a197d1a9f882">getValue</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFStmt.html#a6a689f62af301bd6ac09d7019aba1c17">value</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a852730edf374d18a3fb3985211ed7623"> 119</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStmt.html#a852730edf374d18a3fb3985211ed7623">setBB</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  basicBlock = bb;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a793c53e0b4f9a58099c096f0a0856495"> 123</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* <a class="code" href="classSVF_1_1SVFStmt.html#a793c53e0b4f9a58099c096f0a0856495">getBB</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFStmt.html#a877c7137875233e147faeb1198243f36">basicBlock</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#adb92a92f5c878576dff26cb38eab8c8c"> 127</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStmt.html#adb92a92f5c878576dff26cb38eab8c8c">setICFGNode</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  icfgNode = node;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b"> 131</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* <a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFStmt.html#a50046a1500ec6e2819ef55162e70cc71">icfgNode</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a3b20523aed66ac8943d7d00ff777137b"> 138</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> <a class="code" href="classSVF_1_1SVFStmt.html#a3b20523aed66ac8943d7d00ff777137b">makeEdgeFlagWithAddionalOpnd</a>(<a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* var)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  Var2LabelMap::const_iterator iter = <a class="code" href="classSVF_1_1SVFStmt.html#a24c64109d27ef7549d1c7a07c391e007">var2LabelMap</a>.find(var);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> label = (iter != <a class="code" href="classSVF_1_1SVFStmt.html#a24c64109d27ef7549d1c7a07c391e007">var2LabelMap</a>.end()) ?</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  iter->second : <a class="code" href="classSVF_1_1SVFStmt.html#a9ea22adbfc307dddee42ffec07cc88ed">multiOpndLabelCounter</a>++;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  return (label << <a class="code" href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">EdgeKindMaskBits</a>) | k;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00"> 147</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> <a class="code" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00">makeEdgeFlagWithCallInst</a>(<a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* cs)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  Inst2LabelMap::const_iterator iter = <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>.find(cs);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> label = (iter != <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>.end()) ?</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  iter->second : <a class="code" href="classSVF_1_1SVFStmt.html#a24227d7f1dd472f47bf94cb5db8505c4">callEdgeLabelCounter</a>++;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  return (label << <a class="code" href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">EdgeKindMaskBits</a>) | k;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#ad61722f886afaaee722ac55a4eed4d18"> 157</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> <a class="code" href="classSVF_1_1SVFStmt.html#ad61722f886afaaee722ac55a4eed4d18">makeEdgeFlagWithStoreInst</a>(<a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* store)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  Inst2LabelMap::const_iterator iter = <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>.find(store);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> label = (iter != <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>.end()) ?</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  iter->second : <a class="code" href="classSVF_1_1SVFStmt.html#a53b7e0d8666e37c23dc2c7d0fc931f27">storeEdgeLabelCounter</a>++;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  return (label << <a class="code" href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">EdgeKindMaskBits</a>) | k;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#ad75e4c84f7d37824eb096aacca930ead"> 170</a></span>  <span class="keyword">friend</span> <a class="code" href="namespaceSVF.html#a424cc053c29ad7303699c529d1a2cc71">raw_ostream</a>& <a class="code" href="classSVF_1_1SVFStmt.html#ad75e4c84f7d37824eb096aacca930ead">operator<< </a>(<a class="code" href="namespaceSVF.html#a424cc053c29ad7303699c529d1a2cc71">raw_ostream</a> &o, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> &edge)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  o << edge.<a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> o;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4"> 177</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericNode.html#a03c6da4a73c47f84f5c5b47252bc339a">GenericNode<SVFVar,SVFStmt>::GEdgeSetTy</a> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmtSetTy</a>;</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a229c78147511f2a581c761552179b6fa"> 178</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<EdgeID, SVFStmtSetTy></a> <a class="code" href="classSVF_1_1SVFStmt.html#a229c78147511f2a581c761552179b6fa">PAGEdgeToSetMapTy</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a93fc6c4c991931c78c48500c2db50f66"> 179</a></span>  <span class="keyword">typedef</span> PAGEdgeToSetMapTy <a class="code" href="classSVF_1_1SVFStmt.html#a93fc6c4c991931c78c48500c2db50f66">KindToSVFStmtMapTy</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a2bdfa37167b5496629e5cae62705d5f2"> 180</a></span>  <span class="keyword">typedef</span> SVFStmtSetTy <a class="code" href="classSVF_1_1SVFStmt.html#a2bdfa37167b5496629e5cae62705d5f2">PAGEdgeSetTy</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a5a3db6b1335b4adc55b961a6f480f228"> 183</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const ICFGNode*, u32_t></a> <a class="code" href="classSVF_1_1SVFStmt.html#a5a3db6b1335b4adc55b961a6f480f228">Inst2LabelMap</a>;</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#ad178ccbc7800527c3dc406ad5fa069bb"> 184</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFVar*, u32_t></a> <a class="code" href="classSVF_1_1SVFStmt.html#ad178ccbc7800527c3dc406ad5fa069bb">Var2LabelMap</a>;</div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c"> 185</a></span>  <span class="keyword">static</span> Inst2LabelMap <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>; </div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a24c64109d27ef7549d1c7a07c391e007"> 186</a></span>  <span class="keyword">static</span> Var2LabelMap <a class="code" href="classSVF_1_1SVFStmt.html#a24c64109d27ef7549d1c7a07c391e007">var2LabelMap</a>; </div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a24227d7f1dd472f47bf94cb5db8505c4"> 187</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="classSVF_1_1SVFStmt.html#a24227d7f1dd472f47bf94cb5db8505c4">callEdgeLabelCounter</a>; </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a53b7e0d8666e37c23dc2c7d0fc931f27"> 188</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="classSVF_1_1SVFStmt.html#a53b7e0d8666e37c23dc2c7d0fc931f27">storeEdgeLabelCounter</a>; </div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a9ea22adbfc307dddee42ffec07cc88ed"> 189</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="classSVF_1_1SVFStmt.html#a9ea22adbfc307dddee42ffec07cc88ed">multiOpndLabelCounter</a>; </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> };</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="comment">/*</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="comment"> Parent class of Addr, Copy, Store, Load, Call, Ret, NormalGep, VariantGep, ThreadFork, ThreadJoin</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="comment"> connecting RHS expression and LHS expression with an assignment (e.g., LHSExpr = RHSExpr)</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="comment"> Only one operand on the right handside of an assignment</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="comment">*/</span></div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html"> 197</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(); </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a> &); </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a> &); </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(); </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(); </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>(); </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>(); </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#aff4c35109790daed3c6170c985153620"> 210</a></span>  <a class="code" href="classSVF_1_1AssignStmt.html#aff4c35109790daed3c6170c985153620">AssignStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> k) : <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>(s,d,k)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a4f94b6731f324e44fc4d4e06d7acdbf7"> 217</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AssignStmt.html#a4f94b6731f324e44fc4d4e06d7acdbf7">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a> *)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#ad5e2d41b8cd548628b59227368388ed0"> 221</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AssignStmt.html#ad5e2d41b8cd548628b59227368388ed0">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a> ||</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a> ||</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a> ||</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a> ||</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a> ||</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a> ||</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a> ||</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a> ||</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a8b2837153dcf9f7e2adc3b30b2dd0245"> 233</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AssignStmt.html#a8b2837153dcf9f7e2adc3b30b2dd0245">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a> ||</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a> ||</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a> ||</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a> ||</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a> ||</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a> ||</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a> ||</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a> ||</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28"> 247</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28">getRHSVar</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVFStmt::getSrcNode</a>();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  } </div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a973a2b79da223275ed6a1831837b89c7"> 250</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1AssignStmt.html#a973a2b79da223275ed6a1831837b89c7">getLHSVar</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVFStmt::getDstNode</a>();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  } </div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d"> 253</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">SVFStmt::getSrcID</a>();</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  } </div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840"> 256</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">SVFStmt::getDstID</a>();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  } </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> };</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html"> 266</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a>(); </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> &); </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> &); </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> </div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html#a32e129c9f7aa16be8c5c8569989f691f"> 276</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AddrStmt.html#a32e129c9f7aa16be8c5c8569989f691f">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html#aeec83dc4e79ee62c92c75aa778a475ad"> 280</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AddrStmt.html#aeec83dc4e79ee62c92c75aa778a475ad">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html#a6876ffc2c97c5ba64155891b55a7884c"> 284</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AddrStmt.html#a6876ffc2c97c5ba64155891b55a7884c">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html#a42caa75acb42ce8e290c1278622f139c"> 291</a></span>  <a class="code" href="classSVF_1_1AddrStmt.html#a42caa75acb42ce8e290c1278622f139c">AddrStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d) : <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">Addr</a>)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> };</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html"> 302</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>(); </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> &); </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> &); </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html#a253c81c922bef6e2d520262c2f7793c4"> 311</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CopyStmt.html#a253c81c922bef6e2d520262c2f7793c4">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html#a5e883bb0bc30cf8b7d325b66f7a42848"> 315</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CopyStmt.html#a5e883bb0bc30cf8b7d325b66f7a42848">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }</div><div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html#a12e960569a9f4beae99195a0fe2d3b68"> 319</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CopyStmt.html#a12e960569a9f4beae99195a0fe2d3b68">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html#a69b179ef052408034786d32a52c52389"> 326</a></span>  <a class="code" href="classSVF_1_1CopyStmt.html#a69b179ef052408034786d32a52c52389">CopyStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d) : <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">Copy</a>)</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> };</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html"> 336</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>(); </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> &); </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> &); </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html#ae3c219e8af92e222f55c930009db6e67"> 346</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1StoreStmt.html#ae3c219e8af92e222f55c930009db6e67">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  }</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html#a31f69e402887eff60e2055799ed561b9"> 350</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1StoreStmt.html#a31f69e402887eff60e2055799ed561b9">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html#ab71bf959fce0e702556dd753636298b2"> 354</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1StoreStmt.html#ab71bf959fce0e702556dd753636298b2">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html#a39ee0d8cc951aff0d6418a3d743fb3ae"> 361</a></span>  <a class="code" href="classSVF_1_1StoreStmt.html#a39ee0d8cc951aff0d6418a3d743fb3ae">StoreStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1IntraICFGNode.html">IntraICFGNode</a>* st) :</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s, d, <a class="code" href="classSVF_1_1SVFStmt.html#ad61722f886afaaee722ac55a4eed4d18">makeEdgeFlagWithStoreInst</a>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">Store</a>, st))</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> };</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html"> 373</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>(); </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> &); </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> &); </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html#a03d6f1ee2f52b34d905b204eb53d6560"> 383</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LoadStmt.html#a03d6f1ee2f52b34d905b204eb53d6560">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *)</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html#ac252b1e9b7c01108d1aff602fbe1ef40"> 387</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LoadStmt.html#ac252b1e9b7c01108d1aff602fbe1ef40">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  }</div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html#ab30f370a8a2a3e63765c1e4843f07826"> 391</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LoadStmt.html#ab30f370a8a2a3e63765c1e4843f07826">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  }</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div><div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html#a92c5817abfaa1f6fbc9ee911f458dfb2"> 398</a></span>  <a class="code" href="classSVF_1_1LoadStmt.html#a92c5817abfaa1f6fbc9ee911f458dfb2">LoadStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d) : <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">Load</a>)</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> };</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> </div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html"> 409</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>(); </div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> &); </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> &); </div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> </div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a543a3f4801b22719f7b9677246bf2ac7"> 416</a></span>  <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> <a class="code" href="classSVF_1_1GepStmt.html#a543a3f4801b22719f7b9677246bf2ac7">ls</a>; </div><div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#af8eefbd002ec36f36612b8e9ccdbc757"> 417</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#af8eefbd002ec36f36612b8e9ccdbc757">variantField</a>; </div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> </div><div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a441cd8487b320ceff9d62884b4f28176"> 421</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#a441cd8487b320ceff9d62884b4f28176">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  }</div><div class="line"><a name="l00425"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a92016e7d6061e4a157c9cd39ad94cc20"> 425</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#a92016e7d6061e4a157c9cd39ad94cc20">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div><div class="line"><a name="l00429"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#ac47064e21e2afdf7bd85c6acba44367f"> 429</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#ac47064e21e2afdf7bd85c6acba44367f">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#abec33091e0dac0cdd5b95b6d7b0db3d8"> 435</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>& <a class="code" href="classSVF_1_1GepStmt.html#abec33091e0dac0cdd5b95b6d7b0db3d8">getLocationSet</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(isVariantFieldGep()==<span class="keyword">false</span> && <span class="stringliteral">"Can't retrieve the LocationSet if using a variable field index (pointer arithmetic) for struct field access "</span>);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">return</span> ls;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  }</div><div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a37811e62495493454405cb33e4a2b904"> 440</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html#a9bb7e08f7cfb2859d25b0e68e21fec89">LocationSet::OffsetValueVec</a>& <a class="code" href="classSVF_1_1GepStmt.html#a37811e62495493454405cb33e4a2b904">getOffsetValueVec</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">return</span> getLocationSet().getOffsetValueVec();</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  }</div><div class="line"><a name="l00445"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#ab6f37c073e4755c4b8bb3ed6365687f4"> 445</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#ab6f37c073e4755c4b8bb3ed6365687f4">isConstantOffset</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">return</span> getLocationSet().isConstantOffset();</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  }</div><div class="line"><a name="l00449"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a33b3b9ef0cf7e2ea6400aef74a399adf"> 449</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> <a class="code" href="classSVF_1_1GepStmt.html#a33b3b9ef0cf7e2ea6400aef74a399adf">accumulateConstantOffset</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">return</span> getLocationSet().accumulateConstantOffset();</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  }</div><div class="line"><a name="l00454"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#adf6912f8ddae4f765b685a4f9d3be602"> 454</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> <a class="code" href="classSVF_1_1GepStmt.html#adf6912f8ddae4f765b685a4f9d3be602">getConstantFieldIdx</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">return</span> getLocationSet().accumulateConstantFieldIdx();</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  }</div><div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788"> 459</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">return</span> variantField;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  } </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#ae4509ee7b57121da3c67de00e8bdf0b3"> 465</a></span>  <a class="code" href="classSVF_1_1GepStmt.html#ae4509ee7b57121da3c67de00e8bdf0b3">GepStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>& l, <span class="keywordtype">bool</span> varfld=<span class="keyword">false</span>) : <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">Gep</a>), ls(l), variantField(varfld)</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> </div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> };</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> </div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00477"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html"> 477</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CallPE.html">CallPE</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>(); </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> &); </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> &); </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> </div><div class="line"><a name="l00484"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#ace0704c65aa3637c50ff880f68808bba"> 484</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#ace0704c65aa3637c50ff880f68808bba">call</a>; </div><div class="line"><a name="l00485"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a88e420e259b8d7d34c9850ddde53d372"> 485</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#a88e420e259b8d7d34c9850ddde53d372">entry</a>; </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div><div class="line"><a name="l00489"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a6df0149f79122c5a7d517f75d0235e73"> 489</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallPE.html#a6df0149f79122c5a7d517f75d0235e73">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> *)</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  }</div><div class="line"><a name="l00493"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a188c51f3e378c451d34e90c96cca0cf5"> 493</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallPE.html#a188c51f3e378c451d34e90c96cca0cf5">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  || edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  }</div><div class="line"><a name="l00498"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a0d89c20d1d3ccee5f3e45a32085117aa"> 498</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallPE.html#a0d89c20d1d3ccee5f3e45a32085117aa">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  || edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  }</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div><div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a6b907624482ae697680c747e9b41fdab"> 506</a></span>  <a class="code" href="classSVF_1_1CallPE.html#a6b907624482ae697680c747e9b41fdab">CallPE</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* e, <a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k = <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a>) :</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00">makeEdgeFlagWithCallInst</a>(k,i)), call(i), entry(e)</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  }</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#aa50cca8bd91ffb135a7998b58ad7966f"> 513</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#aa50cca8bd91ffb135a7998b58ad7966f">getCallInst</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">return</span> call;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  }</div><div class="line"><a name="l00517"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#ab548c22dfbfeeaeb8ffe83417b396c09"> 517</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#ab548c22dfbfeeaeb8ffe83417b396c09">getCallSite</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">return</span> call;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  }</div><div class="line"><a name="l00521"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a9c9821c4e7dd031e3f82f2b29427e53e"> 521</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#a9c9821c4e7dd031e3f82f2b29427e53e">getFunEntryICFGNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  }</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> </div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> };</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> </div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> </div><div class="line"><a name="l00534"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html"> 534</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1RetPE.html">RetPE</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> {</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>(); </div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> &); </div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> &); </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> </div><div class="line"><a name="l00541"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#aa2d42edfce9d5a8c025c0bb529aee0f2"> 541</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#aa2d42edfce9d5a8c025c0bb529aee0f2">call</a>; </div><div class="line"><a name="l00542"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a6f6ccda153150b6acdd81550e45f640f"> 542</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#a6f6ccda153150b6acdd81550e45f640f">exit</a>; </div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> </div><div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a43c6965616d67e77087b486265139d21"> 546</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPE.html#a43c6965616d67e77087b486265139d21">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *)</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  }</div><div class="line"><a name="l00550"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a9cd78a723ed55ed6f334a329576a7471"> 550</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPE.html#a9cd78a723ed55ed6f334a329576a7471">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  || edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  }</div><div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a2f0121f26e79fe3766cba93b42dc1119"> 555</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPE.html#a2f0121f26e79fe3766cba93b42dc1119">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  || edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  }</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div><div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a60cb8a19e352547b22f197f4ca8e19d8"> 563</a></span>  <a class="code" href="classSVF_1_1RetPE.html#a60cb8a19e352547b22f197f4ca8e19d8">RetPE</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* e, <a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k = <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a>) :</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00">makeEdgeFlagWithCallInst</a>(k,i)), call(i), exit(e)</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  }</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> </div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div><div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a9bbf558ffc8e3c1136e20d18d4c95f42"> 570</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#a9bbf558ffc8e3c1136e20d18d4c95f42">getCallInst</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">return</span> call;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  }</div><div class="line"><a name="l00574"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#ab03f10c0375846a733f3257736a84f9d"> 574</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#ab03f10c0375846a733f3257736a84f9d">getCallSite</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordflow">return</span> call;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  }</div><div class="line"><a name="l00578"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a274adbd91750d8d6de8ba997285c1c49"> 578</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#a274adbd91750d8d6de8ba997285c1c49">getFunExitICFGNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">return</span> <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  }</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> </div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> };</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> </div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span> <span class="comment">/*</span></div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> <span class="comment">* Program statements with multiple operands including BinaryOPStmt, CmpStmt and PhiStmt</span></div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> <span class="comment">*/</span></div><div class="line"><a name="l00590"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html"> 590</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>{</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00592"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007"> 592</a></span>  <span class="keyword">typedef</span> std::vector<SVFVar*> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(); </div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> &); </div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> &); </div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(); </div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(); </div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>(); </div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>(); </div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> </div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#a172025849492f4de8f87564ef08f5880"> 603</a></span>  OPVars <a class="code" href="classSVF_1_1MultiOpndStmt.html#a172025849492f4de8f87564ef08f5880">opVars</a>;</div><div class="line"><a name="l00605"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#aad0c81aeb48e5d94dd8c60d87b41714c"> 605</a></span>  <a class="code" href="classSVF_1_1MultiOpndStmt.html#aad0c81aeb48e5d94dd8c60d87b41714c">MultiOpndStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* r, <span class="keyword">const</span> OPVars& opnds, <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> k): <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>(opnds.at(0), r, k), opVars(opnds)</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  }</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> </div><div class="line"><a name="l00611"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#aa0d9a26d3ad17432505b1f5bb36368d9"> 611</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#aa0d9a26d3ad17432505b1f5bb36368d9">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *)</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  }</div><div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#a5de8ff8363cb3f0b1427b69aa1058470"> 615</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#a5de8ff8363cb3f0b1427b69aa1058470">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *node)</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  {</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">Phi</a> ||</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">Select</a> ||</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">BinaryOp</a> ||</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">Cmp</a>;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  }</div><div class="line"><a name="l00622"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#ad20128715a7aaf173d60fe8f14575678"> 622</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#ad20128715a7aaf173d60fe8f14575678">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *node)</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  {</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">Phi</a> ||</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">Select</a> ||</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">BinaryOp</a> ||</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">Cmp</a>;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  }</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> </div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* getOpVar(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos)<span class="keyword"> const</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">return</span> opVars.at(pos);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  }</div><div class="line"><a name="l00638"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601"> 638</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVFStmt::getDstNode</a>();</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> </div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> getOpVarID(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos) <span class="keyword">const</span>;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> getResID() <span class="keyword">const</span>;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> </div><div class="line"><a name="l00646"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#af300571886b7aa2d84b0a70851c99bc3"> 646</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MultiOpndStmt.html#af300571886b7aa2d84b0a70851c99bc3">getOpVarNum</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">return</span> opVars.size();</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  }</div><div class="line"><a name="l00650"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b"> 650</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> OPVars& <a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keywordflow">return</span> opVars;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  }</div><div class="line"><a name="l00653"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#abebed8985cb4d4d1361c42e5454c90b9"> 653</a></span>  <span class="keyword">inline</span> OPVars::const_iterator <a class="code" href="classSVF_1_1MultiOpndStmt.html#abebed8985cb4d4d1361c42e5454c90b9">opVarBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="keywordflow">return</span> opVars.begin();</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  }</div><div class="line"><a name="l00657"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#ad53097d07487d564e7d13f9d7d9ab10c"> 657</a></span>  <span class="keyword">inline</span> OPVars::const_iterator <a class="code" href="classSVF_1_1MultiOpndStmt.html#ad53097d07487d564e7d13f9d7d9ab10c">opVerEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keywordflow">return</span> opVars.end();</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  }</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> };</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> </div><div class="line"><a name="l00668"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html"> 668</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> {</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00671"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ac505a4fe33e82f555663872e81220ba4"> 671</a></span>  <span class="keyword">typedef</span> std::vector<const ICFGNode* > <a class="code" href="classSVF_1_1PhiStmt.html#ac505a4fe33e82f555663872e81220ba4">OpICFGNodeVec</a>;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> </div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>(); </div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> &); </div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> &); </div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> </div><div class="line"><a name="l00678"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#a4c75a8f8430621aaec62a5189db136b5"> 678</a></span>  OpICFGNodeVec <a class="code" href="classSVF_1_1PhiStmt.html#a4c75a8f8430621aaec62a5189db136b5">opICFGNodes</a>;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span> </div><div class="line"><a name="l00682"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#abb620d35e77989c2f7f9ed480e5fa1e9"> 682</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PhiStmt.html#abb620d35e77989c2f7f9ed480e5fa1e9">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> *)</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  }</div><div class="line"><a name="l00686"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ac214292370d79324f6da8624fe2c7139"> 686</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PhiStmt.html#ac214292370d79324f6da8624fe2c7139">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">SVFStmt::Phi</a>;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  }</div><div class="line"><a name="l00690"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ae547394a731d29b44565d3e56a326354"> 690</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PhiStmt.html#ae547394a731d29b44565d3e56a326354">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *edge)</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  {</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">SVFStmt::Phi</a>;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  }</div><div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#a904591799ce401e8d3ee6aa634325ba3"> 694</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PhiStmt.html#a904591799ce401e8d3ee6aa634325ba3">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">SVFStmt::Phi</a>;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  }</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span> </div><div class="line"><a name="l00701"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ac2374acf4477a4bc5d188797ea9baaf3"> 701</a></span>  <a class="code" href="classSVF_1_1PhiStmt.html#ac2374acf4477a4bc5d188797ea9baaf3">PhiStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>& opnds, <span class="keyword">const</span> OpICFGNodeVec& icfgNodes) : <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(s,opnds,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">Phi</a>), opICFGNodes(icfgNodes)</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  {</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(opnds.size()==icfgNodes.size() && <span class="stringliteral">"Numbers of operands and their ICFGNodes are not consistent?"</span>);</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  }</div><div class="line"><a name="l00705"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ac3541a25f83ce8465d7b35010ba50b37"> 705</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PhiStmt.html#ac3541a25f83ce8465d7b35010ba50b37">addOpVar</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* op, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* inode){</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  opVars.push_back(op);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  opICFGNodes.push_back(inode);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(opVars.size()==opICFGNodes.size() && <span class="stringliteral">"Numbers of operands and their ICFGNodes are not consistent?"</span>);</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  }</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span> </div><div class="line"><a name="l00712"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#a0b97394bc1946c0185d2c11fbc2181f4"> 712</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* <a class="code" href="classSVF_1_1PhiStmt.html#a0b97394bc1946c0185d2c11fbc2181f4">getOpICFGNode</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> op_idx)<span class="keyword"> const</span>{</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">return</span> opICFGNodes.at(op_idx);</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> </div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordtype">bool</span> isFunctionRetPhi() <span class="keyword">const</span>;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> </div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> };</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> </div><div class="line"><a name="l00726"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html"> 726</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a></div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> {</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>(); </div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a> &); </div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a> &); </div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> </div><div class="line"><a name="l00733"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a2d6e9d7131bc69a0e88b703c2c03d7e2"> 733</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SelectStmt.html#a2d6e9d7131bc69a0e88b703c2c03d7e2">condition</a>;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> </div><div class="line"><a name="l00737"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a89f27a20f9c2acc66c4c6152e79ee30e"> 737</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SelectStmt.html#a89f27a20f9c2acc66c4c6152e79ee30e">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a> *)</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  {</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  }</div><div class="line"><a name="l00741"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a3cb54c9a91a32e12c5f8ee452fcf64be"> 741</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SelectStmt.html#a3cb54c9a91a32e12c5f8ee452fcf64be">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  {</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVFStmt::Select</a>;</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  }</div><div class="line"><a name="l00745"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a0b73ca0dedc4b7c718585577424fa0ce"> 745</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SelectStmt.html#a0b73ca0dedc4b7c718585577424fa0ce">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *edge)</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  {</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVFStmt::Select</a>;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  }</div><div class="line"><a name="l00749"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#aa9d3eeb27fee7084bcd2921c98be1bd1"> 749</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SelectStmt.html#aa9d3eeb27fee7084bcd2921c98be1bd1">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  {</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVFStmt::Select</a>;</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  }</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span> </div><div class="line"><a name="l00756"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#ae654d9036e291e723a3f1f7eab5b018b"> 756</a></span>  <a class="code" href="classSVF_1_1SelectStmt.html#ae654d9036e291e723a3f1f7eab5b018b">SelectStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>& opnds, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* cond) : <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(s,opnds,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">Select</a>), condition(cond)</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(opnds.size()==2 && <span class="stringliteral">"SelectStmt can only have two operands!"</span>);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  }</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span> </div><div class="line"><a name="l00762"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#ad4c3e9529176478bb726279a76050e8c"> 762</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SelectStmt.html#ad4c3e9529176478bb726279a76050e8c">getCondition</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keywordflow">return</span> condition;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  }</div><div class="line"><a name="l00765"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a537c03b08444da34c26b9e989bb0e568"> 765</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SelectStmt.html#a537c03b08444da34c26b9e989bb0e568">getTrueValue</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="keywordflow">return</span> getOpVar(0);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  }</div><div class="line"><a name="l00768"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#af64d7855e352a0afb5d2e98a8622a4ad"> 768</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SelectStmt.html#af64d7855e352a0afb5d2e98a8622a4ad">getFalseValue</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <span class="keywordflow">return</span> getOpVar(1);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  }</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span> };</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> </div><div class="line"><a name="l00776"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html"> 776</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a></div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> {</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>(); </div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> &); </div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> &); </div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span> </div><div class="line"><a name="l00783"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#a26fc263da6ab3fee40a335d367419328"> 783</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CmpStmt.html#a26fc263da6ab3fee40a335d367419328">predicate</a>;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> </div><div class="line"><a name="l00787"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#adec661dd23b7806b35abba2d44aebc61"> 787</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CmpStmt.html#adec661dd23b7806b35abba2d44aebc61">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> *)</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  }</div><div class="line"><a name="l00791"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#a16a5fddf61f6a13ee34dde0c4267d0e5"> 791</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CmpStmt.html#a16a5fddf61f6a13ee34dde0c4267d0e5">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  {</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVFStmt::Cmp</a>;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  }</div><div class="line"><a name="l00795"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#a679ec89e3fa17a17dcc8fafeb30d3a61"> 795</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CmpStmt.html#a679ec89e3fa17a17dcc8fafeb30d3a61">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *edge)</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  {</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVFStmt::Cmp</a>;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  }</div><div class="line"><a name="l00799"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#af9f7fe4aa92bb443cd517f06a8fb94cd"> 799</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CmpStmt.html#af9f7fe4aa92bb443cd517f06a8fb94cd">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  {</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVFStmt::Cmp</a>;</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> </div><div class="line"><a name="l00806"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#a02c4846269bd28bd4e8b127532cb737a"> 806</a></span>  <a class="code" href="classSVF_1_1CmpStmt.html#a02c4846269bd28bd4e8b127532cb737a">CmpStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>& opnds, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pre) : <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(s,opnds,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">Cmp</a>), predicate(pre)</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  {</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  }</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> </div><div class="line"><a name="l00810"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632"> 810</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">getPredicate</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keywordflow">return</span> predicate;</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  }</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  </div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> };</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> </div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span> </div><div class="line"><a name="l00822"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html"> 822</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a></div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> {</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>(); </div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> &); </div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> &); </div><div class="line"><a name="l00828"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#a0c4f900cf7321e8385b4f45e5cba3d1a"> 828</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a0c4f900cf7321e8385b4f45e5cba3d1a">opcode</a>;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> </div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span> </div><div class="line"><a name="l00833"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#ab5a0f41455474643e8dd97aaab0aaab5"> 833</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#ab5a0f41455474643e8dd97aaab0aaab5">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> *)</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  {</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  }</div><div class="line"><a name="l00837"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#abc24c2d50b164a637ad0cec371cb7e63"> 837</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#abc24c2d50b164a637ad0cec371cb7e63">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  {</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVFStmt::BinaryOp</a>;</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  }</div><div class="line"><a name="l00841"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#a7cae2a90a33225c90eb035cf9e663d3d"> 841</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a7cae2a90a33225c90eb035cf9e663d3d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *edge)</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  {</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVFStmt::BinaryOp</a>;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  }</div><div class="line"><a name="l00845"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#ac8831079a5a9c6d50fbd09ff545e7cfd"> 845</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#ac8831079a5a9c6d50fbd09ff545e7cfd">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  {</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVFStmt::BinaryOp</a>;</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  }</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> </div><div class="line"><a name="l00852"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#a7470a2412985bbb227bb62d8a297b7f1"> 852</a></span>  <a class="code" href="classSVF_1_1BinaryOPStmt.html#a7470a2412985bbb227bb62d8a297b7f1">BinaryOPStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>& opnds, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> oc) : <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(s,opnds,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">BinaryOp</a>), opcode(oc)</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  {</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  }</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> </div><div class="line"><a name="l00856"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f"> 856</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f">getOpcode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="keywordflow">return</span> opcode;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  }</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span> </div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> };</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> </div><div class="line"><a name="l00867"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html"> 867</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a></div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span> {</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>(); </div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a> &); </div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a> &); </div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(); </div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(); </div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>(); </div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>(); </div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span> </div><div class="line"><a name="l00878"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#a099df135a83d28a2e6f344e008fe1cc6"> 878</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1UnaryOPStmt.html#a099df135a83d28a2e6f344e008fe1cc6">opcode</a>;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> </div><div class="line"><a name="l00882"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#abb10688145fa76629916ec3df61b6c95"> 882</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html#abb10688145fa76629916ec3df61b6c95">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a> *)</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  {</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  }</div><div class="line"><a name="l00886"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#a2a4b7e3a4c5be8a253b542f144f830b7"> 886</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html#a2a4b7e3a4c5be8a253b542f144f830b7">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  {</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">SVFStmt::UnaryOp</a>;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  }</div><div class="line"><a name="l00890"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#add29b76e0ef73da2606bac97f74a7896"> 890</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html#add29b76e0ef73da2606bac97f74a7896">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  {</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">SVFStmt::UnaryOp</a>;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  }</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span> </div><div class="line"><a name="l00897"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#a2b91333ac3d4b5e1099590aeb15d38ba"> 897</a></span>  <a class="code" href="classSVF_1_1UnaryOPStmt.html#a2b91333ac3d4b5e1099590aeb15d38ba">UnaryOPStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> oc) : <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">UnaryOp</a>), opcode(oc)</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  {</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  }</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> </div><div class="line"><a name="l00901"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#af29723d5e777b10d53d48263a786f5b6"> 901</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1UnaryOPStmt.html#af29723d5e777b10d53d48263a786f5b6">getOpcode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">return</span> opcode;</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  }</div><div class="line"><a name="l00905"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#abde2b32d5bbd37df0e194b1a4e78483b"> 905</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1UnaryOPStmt.html#abde2b32d5bbd37df0e194b1a4e78483b">getOpVar</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVFStmt::getSrcNode</a>();</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  }</div><div class="line"><a name="l00908"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#a919db9b8c9287c3802f563840b56c4f1"> 908</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1UnaryOPStmt.html#a919db9b8c9287c3802f563840b56c4f1">getRes</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVFStmt::getDstNode</a>();</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  }</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> getOpVarID() <span class="keyword">const</span>;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> getResID() <span class="keyword">const</span>;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span> </div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span> };</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span> </div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> </div><div class="line"><a name="l00921"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html"> 921</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a></div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span> {</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00924"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#ac486fb3a118e6153892b998b0ef46890"> 924</a></span>  <span class="keyword">typedef</span> std::vector<std::pair<const ICFGNode*, s64_t> > <a class="code" href="classSVF_1_1BranchStmt.html#ac486fb3a118e6153892b998b0ef46890">SuccAndCondPairVec</a>;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>(); </div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> &); </div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> &); </div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(); </div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(); </div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>(); </div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>(); </div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span> </div><div class="line"><a name="l00934"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a40854cd95fbae16ef8e370255d0e3cf5"> 934</a></span>  SuccAndCondPairVec <a class="code" href="classSVF_1_1BranchStmt.html#a40854cd95fbae16ef8e370255d0e3cf5">successors</a>;</div><div class="line"><a name="l00935"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#adcf5cabe6e0a87cded5ef1fdf7273f3f"> 935</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1BranchStmt.html#adcf5cabe6e0a87cded5ef1fdf7273f3f">cond</a>;</div><div class="line"><a name="l00936"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a33887345c00ffda9ca7dca59d61e184a"> 936</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1BranchStmt.html#a33887345c00ffda9ca7dca59d61e184a">brInst</a>;</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span> </div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span> </div><div class="line"><a name="l00941"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a750ffca6648fafedfb271fb90d975847"> 941</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BranchStmt.html#a750ffca6648fafedfb271fb90d975847">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> *)</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  {</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  }</div><div class="line"><a name="l00945"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a55b867cd85dbbe43e2f7c1bad5dce647"> 945</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BranchStmt.html#a55b867cd85dbbe43e2f7c1bad5dce647">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  {</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">SVFStmt::Branch</a>;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  }</div><div class="line"><a name="l00949"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#adf97a239f15b635580cef475980e8d82"> 949</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BranchStmt.html#adf97a239f15b635580cef475980e8d82">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  {</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">SVFStmt::Branch</a>;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  }</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span> </div><div class="line"><a name="l00956"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a5e102d5c08b7121efc87b99651f0b5d2"> 956</a></span>  <a class="code" href="classSVF_1_1BranchStmt.html#a5e102d5c08b7121efc87b99651f0b5d2">BranchStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* inst, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* c, <span class="keyword">const</span> SuccAndCondPairVec& succs) : <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>(c,inst,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">Branch</a>), successors(succs), cond(c), brInst(inst)</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  }</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span> </div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="keywordtype">bool</span> isUnconditional() <span class="keyword">const</span>;</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="keywordtype">bool</span> isConditional() <span class="keyword">const</span>;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* getCondition() <span class="keyword">const</span>;</div><div class="line"><a name="l00966"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b"> 966</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b">getBranchInst</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  <span class="keywordflow">return</span> brInst;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  }</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  </div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> </div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> </div><div class="line"><a name="l00981"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a022d355bde3d0d0a9471cd125b24583b"> 981</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1BranchStmt.html#a022d355bde3d0d0a9471cd125b24583b">getNumSuccessors</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <span class="keywordflow">return</span> successors.size();</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  }</div><div class="line"><a name="l00984"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a93040c884df211ac62d53ceafdd9c4dd"> 984</a></span>  <span class="keyword">const</span> SuccAndCondPairVec& <a class="code" href="classSVF_1_1BranchStmt.html#a93040c884df211ac62d53ceafdd9c4dd">getSuccessors</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  <span class="keywordflow">return</span> successors;</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  }</div><div class="line"><a name="l00987"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8"> 987</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* <a class="code" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">getSuccessor</a> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i)<span class="keyword"> const</span>{</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordflow">return</span> successors.at(i).first;</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  }</div><div class="line"><a name="l00990"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a7d2fa666602e0444d3e019563c0e7556"> 990</a></span>  <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> <a class="code" href="classSVF_1_1BranchStmt.html#a7d2fa666602e0444d3e019563c0e7556">getSuccessorCondValue</a> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i)<span class="keyword"> const</span>{ </div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <span class="keywordflow">return</span> successors.at(i).second;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  }</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span> };</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span> </div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span> </div><div class="line"><a name="l01001"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html"> 1001</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a></div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> {</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> <span class="keyword">private</span>:</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>(); </div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a> &); </div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a> &); </div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> </div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> <span class="keyword">public</span>:</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> </div><div class="line"><a name="l01011"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html#a79317f2ac92ace129a1ccf802406498d"> 1011</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDForkPE.html#a79317f2ac92ace129a1ccf802406498d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a> *)</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  {</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  }</div><div class="line"><a name="l01015"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html#a68f16df5a9b44dd2492c33fb0a1b5f0c"> 1015</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDForkPE.html#a68f16df5a9b44dd2492c33fb0a1b5f0c">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  {</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  }</div><div class="line"><a name="l01019"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html#a9e160158fe61958bcd6ef2a7da559018"> 1019</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDForkPE.html#a9e160158fe61958bcd6ef2a7da559018">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  {</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  }</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> </div><div class="line"><a name="l01026"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html#ae28fa8ad500a11208410adbfd0d19ea5"> 1026</a></span>  <a class="code" href="classSVF_1_1TDForkPE.html#ae28fa8ad500a11208410adbfd0d19ea5">TDForkPE</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>) :</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>(s,d,i,entry,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">ThreadFork</a>)</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  {</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  }</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> </div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> };</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> </div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> </div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> </div><div class="line"><a name="l01039"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html"> 1039</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a></div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> {</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> <span class="keyword">private</span>:</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>(); </div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a> &); </div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a> &); </div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> </div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> <span class="keyword">public</span>:</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> </div><div class="line"><a name="l01049"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html#ace17257476d0ee089a9f9cb8dc63e3f2"> 1049</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDJoinPE.html#ace17257476d0ee089a9f9cb8dc63e3f2">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a> *)</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  {</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  }</div><div class="line"><a name="l01053"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html#a18e24262f5be7835bc830ea410acc19d"> 1053</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDJoinPE.html#a18e24262f5be7835bc830ea410acc19d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  {</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  }</div><div class="line"><a name="l01057"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html#a22303af690086961b8d2356b345f882b"> 1057</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDJoinPE.html#a22303af690086961b8d2356b345f882b">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  {</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  }</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> </div><div class="line"><a name="l01064"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html#ad836475c24cb395175291df3f1ddfee0"> 1064</a></span>  <a class="code" href="classSVF_1_1TDJoinPE.html#ad836475c24cb395175291df3f1ddfee0">TDJoinPE</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* e) :</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>(s,d,i,e, <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">ThreadJoin</a>)</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  {</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  }</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> </div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> };</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> </div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> </div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> <span class="preprocessor">#endif </span><span class="comment">/* PAGEDGE_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1CmpStmt_html_a16a5fddf61f6a13ee34dde0c4267d0e5"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#a16a5fddf61f6a13ee34dde0c4267d0e5">SVF::CmpStmt::classof</a></div><div class="ttdeci">static bool classof(const SVFStmt *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00791">SVFStatements.h:791</a></div></div>
|
|
69
|
+
<a href="SVFStatements_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- SVFStatements.h -- SVF statements-------------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">/*</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * SVFStatements.h</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> *</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Created on: Nov 10, 2013</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> */</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#ifndef PAGEDGE_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#define PAGEDGE_H_</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="GenericGraph_8h.html">Graphs/GenericGraph.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="LocationSet_8h.html">MemoryModel/LocationSet.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="ICFGNode_8h.html">Graphs/ICFGNode.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ab502ff5e204678640c1081d104f60971"> 41</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">/*</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment"> * SVFIR program statements (PAGEdges)</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment"> */</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericEdge.html">GenericEdge<SVFVar></a> <a class="code" href="namespaceSVF.html#ab502ff5e204678640c1081d104f60971">GenericPAGEdgeTy</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html"> 47</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> : <span class="keyword">public</span> GenericPAGEdgeTy</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9"> 54</a></span>  <span class="keyword">enum</span> <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">PEDGEK</a></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688"> 56</a></span>  <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">Addr</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">Copy</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">Store</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">Load</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">Call</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">Ret</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">Gep</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">Phi</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">Select</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">Cmp</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">BinaryOp</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">UnaryOp</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">Branch</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">ThreadFork</a>, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">ThreadJoin</a></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a6a689f62af301bd6ac09d7019aba1c17"> 60</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1SVFStmt.html#a6a689f62af301bd6ac09d7019aba1c17">value</a>; </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a877c7137875233e147faeb1198243f36"> 61</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *<a class="code" href="classSVF_1_1SVFStmt.html#a877c7137875233e147faeb1198243f36">basicBlock</a>; </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a50046a1500ec6e2819ef55162e70cc71"> 62</a></span>  <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *<a class="code" href="classSVF_1_1SVFStmt.html#a50046a1500ec6e2819ef55162e70cc71">icfgNode</a>; </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a593cc8136f2138a518476405e667e060"> 63</a></span>  <a class="code" href="namespaceSVF.html#ae71551d6a1fc300e0403297aa25ddf94">EdgeID</a> <a class="code" href="classSVF_1_1SVFStmt.html#a593cc8136f2138a518476405e667e060">edgeId</a>; </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#af1a9c2a18805560e46425bd98a35dea9"> 65</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SVFStmt.html#af1a9c2a18805560e46425bd98a35dea9">totalEdgeNum</a>; </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="classSVF_1_1SVFStmt.html#a47102f72115d41bff899b1b2ffec75b1">SVFStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> k);</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#aac79c7e8d390f297002782afb0ba3ff0"> 70</a></span>  <a class="code" href="classSVF_1_1SVFStmt.html#aac79c7e8d390f297002782afb0ba3ff0">~SVFStmt</a>()</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#ac517a3166a3afe45d04480534ac3bb50"> 76</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFStmt.html#ac517a3166a3afe45d04480534ac3bb50">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>*)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a00339663741d9f581d2f3ecae5a3e7e3"> 80</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFStmt.html#a00339663741d9f581d2f3ecae5a3e7e3">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a> ||</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a> ||</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a> ||</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a> ||</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a> ||</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a> ||</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a> ||</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVFStmt::Cmp</a> ||</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVFStmt::BinaryOp</a> ||</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">SVFStmt::UnaryOp</a> ||</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a> ||</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#af7bb0d687fc61cae1de639c88e472491"> 98</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ae71551d6a1fc300e0403297aa25ddf94">EdgeID</a> <a class="code" href="classSVF_1_1SVFStmt.html#af7bb0d687fc61cae1de639c88e472491">getEdgeID</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFStmt.html#a593cc8136f2138a518476405e667e060">edgeId</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">isPTAEdge</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a86628ea173dec4934322f5d1caf2e1db"> 107</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* <a class="code" href="classSVF_1_1SVFStmt.html#a86628ea173dec4934322f5d1caf2e1db">getInst</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>>(<a class="code" href="classSVF_1_1SVFStmt.html#a6a689f62af301bd6ac09d7019aba1c17">value</a>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a24dddb4e346a6e569908e3efe8a6ecc0"> 111</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStmt.html#a24dddb4e346a6e569908e3efe8a6ecc0">setValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  value = val;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a65ee8b43a3a4999eb112a197d1a9f882"> 115</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1SVFStmt.html#a65ee8b43a3a4999eb112a197d1a9f882">getValue</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFStmt.html#a6a689f62af301bd6ac09d7019aba1c17">value</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a852730edf374d18a3fb3985211ed7623"> 119</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStmt.html#a852730edf374d18a3fb3985211ed7623">setBB</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  basicBlock = bb;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a793c53e0b4f9a58099c096f0a0856495"> 123</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* <a class="code" href="classSVF_1_1SVFStmt.html#a793c53e0b4f9a58099c096f0a0856495">getBB</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFStmt.html#a877c7137875233e147faeb1198243f36">basicBlock</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#adb92a92f5c878576dff26cb38eab8c8c"> 127</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStmt.html#adb92a92f5c878576dff26cb38eab8c8c">setICFGNode</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  icfgNode = node;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b"> 131</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* <a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFStmt.html#a50046a1500ec6e2819ef55162e70cc71">icfgNode</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a3b20523aed66ac8943d7d00ff777137b"> 138</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> <a class="code" href="classSVF_1_1SVFStmt.html#a3b20523aed66ac8943d7d00ff777137b">makeEdgeFlagWithAddionalOpnd</a>(<a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* var)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  Var2LabelMap::const_iterator iter = <a class="code" href="classSVF_1_1SVFStmt.html#a24c64109d27ef7549d1c7a07c391e007">var2LabelMap</a>.find(var);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> label = (iter != <a class="code" href="classSVF_1_1SVFStmt.html#a24c64109d27ef7549d1c7a07c391e007">var2LabelMap</a>.end()) ?</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  iter->second : <a class="code" href="classSVF_1_1SVFStmt.html#a9ea22adbfc307dddee42ffec07cc88ed">multiOpndLabelCounter</a>++;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  return (label << <a class="code" href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">EdgeKindMaskBits</a>) | k;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00"> 147</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> <a class="code" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00">makeEdgeFlagWithCallInst</a>(<a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* cs)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  Inst2LabelMap::const_iterator iter = <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>.find(cs);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> label = (iter != <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>.end()) ?</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  iter->second : <a class="code" href="classSVF_1_1SVFStmt.html#a24227d7f1dd472f47bf94cb5db8505c4">callEdgeLabelCounter</a>++;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  return (label << <a class="code" href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">EdgeKindMaskBits</a>) | k;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#ad61722f886afaaee722ac55a4eed4d18"> 157</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> <a class="code" href="classSVF_1_1SVFStmt.html#ad61722f886afaaee722ac55a4eed4d18">makeEdgeFlagWithStoreInst</a>(<a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* store)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  Inst2LabelMap::const_iterator iter = <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>.find(store);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> label = (iter != <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>.end()) ?</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  iter->second : <a class="code" href="classSVF_1_1SVFStmt.html#a53b7e0d8666e37c23dc2c7d0fc931f27">storeEdgeLabelCounter</a>++;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  return (label << <a class="code" href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">EdgeKindMaskBits</a>) | k;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#ad75e4c84f7d37824eb096aacca930ead"> 170</a></span>  <span class="keyword">friend</span> <a class="code" href="namespaceSVF.html#a424cc053c29ad7303699c529d1a2cc71">raw_ostream</a>& <a class="code" href="classSVF_1_1SVFStmt.html#ad75e4c84f7d37824eb096aacca930ead">operator<< </a>(<a class="code" href="namespaceSVF.html#a424cc053c29ad7303699c529d1a2cc71">raw_ostream</a> &o, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> &edge)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  o << edge.<a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> o;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4"> 177</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericNode.html#a03c6da4a73c47f84f5c5b47252bc339a">GenericNode<SVFVar,SVFStmt>::GEdgeSetTy</a> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmtSetTy</a>;</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a229c78147511f2a581c761552179b6fa"> 178</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<EdgeID, SVFStmtSetTy></a> <a class="code" href="classSVF_1_1SVFStmt.html#a229c78147511f2a581c761552179b6fa">PAGEdgeToSetMapTy</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a93fc6c4c991931c78c48500c2db50f66"> 179</a></span>  <span class="keyword">typedef</span> PAGEdgeToSetMapTy <a class="code" href="classSVF_1_1SVFStmt.html#a93fc6c4c991931c78c48500c2db50f66">KindToSVFStmtMapTy</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a2bdfa37167b5496629e5cae62705d5f2"> 180</a></span>  <span class="keyword">typedef</span> SVFStmtSetTy <a class="code" href="classSVF_1_1SVFStmt.html#a2bdfa37167b5496629e5cae62705d5f2">PAGEdgeSetTy</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a5a3db6b1335b4adc55b961a6f480f228"> 183</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const ICFGNode*, u32_t></a> <a class="code" href="classSVF_1_1SVFStmt.html#a5a3db6b1335b4adc55b961a6f480f228">Inst2LabelMap</a>;</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#ad178ccbc7800527c3dc406ad5fa069bb"> 184</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFVar*, u32_t></a> <a class="code" href="classSVF_1_1SVFStmt.html#ad178ccbc7800527c3dc406ad5fa069bb">Var2LabelMap</a>;</div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c"> 185</a></span>  <span class="keyword">static</span> Inst2LabelMap <a class="code" href="classSVF_1_1SVFStmt.html#abb83549118bcd7216a053d82f7180d1c">inst2LabelMap</a>; </div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a24c64109d27ef7549d1c7a07c391e007"> 186</a></span>  <span class="keyword">static</span> Var2LabelMap <a class="code" href="classSVF_1_1SVFStmt.html#a24c64109d27ef7549d1c7a07c391e007">var2LabelMap</a>; </div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a24227d7f1dd472f47bf94cb5db8505c4"> 187</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="classSVF_1_1SVFStmt.html#a24227d7f1dd472f47bf94cb5db8505c4">callEdgeLabelCounter</a>; </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a53b7e0d8666e37c23dc2c7d0fc931f27"> 188</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="classSVF_1_1SVFStmt.html#a53b7e0d8666e37c23dc2c7d0fc931f27">storeEdgeLabelCounter</a>; </div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStmt.html#a9ea22adbfc307dddee42ffec07cc88ed"> 189</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="classSVF_1_1SVFStmt.html#a9ea22adbfc307dddee42ffec07cc88ed">multiOpndLabelCounter</a>; </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> };</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="comment">/*</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="comment"> Parent class of Addr, Copy, Store, Load, Call, Ret, NormalGep, VariantGep, ThreadFork, ThreadJoin</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="comment"> connecting RHS expression and LHS expression with an assignment (e.g., LHSExpr = RHSExpr)</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="comment"> Only one operand on the right handside of an assignment</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="comment">*/</span></div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html"> 197</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(); </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a> &); </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a> &); </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(); </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(); </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>(); </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>(); </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#aff4c35109790daed3c6170c985153620"> 210</a></span>  <a class="code" href="classSVF_1_1AssignStmt.html#aff4c35109790daed3c6170c985153620">AssignStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> k) : <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>(s,d,k)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a4f94b6731f324e44fc4d4e06d7acdbf7"> 217</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AssignStmt.html#a4f94b6731f324e44fc4d4e06d7acdbf7">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a> *)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#ad5e2d41b8cd548628b59227368388ed0"> 221</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AssignStmt.html#ad5e2d41b8cd548628b59227368388ed0">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a> ||</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a> ||</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a> ||</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a> ||</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a> ||</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a> ||</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a> ||</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a> ||</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a8b2837153dcf9f7e2adc3b30b2dd0245"> 233</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AssignStmt.html#a8b2837153dcf9f7e2adc3b30b2dd0245">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a> ||</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a> ||</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a> ||</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a> ||</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a> ||</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a> ||</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a> ||</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a> ||</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28"> 247</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28">getRHSVar</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVFStmt::getSrcNode</a>();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  } </div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a973a2b79da223275ed6a1831837b89c7"> 250</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1AssignStmt.html#a973a2b79da223275ed6a1831837b89c7">getLHSVar</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVFStmt::getDstNode</a>();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  } </div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d"> 253</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">SVFStmt::getSrcID</a>();</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  } </div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840"> 256</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">SVFStmt::getDstID</a>();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  } </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> };</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html"> 266</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a>(); </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> &); </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> &); </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> </div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html#a32e129c9f7aa16be8c5c8569989f691f"> 276</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AddrStmt.html#a32e129c9f7aa16be8c5c8569989f691f">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html#aeec83dc4e79ee62c92c75aa778a475ad"> 280</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AddrStmt.html#aeec83dc4e79ee62c92c75aa778a475ad">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html#a6876ffc2c97c5ba64155891b55a7884c"> 284</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AddrStmt.html#a6876ffc2c97c5ba64155891b55a7884c">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrStmt.html#a42caa75acb42ce8e290c1278622f139c"> 291</a></span>  <a class="code" href="classSVF_1_1AddrStmt.html#a42caa75acb42ce8e290c1278622f139c">AddrStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d) : <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">Addr</a>)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> };</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html"> 302</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>(); </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> &); </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> &); </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html#a253c81c922bef6e2d520262c2f7793c4"> 311</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CopyStmt.html#a253c81c922bef6e2d520262c2f7793c4">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html#a5e883bb0bc30cf8b7d325b66f7a42848"> 315</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CopyStmt.html#a5e883bb0bc30cf8b7d325b66f7a42848">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }</div><div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html#a12e960569a9f4beae99195a0fe2d3b68"> 319</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CopyStmt.html#a12e960569a9f4beae99195a0fe2d3b68">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyStmt.html#a69b179ef052408034786d32a52c52389"> 326</a></span>  <a class="code" href="classSVF_1_1CopyStmt.html#a69b179ef052408034786d32a52c52389">CopyStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d) : <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">Copy</a>)</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> };</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html"> 336</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>(); </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> &); </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> &); </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html#ae3c219e8af92e222f55c930009db6e67"> 346</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1StoreStmt.html#ae3c219e8af92e222f55c930009db6e67">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  }</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html#a31f69e402887eff60e2055799ed561b9"> 350</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1StoreStmt.html#a31f69e402887eff60e2055799ed561b9">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html#ab71bf959fce0e702556dd753636298b2"> 354</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1StoreStmt.html#ab71bf959fce0e702556dd753636298b2">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="classSVF_1_1StoreStmt.html#a39ee0d8cc951aff0d6418a3d743fb3ae"> 361</a></span>  <a class="code" href="classSVF_1_1StoreStmt.html#a39ee0d8cc951aff0d6418a3d743fb3ae">StoreStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1IntraICFGNode.html">IntraICFGNode</a>* st) :</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s, d, <a class="code" href="classSVF_1_1SVFStmt.html#ad61722f886afaaee722ac55a4eed4d18">makeEdgeFlagWithStoreInst</a>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">Store</a>, st))</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> };</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html"> 373</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>(); </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> &); </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> &); </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html#a03d6f1ee2f52b34d905b204eb53d6560"> 383</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LoadStmt.html#a03d6f1ee2f52b34d905b204eb53d6560">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *)</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html#ac252b1e9b7c01108d1aff602fbe1ef40"> 387</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LoadStmt.html#ac252b1e9b7c01108d1aff602fbe1ef40">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  }</div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html#ab30f370a8a2a3e63765c1e4843f07826"> 391</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LoadStmt.html#ab30f370a8a2a3e63765c1e4843f07826">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  }</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div><div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadStmt.html#a92c5817abfaa1f6fbc9ee911f458dfb2"> 398</a></span>  <a class="code" href="classSVF_1_1LoadStmt.html#a92c5817abfaa1f6fbc9ee911f458dfb2">LoadStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d) : <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">Load</a>)</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> };</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> </div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html"> 409</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>(); </div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> &); </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> &); </div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> </div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a543a3f4801b22719f7b9677246bf2ac7"> 416</a></span>  <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> <a class="code" href="classSVF_1_1GepStmt.html#a543a3f4801b22719f7b9677246bf2ac7">ls</a>; </div><div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#af8eefbd002ec36f36612b8e9ccdbc757"> 417</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#af8eefbd002ec36f36612b8e9ccdbc757">variantField</a>; </div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> </div><div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a441cd8487b320ceff9d62884b4f28176"> 421</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#a441cd8487b320ceff9d62884b4f28176">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  }</div><div class="line"><a name="l00425"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a92016e7d6061e4a157c9cd39ad94cc20"> 425</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#a92016e7d6061e4a157c9cd39ad94cc20">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div><div class="line"><a name="l00429"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#ac47064e21e2afdf7bd85c6acba44367f"> 429</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#ac47064e21e2afdf7bd85c6acba44367f">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#abec33091e0dac0cdd5b95b6d7b0db3d8"> 435</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>& <a class="code" href="classSVF_1_1GepStmt.html#abec33091e0dac0cdd5b95b6d7b0db3d8">getLocationSet</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">return</span> ls;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  }</div><div class="line"><a name="l00439"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a37811e62495493454405cb33e4a2b904"> 439</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html#a9bb7e08f7cfb2859d25b0e68e21fec89">LocationSet::OffsetValueVec</a>& <a class="code" href="classSVF_1_1GepStmt.html#a37811e62495493454405cb33e4a2b904">getOffsetValueVec</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">return</span> getLocationSet().getOffsetValueVec();</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  }</div><div class="line"><a name="l00444"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#ab6f37c073e4755c4b8bb3ed6365687f4"> 444</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#ab6f37c073e4755c4b8bb3ed6365687f4">isConstantOffset</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">return</span> getLocationSet().isConstantOffset();</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }</div><div class="line"><a name="l00448"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a33b3b9ef0cf7e2ea6400aef74a399adf"> 448</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> <a class="code" href="classSVF_1_1GepStmt.html#a33b3b9ef0cf7e2ea6400aef74a399adf">accumulateConstantOffset</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">return</span> getLocationSet().accumulateConstantOffset();</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  }</div><div class="line"><a name="l00453"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#adf6912f8ddae4f765b685a4f9d3be602"> 453</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> <a class="code" href="classSVF_1_1GepStmt.html#adf6912f8ddae4f765b685a4f9d3be602">getConstantFieldIdx</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(isVariantFieldGep()==<span class="keyword">false</span> && <span class="stringliteral">"Can't retrieve the LocationSet if using a variable field index (pointer arithmetic) for struct field access "</span>);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">return</span> getLocationSet().accumulateConstantFieldIdx();</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  }</div><div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788"> 459</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">return</span> variantField;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  } </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#ae4509ee7b57121da3c67de00e8bdf0b3"> 465</a></span>  <a class="code" href="classSVF_1_1GepStmt.html#ae4509ee7b57121da3c67de00e8bdf0b3">GepStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>& l, <span class="keywordtype">bool</span> varfld=<span class="keyword">false</span>) : <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">Gep</a>), ls(l), variantField(varfld)</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> </div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> };</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> </div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00477"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html"> 477</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CallPE.html">CallPE</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>(); </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> &); </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> &); </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> </div><div class="line"><a name="l00484"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#ace0704c65aa3637c50ff880f68808bba"> 484</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#ace0704c65aa3637c50ff880f68808bba">call</a>; </div><div class="line"><a name="l00485"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a88e420e259b8d7d34c9850ddde53d372"> 485</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#a88e420e259b8d7d34c9850ddde53d372">entry</a>; </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div><div class="line"><a name="l00489"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a6df0149f79122c5a7d517f75d0235e73"> 489</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallPE.html#a6df0149f79122c5a7d517f75d0235e73">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> *)</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  }</div><div class="line"><a name="l00493"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a188c51f3e378c451d34e90c96cca0cf5"> 493</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallPE.html#a188c51f3e378c451d34e90c96cca0cf5">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  || edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  }</div><div class="line"><a name="l00498"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a0d89c20d1d3ccee5f3e45a32085117aa"> 498</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallPE.html#a0d89c20d1d3ccee5f3e45a32085117aa">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  || edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  }</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div><div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a6b907624482ae697680c747e9b41fdab"> 506</a></span>  <a class="code" href="classSVF_1_1CallPE.html#a6b907624482ae697680c747e9b41fdab">CallPE</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* e, <a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k = <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a>) :</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00">makeEdgeFlagWithCallInst</a>(k,i)), call(i), entry(e)</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  }</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#aa50cca8bd91ffb135a7998b58ad7966f"> 513</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#aa50cca8bd91ffb135a7998b58ad7966f">getCallInst</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">return</span> call;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  }</div><div class="line"><a name="l00517"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#ab548c22dfbfeeaeb8ffe83417b396c09"> 517</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#ab548c22dfbfeeaeb8ffe83417b396c09">getCallSite</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">return</span> call;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  }</div><div class="line"><a name="l00521"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#a9c9821c4e7dd031e3f82f2b29427e53e"> 521</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="classSVF_1_1CallPE.html#a9c9821c4e7dd031e3f82f2b29427e53e">getFunEntryICFGNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  }</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> </div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> };</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> </div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> </div><div class="line"><a name="l00534"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html"> 534</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1RetPE.html">RetPE</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> {</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>(); </div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> &); </div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> &); </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> </div><div class="line"><a name="l00541"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#aa2d42edfce9d5a8c025c0bb529aee0f2"> 541</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#aa2d42edfce9d5a8c025c0bb529aee0f2">call</a>; </div><div class="line"><a name="l00542"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a6f6ccda153150b6acdd81550e45f640f"> 542</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#a6f6ccda153150b6acdd81550e45f640f">exit</a>; </div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> </div><div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a43c6965616d67e77087b486265139d21"> 546</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPE.html#a43c6965616d67e77087b486265139d21">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *)</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  }</div><div class="line"><a name="l00550"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a9cd78a723ed55ed6f334a329576a7471"> 550</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPE.html#a9cd78a723ed55ed6f334a329576a7471">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  || edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  }</div><div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a2f0121f26e79fe3766cba93b42dc1119"> 555</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPE.html#a2f0121f26e79fe3766cba93b42dc1119">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  || edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  }</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div><div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a60cb8a19e352547b22f197f4ca8e19d8"> 563</a></span>  <a class="code" href="classSVF_1_1RetPE.html#a60cb8a19e352547b22f197f4ca8e19d8">RetPE</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* e, <a class="code" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> k = <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a>) :</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <a class="code" href="classSVF_1_1AssignStmt.html">AssignStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html#a4513c6e66b46c36219ba6d7403f3eb00">makeEdgeFlagWithCallInst</a>(k,i)), call(i), exit(e)</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  }</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> </div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div><div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a9bbf558ffc8e3c1136e20d18d4c95f42"> 570</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#a9bbf558ffc8e3c1136e20d18d4c95f42">getCallInst</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">return</span> call;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  }</div><div class="line"><a name="l00574"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#ab03f10c0375846a733f3257736a84f9d"> 574</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#ab03f10c0375846a733f3257736a84f9d">getCallSite</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordflow">return</span> call;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  }</div><div class="line"><a name="l00578"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#a274adbd91750d8d6de8ba997285c1c49"> 578</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="classSVF_1_1RetPE.html#a274adbd91750d8d6de8ba997285c1c49">getFunExitICFGNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">return</span> <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  }</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> </div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> };</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> </div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span> <span class="comment">/*</span></div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> <span class="comment">* Program statements with multiple operands including BinaryOPStmt, CmpStmt and PhiStmt</span></div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> <span class="comment">*/</span></div><div class="line"><a name="l00590"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html"> 590</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>{</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00592"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007"> 592</a></span>  <span class="keyword">typedef</span> std::vector<SVFVar*> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(); </div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> &); </div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> &); </div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(); </div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(); </div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>(); </div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>(); </div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> </div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#a172025849492f4de8f87564ef08f5880"> 603</a></span>  OPVars <a class="code" href="classSVF_1_1MultiOpndStmt.html#a172025849492f4de8f87564ef08f5880">opVars</a>;</div><div class="line"><a name="l00605"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#aad0c81aeb48e5d94dd8c60d87b41714c"> 605</a></span>  <a class="code" href="classSVF_1_1MultiOpndStmt.html#aad0c81aeb48e5d94dd8c60d87b41714c">MultiOpndStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* r, <span class="keyword">const</span> OPVars& opnds, <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> k): <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>(opnds.at(0), r, k), opVars(opnds)</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  }</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> </div><div class="line"><a name="l00611"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#aa0d9a26d3ad17432505b1f5bb36368d9"> 611</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#aa0d9a26d3ad17432505b1f5bb36368d9">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *)</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  }</div><div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#a5de8ff8363cb3f0b1427b69aa1058470"> 615</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#a5de8ff8363cb3f0b1427b69aa1058470">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *node)</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  {</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">Phi</a> ||</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">Select</a> ||</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">BinaryOp</a> ||</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">Cmp</a>;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  }</div><div class="line"><a name="l00622"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#ad20128715a7aaf173d60fe8f14575678"> 622</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#ad20128715a7aaf173d60fe8f14575678">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *node)</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  {</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">Phi</a> ||</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">Select</a> ||</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">BinaryOp</a> ||</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  node-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">Cmp</a>;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  }</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> </div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* getOpVar(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos)<span class="keyword"> const</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">return</span> opVars.at(pos);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  }</div><div class="line"><a name="l00638"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601"> 638</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVFStmt::getDstNode</a>();</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> </div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> getOpVarID(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos) <span class="keyword">const</span>;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> getResID() <span class="keyword">const</span>;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> </div><div class="line"><a name="l00646"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#af300571886b7aa2d84b0a70851c99bc3"> 646</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MultiOpndStmt.html#af300571886b7aa2d84b0a70851c99bc3">getOpVarNum</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">return</span> opVars.size();</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  }</div><div class="line"><a name="l00650"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b"> 650</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> OPVars& <a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keywordflow">return</span> opVars;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  }</div><div class="line"><a name="l00653"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#abebed8985cb4d4d1361c42e5454c90b9"> 653</a></span>  <span class="keyword">inline</span> OPVars::const_iterator <a class="code" href="classSVF_1_1MultiOpndStmt.html#abebed8985cb4d4d1361c42e5454c90b9">opVarBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="keywordflow">return</span> opVars.begin();</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  }</div><div class="line"><a name="l00657"></a><span class="lineno"><a class="line" href="classSVF_1_1MultiOpndStmt.html#ad53097d07487d564e7d13f9d7d9ab10c"> 657</a></span>  <span class="keyword">inline</span> OPVars::const_iterator <a class="code" href="classSVF_1_1MultiOpndStmt.html#ad53097d07487d564e7d13f9d7d9ab10c">opVerEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keywordflow">return</span> opVars.end();</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  }</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> };</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> </div><div class="line"><a name="l00668"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html"> 668</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> {</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00671"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ac505a4fe33e82f555663872e81220ba4"> 671</a></span>  <span class="keyword">typedef</span> std::vector<const ICFGNode* > <a class="code" href="classSVF_1_1PhiStmt.html#ac505a4fe33e82f555663872e81220ba4">OpICFGNodeVec</a>;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> </div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>(); </div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> &); </div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> &); </div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> </div><div class="line"><a name="l00678"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#a4c75a8f8430621aaec62a5189db136b5"> 678</a></span>  OpICFGNodeVec <a class="code" href="classSVF_1_1PhiStmt.html#a4c75a8f8430621aaec62a5189db136b5">opICFGNodes</a>;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span> </div><div class="line"><a name="l00682"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#abb620d35e77989c2f7f9ed480e5fa1e9"> 682</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PhiStmt.html#abb620d35e77989c2f7f9ed480e5fa1e9">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> *)</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  }</div><div class="line"><a name="l00686"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ac214292370d79324f6da8624fe2c7139"> 686</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PhiStmt.html#ac214292370d79324f6da8624fe2c7139">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">SVFStmt::Phi</a>;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  }</div><div class="line"><a name="l00690"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ae547394a731d29b44565d3e56a326354"> 690</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PhiStmt.html#ae547394a731d29b44565d3e56a326354">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *edge)</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  {</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">SVFStmt::Phi</a>;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  }</div><div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#a904591799ce401e8d3ee6aa634325ba3"> 694</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PhiStmt.html#a904591799ce401e8d3ee6aa634325ba3">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">SVFStmt::Phi</a>;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  }</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span> </div><div class="line"><a name="l00701"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ac2374acf4477a4bc5d188797ea9baaf3"> 701</a></span>  <a class="code" href="classSVF_1_1PhiStmt.html#ac2374acf4477a4bc5d188797ea9baaf3">PhiStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>& opnds, <span class="keyword">const</span> OpICFGNodeVec& icfgNodes) : <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(s,opnds,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">Phi</a>), opICFGNodes(icfgNodes)</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  {</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(opnds.size()==icfgNodes.size() && <span class="stringliteral">"Numbers of operands and their ICFGNodes are not consistent?"</span>);</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  }</div><div class="line"><a name="l00705"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#ac3541a25f83ce8465d7b35010ba50b37"> 705</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PhiStmt.html#ac3541a25f83ce8465d7b35010ba50b37">addOpVar</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* op, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* inode){</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  opVars.push_back(op);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  opICFGNodes.push_back(inode);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(opVars.size()==opICFGNodes.size() && <span class="stringliteral">"Numbers of operands and their ICFGNodes are not consistent?"</span>);</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  }</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span> </div><div class="line"><a name="l00712"></a><span class="lineno"><a class="line" href="classSVF_1_1PhiStmt.html#a0b97394bc1946c0185d2c11fbc2181f4"> 712</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* <a class="code" href="classSVF_1_1PhiStmt.html#a0b97394bc1946c0185d2c11fbc2181f4">getOpICFGNode</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> op_idx)<span class="keyword"> const</span>{</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">return</span> opICFGNodes.at(op_idx);</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> </div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordtype">bool</span> isFunctionRetPhi() <span class="keyword">const</span>;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> </div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> };</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> </div><div class="line"><a name="l00726"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html"> 726</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a></div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> {</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>(); </div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a> &); </div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a> &); </div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> </div><div class="line"><a name="l00733"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a2d6e9d7131bc69a0e88b703c2c03d7e2"> 733</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SelectStmt.html#a2d6e9d7131bc69a0e88b703c2c03d7e2">condition</a>;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> </div><div class="line"><a name="l00737"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a89f27a20f9c2acc66c4c6152e79ee30e"> 737</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SelectStmt.html#a89f27a20f9c2acc66c4c6152e79ee30e">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a> *)</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  {</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  }</div><div class="line"><a name="l00741"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a3cb54c9a91a32e12c5f8ee452fcf64be"> 741</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SelectStmt.html#a3cb54c9a91a32e12c5f8ee452fcf64be">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  {</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVFStmt::Select</a>;</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  }</div><div class="line"><a name="l00745"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a0b73ca0dedc4b7c718585577424fa0ce"> 745</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SelectStmt.html#a0b73ca0dedc4b7c718585577424fa0ce">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *edge)</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  {</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVFStmt::Select</a>;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  }</div><div class="line"><a name="l00749"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#aa9d3eeb27fee7084bcd2921c98be1bd1"> 749</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SelectStmt.html#aa9d3eeb27fee7084bcd2921c98be1bd1">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  {</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVFStmt::Select</a>;</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  }</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span> </div><div class="line"><a name="l00756"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#ae654d9036e291e723a3f1f7eab5b018b"> 756</a></span>  <a class="code" href="classSVF_1_1SelectStmt.html#ae654d9036e291e723a3f1f7eab5b018b">SelectStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>& opnds, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* cond) : <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(s,opnds,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">Select</a>), condition(cond)</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(opnds.size()==2 && <span class="stringliteral">"SelectStmt can only have two operands!"</span>);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  }</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span> </div><div class="line"><a name="l00762"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#ad4c3e9529176478bb726279a76050e8c"> 762</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SelectStmt.html#ad4c3e9529176478bb726279a76050e8c">getCondition</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keywordflow">return</span> condition;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  }</div><div class="line"><a name="l00765"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#a537c03b08444da34c26b9e989bb0e568"> 765</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SelectStmt.html#a537c03b08444da34c26b9e989bb0e568">getTrueValue</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="keywordflow">return</span> getOpVar(0);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  }</div><div class="line"><a name="l00768"></a><span class="lineno"><a class="line" href="classSVF_1_1SelectStmt.html#af64d7855e352a0afb5d2e98a8622a4ad"> 768</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SelectStmt.html#af64d7855e352a0afb5d2e98a8622a4ad">getFalseValue</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <span class="keywordflow">return</span> getOpVar(1);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  }</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span> };</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> </div><div class="line"><a name="l00776"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html"> 776</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a></div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> {</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>(); </div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> &); </div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> &); </div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span> </div><div class="line"><a name="l00783"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#a26fc263da6ab3fee40a335d367419328"> 783</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CmpStmt.html#a26fc263da6ab3fee40a335d367419328">predicate</a>;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> </div><div class="line"><a name="l00787"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#adec661dd23b7806b35abba2d44aebc61"> 787</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CmpStmt.html#adec661dd23b7806b35abba2d44aebc61">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> *)</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  }</div><div class="line"><a name="l00791"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#a16a5fddf61f6a13ee34dde0c4267d0e5"> 791</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CmpStmt.html#a16a5fddf61f6a13ee34dde0c4267d0e5">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  {</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVFStmt::Cmp</a>;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  }</div><div class="line"><a name="l00795"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#a679ec89e3fa17a17dcc8fafeb30d3a61"> 795</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CmpStmt.html#a679ec89e3fa17a17dcc8fafeb30d3a61">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *edge)</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  {</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVFStmt::Cmp</a>;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  }</div><div class="line"><a name="l00799"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#af9f7fe4aa92bb443cd517f06a8fb94cd"> 799</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CmpStmt.html#af9f7fe4aa92bb443cd517f06a8fb94cd">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  {</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVFStmt::Cmp</a>;</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> </div><div class="line"><a name="l00806"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#a02c4846269bd28bd4e8b127532cb737a"> 806</a></span>  <a class="code" href="classSVF_1_1CmpStmt.html#a02c4846269bd28bd4e8b127532cb737a">CmpStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>& opnds, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pre) : <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(s,opnds,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">Cmp</a>), predicate(pre)</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  {</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  }</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> </div><div class="line"><a name="l00810"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632"> 810</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">getPredicate</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keywordflow">return</span> predicate;</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  }</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  </div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> };</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> </div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span> </div><div class="line"><a name="l00822"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html"> 822</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a></div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> {</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>(); </div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> &); </div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> &); </div><div class="line"><a name="l00828"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#a0c4f900cf7321e8385b4f45e5cba3d1a"> 828</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a0c4f900cf7321e8385b4f45e5cba3d1a">opcode</a>;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> </div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span> </div><div class="line"><a name="l00833"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#ab5a0f41455474643e8dd97aaab0aaab5"> 833</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#ab5a0f41455474643e8dd97aaab0aaab5">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> *)</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  {</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  }</div><div class="line"><a name="l00837"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#abc24c2d50b164a637ad0cec371cb7e63"> 837</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#abc24c2d50b164a637ad0cec371cb7e63">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  {</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVFStmt::BinaryOp</a>;</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  }</div><div class="line"><a name="l00841"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#a7cae2a90a33225c90eb035cf9e663d3d"> 841</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a7cae2a90a33225c90eb035cf9e663d3d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a> *edge)</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  {</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVFStmt::BinaryOp</a>;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  }</div><div class="line"><a name="l00845"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#ac8831079a5a9c6d50fbd09ff545e7cfd"> 845</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#ac8831079a5a9c6d50fbd09ff545e7cfd">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  {</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVFStmt::BinaryOp</a>;</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  }</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> </div><div class="line"><a name="l00852"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#a7470a2412985bbb227bb62d8a297b7f1"> 852</a></span>  <a class="code" href="classSVF_1_1BinaryOPStmt.html#a7470a2412985bbb227bb62d8a297b7f1">BinaryOPStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MultiOpndStmt.html#acf8c7cfbf1c8baab672040635bb9a007">OPVars</a>& opnds, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> oc) : <a class="code" href="classSVF_1_1MultiOpndStmt.html">MultiOpndStmt</a>(s,opnds,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">BinaryOp</a>), opcode(oc)</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  {</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  }</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> </div><div class="line"><a name="l00856"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f"> 856</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f">getOpcode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="keywordflow">return</span> opcode;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  }</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span> </div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> };</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> </div><div class="line"><a name="l00867"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html"> 867</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a></div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span> {</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>(); </div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a> &); </div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a> &); </div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(); </div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(); </div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>(); </div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>(); </div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span> </div><div class="line"><a name="l00878"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#a099df135a83d28a2e6f344e008fe1cc6"> 878</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1UnaryOPStmt.html#a099df135a83d28a2e6f344e008fe1cc6">opcode</a>;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> </div><div class="line"><a name="l00882"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#abb10688145fa76629916ec3df61b6c95"> 882</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html#abb10688145fa76629916ec3df61b6c95">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a> *)</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  {</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  }</div><div class="line"><a name="l00886"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#a2a4b7e3a4c5be8a253b542f144f830b7"> 886</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html#a2a4b7e3a4c5be8a253b542f144f830b7">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  {</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">SVFStmt::UnaryOp</a>;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  }</div><div class="line"><a name="l00890"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#add29b76e0ef73da2606bac97f74a7896"> 890</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html#add29b76e0ef73da2606bac97f74a7896">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  {</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">SVFStmt::UnaryOp</a>;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  }</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span> </div><div class="line"><a name="l00897"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#a2b91333ac3d4b5e1099590aeb15d38ba"> 897</a></span>  <a class="code" href="classSVF_1_1UnaryOPStmt.html#a2b91333ac3d4b5e1099590aeb15d38ba">UnaryOPStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> oc) : <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>(s,d,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">UnaryOp</a>), opcode(oc)</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  {</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  }</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> </div><div class="line"><a name="l00901"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#af29723d5e777b10d53d48263a786f5b6"> 901</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1UnaryOPStmt.html#af29723d5e777b10d53d48263a786f5b6">getOpcode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">return</span> opcode;</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  }</div><div class="line"><a name="l00905"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#abde2b32d5bbd37df0e194b1a4e78483b"> 905</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1UnaryOPStmt.html#abde2b32d5bbd37df0e194b1a4e78483b">getOpVar</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVFStmt::getSrcNode</a>();</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  }</div><div class="line"><a name="l00908"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPStmt.html#a919db9b8c9287c3802f563840b56c4f1"> 908</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1UnaryOPStmt.html#a919db9b8c9287c3802f563840b56c4f1">getRes</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVFStmt::getDstNode</a>();</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  }</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> getOpVarID() <span class="keyword">const</span>;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> getResID() <span class="keyword">const</span>;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span> </div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span> };</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span> </div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> </div><div class="line"><a name="l00921"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html"> 921</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a></div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span> {</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00924"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#ac486fb3a118e6153892b998b0ef46890"> 924</a></span>  <span class="keyword">typedef</span> std::vector<std::pair<const ICFGNode*, s64_t> > <a class="code" href="classSVF_1_1BranchStmt.html#ac486fb3a118e6153892b998b0ef46890">SuccAndCondPairVec</a>;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>(); </div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> &); </div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> &); </div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>(); </div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(); </div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>(); </div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>(); </div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span> </div><div class="line"><a name="l00934"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a40854cd95fbae16ef8e370255d0e3cf5"> 934</a></span>  SuccAndCondPairVec <a class="code" href="classSVF_1_1BranchStmt.html#a40854cd95fbae16ef8e370255d0e3cf5">successors</a>;</div><div class="line"><a name="l00935"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#adcf5cabe6e0a87cded5ef1fdf7273f3f"> 935</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1BranchStmt.html#adcf5cabe6e0a87cded5ef1fdf7273f3f">cond</a>;</div><div class="line"><a name="l00936"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a33887345c00ffda9ca7dca59d61e184a"> 936</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1BranchStmt.html#a33887345c00ffda9ca7dca59d61e184a">brInst</a>;</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span> </div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span> </div><div class="line"><a name="l00941"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a750ffca6648fafedfb271fb90d975847"> 941</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BranchStmt.html#a750ffca6648fafedfb271fb90d975847">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> *)</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  {</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  }</div><div class="line"><a name="l00945"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a55b867cd85dbbe43e2f7c1bad5dce647"> 945</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BranchStmt.html#a55b867cd85dbbe43e2f7c1bad5dce647">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  {</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">SVFStmt::Branch</a>;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  }</div><div class="line"><a name="l00949"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#adf97a239f15b635580cef475980e8d82"> 949</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BranchStmt.html#adf97a239f15b635580cef475980e8d82">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  {</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">SVFStmt::Branch</a>;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  }</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span> </div><div class="line"><a name="l00956"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a5e102d5c08b7121efc87b99651f0b5d2"> 956</a></span>  <a class="code" href="classSVF_1_1BranchStmt.html#a5e102d5c08b7121efc87b99651f0b5d2">BranchStmt</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* inst, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* c, <span class="keyword">const</span> SuccAndCondPairVec& succs) : <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>(c,inst,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">Branch</a>), successors(succs), cond(c), brInst(inst)</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  }</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span> </div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="keywordtype">bool</span> isUnconditional() <span class="keyword">const</span>;</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="keywordtype">bool</span> isConditional() <span class="keyword">const</span>;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* getCondition() <span class="keyword">const</span>;</div><div class="line"><a name="l00966"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b"> 966</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b">getBranchInst</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  <span class="keywordflow">return</span> brInst;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  }</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  </div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> </div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> </div><div class="line"><a name="l00981"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a022d355bde3d0d0a9471cd125b24583b"> 981</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1BranchStmt.html#a022d355bde3d0d0a9471cd125b24583b">getNumSuccessors</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <span class="keywordflow">return</span> successors.size();</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  }</div><div class="line"><a name="l00984"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a93040c884df211ac62d53ceafdd9c4dd"> 984</a></span>  <span class="keyword">const</span> SuccAndCondPairVec& <a class="code" href="classSVF_1_1BranchStmt.html#a93040c884df211ac62d53ceafdd9c4dd">getSuccessors</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  <span class="keywordflow">return</span> successors;</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  }</div><div class="line"><a name="l00987"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8"> 987</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* <a class="code" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">getSuccessor</a> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i)<span class="keyword"> const</span>{</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordflow">return</span> successors.at(i).first;</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  }</div><div class="line"><a name="l00990"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchStmt.html#a7d2fa666602e0444d3e019563c0e7556"> 990</a></span>  <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> <a class="code" href="classSVF_1_1BranchStmt.html#a7d2fa666602e0444d3e019563c0e7556">getSuccessorCondValue</a> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i)<span class="keyword"> const</span>{ </div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <span class="keywordflow">return</span> successors.at(i).second;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  }</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const override</span>;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span> };</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span> </div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span> </div><div class="line"><a name="l01001"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html"> 1001</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a></div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> {</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> <span class="keyword">private</span>:</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>(); </div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a> &); </div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a> &); </div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> </div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> <span class="keyword">public</span>:</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> </div><div class="line"><a name="l01011"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html#a79317f2ac92ace129a1ccf802406498d"> 1011</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDForkPE.html#a79317f2ac92ace129a1ccf802406498d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a> *)</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  {</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  }</div><div class="line"><a name="l01015"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html#a68f16df5a9b44dd2492c33fb0a1b5f0c"> 1015</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDForkPE.html#a68f16df5a9b44dd2492c33fb0a1b5f0c">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  {</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  }</div><div class="line"><a name="l01019"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html#a9e160158fe61958bcd6ef2a7da559018"> 1019</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDForkPE.html#a9e160158fe61958bcd6ef2a7da559018">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  {</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  }</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> </div><div class="line"><a name="l01026"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html#ae28fa8ad500a11208410adbfd0d19ea5"> 1026</a></span>  <a class="code" href="classSVF_1_1TDForkPE.html#ae28fa8ad500a11208410adbfd0d19ea5">TDForkPE</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>) :</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>(s,d,i,entry,<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">ThreadFork</a>)</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  {</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  }</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> </div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> };</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> </div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> </div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> </div><div class="line"><a name="l01039"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html"> 1039</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a></div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> {</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> <span class="keyword">private</span>:</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>(); </div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a> &); </div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a> &); </div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> </div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> <span class="keyword">public</span>:</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> </div><div class="line"><a name="l01049"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html#ace17257476d0ee089a9f9cb8dc63e3f2"> 1049</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDJoinPE.html#ace17257476d0ee089a9f9cb8dc63e3f2">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a> *)</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  {</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  }</div><div class="line"><a name="l01053"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html#a18e24262f5be7835bc830ea410acc19d"> 1053</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDJoinPE.html#a18e24262f5be7835bc830ea410acc19d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  {</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  }</div><div class="line"><a name="l01057"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html#a22303af690086961b8d2356b345f882b"> 1057</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1TDJoinPE.html#a22303af690086961b8d2356b345f882b">classof</a>(<span class="keyword">const</span> GenericPAGEdgeTy *edge)</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  {</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  }</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> </div><div class="line"><a name="l01064"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html#ad836475c24cb395175291df3f1ddfee0"> 1064</a></span>  <a class="code" href="classSVF_1_1TDJoinPE.html#ad836475c24cb395175291df3f1ddfee0">TDJoinPE</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* s, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* d, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* e) :</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>(s,d,i,e, <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>::<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">ThreadJoin</a>)</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  {</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  }</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> </div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> };</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> </div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> </div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> <span class="preprocessor">#endif </span><span class="comment">/* PAGEDGE_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1CmpStmt_html_a16a5fddf61f6a13ee34dde0c4267d0e5"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#a16a5fddf61f6a13ee34dde0c4267d0e5">SVF::CmpStmt::classof</a></div><div class="ttdeci">static bool classof(const SVFStmt *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00791">SVFStatements.h:791</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_a793c53e0b4f9a58099c096f0a0856495"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a793c53e0b4f9a58099c096f0a0856495">SVF::SVFStmt::getBB</a></div><div class="ttdeci">const BasicBlock * getBB() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00123">SVFStatements.h:123</a></div></div>
|
|
71
71
|
<div class="ttc" id="classSVF_1_1BinaryOPStmt_html_a0c4f900cf7321e8385b4f45e5cba3d1a"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a0c4f900cf7321e8385b4f45e5cba3d1a">SVF::BinaryOPStmt::opcode</a></div><div class="ttdeci">u32_t opcode</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00828">SVFStatements.h:828</a></div></div>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1AddrStmt_html"><div class="ttname"><a href="classSVF_1_1AddrStmt.html">SVF::AddrStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00266">SVFStatements.h:266</a></div></div>
|
|
@@ -88,7 +88,7 @@ $(function() {
|
|
|
88
88
|
<div class="ttc" id="classSVF_1_1BranchStmt_html_adcf5cabe6e0a87cded5ef1fdf7273f3f"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#adcf5cabe6e0a87cded5ef1fdf7273f3f">SVF::BranchStmt::cond</a></div><div class="ttdeci">const SVFVar * cond</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00935">SVFStatements.h:935</a></div></div>
|
|
89
89
|
<div class="ttc" id="classSVF_1_1UnaryOPStmt_html_af29723d5e777b10d53d48263a786f5b6"><div class="ttname"><a href="classSVF_1_1UnaryOPStmt.html#af29723d5e777b10d53d48263a786f5b6">SVF::UnaryOPStmt::getOpcode</a></div><div class="ttdeci">u32_t getOpcode() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00901">SVFStatements.h:901</a></div></div>
|
|
90
90
|
<div class="ttc" id="classSVF_1_1LoadStmt_html_ab30f370a8a2a3e63765c1e4843f07826"><div class="ttname"><a href="classSVF_1_1LoadStmt.html#ab30f370a8a2a3e63765c1e4843f07826">SVF::LoadStmt::classof</a></div><div class="ttdeci">static bool classof(const GenericPAGEdgeTy *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00391">SVFStatements.h:391</a></div></div>
|
|
91
|
-
<div class="ttc" id="classSVF_1_1GepStmt_html_a37811e62495493454405cb33e4a2b904"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a37811e62495493454405cb33e4a2b904">SVF::GepStmt::getOffsetValueVec</a></div><div class="ttdeci">const LocationSet::OffsetValueVec & getOffsetValueVec() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
91
|
+
<div class="ttc" id="classSVF_1_1GepStmt_html_a37811e62495493454405cb33e4a2b904"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a37811e62495493454405cb33e4a2b904">SVF::GepStmt::getOffsetValueVec</a></div><div class="ttdeci">const LocationSet::OffsetValueVec & getOffsetValueVec() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00439">SVFStatements.h:439</a></div></div>
|
|
92
92
|
<div class="ttc" id="classSVF_1_1SelectStmt_html_aa9d3eeb27fee7084bcd2921c98be1bd1"><div class="ttname"><a href="classSVF_1_1SelectStmt.html#aa9d3eeb27fee7084bcd2921c98be1bd1">SVF::SelectStmt::classof</a></div><div class="ttdeci">static bool classof(const GenericPAGEdgeTy *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00749">SVFStatements.h:749</a></div></div>
|
|
93
93
|
<div class="ttc" id="classSVF_1_1PhiStmt_html_ac2374acf4477a4bc5d188797ea9baaf3"><div class="ttname"><a href="classSVF_1_1PhiStmt.html#ac2374acf4477a4bc5d188797ea9baaf3">SVF::PhiStmt::PhiStmt</a></div><div class="ttdeci">PhiStmt(SVFVar *s, const OPVars &opnds, const OpICFGNodeVec &icfgNodes)</div><div class="ttdoc">constructor </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00701">SVFStatements.h:701</a></div></div>
|
|
94
94
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVF::SVFStmt::Gep</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
|
|
@@ -134,7 +134,7 @@ $(function() {
|
|
|
134
134
|
<div class="ttc" id="classSVF_1_1MultiOpndStmt_html_aa0d9a26d3ad17432505b1f5bb36368d9"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#aa0d9a26d3ad17432505b1f5bb36368d9">SVF::MultiOpndStmt::classof</a></div><div class="ttdeci">static bool classof(const MultiOpndStmt *)</div><div class="ttdoc">Methods for support type inquiry through isa, cast, and dyn_cast: </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00611">SVFStatements.h:611</a></div></div>
|
|
135
135
|
<div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
|
|
136
136
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_ad0b4dbe87e009518f22360c48b0d0c22"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">SVF::SVFStmt::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00061">SVFStatements.cpp:61</a></div></div>
|
|
137
|
-
<div class="ttc" id="classSVF_1_1GepStmt_html_a33b3b9ef0cf7e2ea6400aef74a399adf"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a33b3b9ef0cf7e2ea6400aef74a399adf">SVF::GepStmt::accumulateConstantOffset</a></div><div class="ttdeci">s64_t accumulateConstantOffset() const</div><div class="ttdoc">Return accumulated constant offset (when accessing array or struct) if this offset is a constant...</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
137
|
+
<div class="ttc" id="classSVF_1_1GepStmt_html_a33b3b9ef0cf7e2ea6400aef74a399adf"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a33b3b9ef0cf7e2ea6400aef74a399adf">SVF::GepStmt::accumulateConstantOffset</a></div><div class="ttdeci">s64_t accumulateConstantOffset() const</div><div class="ttdoc">Return accumulated constant offset (when accessing array or struct) if this offset is a constant...</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00448">SVFStatements.h:448</a></div></div>
|
|
138
138
|
<div class="ttc" id="classSVF_1_1CallPE_html_a9c9821c4e7dd031e3f82f2b29427e53e"><div class="ttname"><a href="classSVF_1_1CallPE.html#a9c9821c4e7dd031e3f82f2b29427e53e">SVF::CallPE::getFunEntryICFGNode</a></div><div class="ttdeci">const FunEntryICFGNode * getFunEntryICFGNode() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00521">SVFStatements.h:521</a></div></div>
|
|
139
139
|
<div class="ttc" id="classSVF_1_1TDForkPE_html_a68f16df5a9b44dd2492c33fb0a1b5f0c"><div class="ttname"><a href="classSVF_1_1TDForkPE.html#a68f16df5a9b44dd2492c33fb0a1b5f0c">SVF::TDForkPE::classof</a></div><div class="ttdeci">static bool classof(const SVFStmt *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01015">SVFStatements.h:1015</a></div></div>
|
|
140
140
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_a00339663741d9f581d2f3ecae5a3e7e3"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a00339663741d9f581d2f3ecae5a3e7e3">SVF::SVFStmt::classof</a></div><div class="ttdeci">static bool classof(const GenericPAGEdgeTy *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00080">SVFStatements.h:80</a></div></div>
|
|
@@ -212,11 +212,11 @@ $(function() {
|
|
|
212
212
|
<div class="ttc" id="classSVF_1_1StoreStmt_html_a31f69e402887eff60e2055799ed561b9"><div class="ttname"><a href="classSVF_1_1StoreStmt.html#a31f69e402887eff60e2055799ed561b9">SVF::StoreStmt::classof</a></div><div class="ttdeci">static bool classof(const SVFStmt *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00350">SVFStatements.h:350</a></div></div>
|
|
213
213
|
<div class="ttc" id="classSVF_1_1LoadStmt_html_ac252b1e9b7c01108d1aff602fbe1ef40"><div class="ttname"><a href="classSVF_1_1LoadStmt.html#ac252b1e9b7c01108d1aff602fbe1ef40">SVF::LoadStmt::classof</a></div><div class="ttdeci">static bool classof(const SVFStmt *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00387">SVFStatements.h:387</a></div></div>
|
|
214
214
|
<div class="ttc" id="classSVF_1_1CallPE_html_a6b907624482ae697680c747e9b41fdab"><div class="ttname"><a href="classSVF_1_1CallPE.html#a6b907624482ae697680c747e9b41fdab">SVF::CallPE::CallPE</a></div><div class="ttdeci">CallPE(SVFVar *s, SVFVar *d, const CallICFGNode *i, const FunEntryICFGNode *e, GEdgeKind k=SVFStmt::Call)</div><div class="ttdoc">constructor </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00506">SVFStatements.h:506</a></div></div>
|
|
215
|
-
<div class="ttc" id="classSVF_1_1GepStmt_html_adf6912f8ddae4f765b685a4f9d3be602"><div class="ttname"><a href="classSVF_1_1GepStmt.html#adf6912f8ddae4f765b685a4f9d3be602">SVF::GepStmt::getConstantFieldIdx</a></div><div class="ttdeci">s64_t getConstantFieldIdx() const</div><div class="ttdoc">Field index of the gep statement if it access the field of a struct. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
215
|
+
<div class="ttc" id="classSVF_1_1GepStmt_html_adf6912f8ddae4f765b685a4f9d3be602"><div class="ttname"><a href="classSVF_1_1GepStmt.html#adf6912f8ddae4f765b685a4f9d3be602">SVF::GepStmt::getConstantFieldIdx</a></div><div class="ttdeci">s64_t getConstantFieldIdx() const</div><div class="ttdoc">Field index of the gep statement if it access the field of a struct. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00453">SVFStatements.h:453</a></div></div>
|
|
216
216
|
<div class="ttc" id="classSVF_1_1CmpStmt_html_a02c4846269bd28bd4e8b127532cb737a"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#a02c4846269bd28bd4e8b127532cb737a">SVF::CmpStmt::CmpStmt</a></div><div class="ttdeci">CmpStmt(SVFVar *s, const OPVars &opnds, u32_t pre)</div><div class="ttdoc">constructor </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00806">SVFStatements.h:806</a></div></div>
|
|
217
217
|
<div class="ttc" id="classSVF_1_1BranchStmt_html_a55b867cd85dbbe43e2f7c1bad5dce647"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a55b867cd85dbbe43e2f7c1bad5dce647">SVF::BranchStmt::classof</a></div><div class="ttdeci">static bool classof(const SVFStmt *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00945">SVFStatements.h:945</a></div></div>
|
|
218
218
|
<div class="ttc" id="classSVF_1_1PhiStmt_html_a0b97394bc1946c0185d2c11fbc2181f4"><div class="ttname"><a href="classSVF_1_1PhiStmt.html#a0b97394bc1946c0185d2c11fbc2181f4">SVF::PhiStmt::getOpICFGNode</a></div><div class="ttdeci">const ICFGNode * getOpICFGNode(u32_t op_idx) const</div><div class="ttdoc">Return the corresponding ICFGNode of this operand. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00712">SVFStatements.h:712</a></div></div>
|
|
219
|
-
<div class="ttc" id="classSVF_1_1GepStmt_html_ab6f37c073e4755c4b8bb3ed6365687f4"><div class="ttname"><a href="classSVF_1_1GepStmt.html#ab6f37c073e4755c4b8bb3ed6365687f4">SVF::GepStmt::isConstantOffset</a></div><div class="ttdeci">bool isConstantOffset() const</div><div class="ttdoc">Return TRUE if this is a constant location set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
219
|
+
<div class="ttc" id="classSVF_1_1GepStmt_html_ab6f37c073e4755c4b8bb3ed6365687f4"><div class="ttname"><a href="classSVF_1_1GepStmt.html#ab6f37c073e4755c4b8bb3ed6365687f4">SVF::GepStmt::isConstantOffset</a></div><div class="ttdeci">bool isConstantOffset() const</div><div class="ttdoc">Return TRUE if this is a constant location set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00444">SVFStatements.h:444</a></div></div>
|
|
220
220
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVF::SVFStmt::ThreadJoin</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
|
|
221
221
|
<div class="ttc" id="classSVF_1_1TDJoinPE_html_ad836475c24cb395175291df3f1ddfee0"><div class="ttname"><a href="classSVF_1_1TDJoinPE.html#ad836475c24cb395175291df3f1ddfee0">SVF::TDJoinPE::TDJoinPE</a></div><div class="ttdeci">TDJoinPE(SVFVar *s, SVFVar *d, const CallICFGNode *i, const FunExitICFGNode *e)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01064">SVFStatements.h:1064</a></div></div>
|
|
222
222
|
<div class="ttc" id="classSVF_1_1GepStmt_html_ae4509ee7b57121da3c67de00e8bdf0b3"><div class="ttname"><a href="classSVF_1_1GepStmt.html#ae4509ee7b57121da3c67de00e8bdf0b3">SVF::GepStmt::GepStmt</a></div><div class="ttdeci">GepStmt(SVFVar *s, SVFVar *d, const LocationSet &l, bool varfld=false)</div><div class="ttdoc">constructor </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00465">SVFStatements.h:465</a></div></div>
|