svf-tools 1.0.321 → 1.0.322
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 +1 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +9 -9
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +11 -11
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +11 -11
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +33 -33
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +31 -31
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +32 -32
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/SVFStatements_8h.html +11 -11
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +72 -72
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/SVFVariables_8h.html +9 -9
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +66 -66
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +11 -11
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/VFG_8h_source.html +21 -21
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/annotated.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +136 -0
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +498 -0
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +154 -0
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +754 -0
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +169 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +537 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +169 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +547 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +172 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +556 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +74 -22
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +477 -93
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.png +0 -0
- 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_1ConstraintNode-members.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +56 -21
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +251 -89
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +167 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +531 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +165 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +502 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +167 -0
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +577 -0
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +37 -37
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +56 -22
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +257 -118
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +170 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +752 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1LoadMU-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LoadMU.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +56 -21
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +251 -89
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +63 -63
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +71 -71
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt-members.html +141 -0
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +647 -0
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +165 -0
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +644 -0
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +73 -22
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +445 -98
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +142 -142
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +137 -137
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreCHI-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +56 -21
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +258 -89
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +146 -0
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +792 -0
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +69 -69
- package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +163 -0
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +521 -0
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt-members.html +138 -0
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +542 -0
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
- package/SVF-doxygen/html/html/classes.html +18 -18
- package/SVF-doxygen/html/html/functions_a.html +39 -39
- package/SVF-doxygen/html/html/functions_b.html +2 -2
- package/SVF-doxygen/html/html/functions_c.html +34 -34
- package/SVF-doxygen/html/html/functions_d.html +4 -4
- package/SVF-doxygen/html/html/functions_f.html +3 -3
- package/SVF-doxygen/html/html/functions_func.html +38 -38
- package/SVF-doxygen/html/html/functions_func_b.html +2 -2
- package/SVF-doxygen/html/html/functions_func_c.html +30 -30
- package/SVF-doxygen/html/html/functions_func_d.html +4 -4
- package/SVF-doxygen/html/html/functions_func_f.html +2 -2
- package/SVF-doxygen/html/html/functions_func_g.html +49 -49
- package/SVF-doxygen/html/html/functions_func_l.html +3 -3
- package/SVF-doxygen/html/html/functions_func_n.html +2 -2
- package/SVF-doxygen/html/html/functions_func_o.html +15 -15
- package/SVF-doxygen/html/html/functions_func_p.html +2 -2
- package/SVF-doxygen/html/html/functions_func_s.html +4 -4
- package/SVF-doxygen/html/html/functions_func_t.html +20 -20
- package/SVF-doxygen/html/html/functions_func_u.html +2 -2
- package/SVF-doxygen/html/html/functions_func_v.html +5 -5
- package/SVF-doxygen/html/html/functions_g.html +52 -52
- package/SVF-doxygen/html/html/functions_i.html +2 -2
- package/SVF-doxygen/html/html/functions_l.html +9 -9
- package/SVF-doxygen/html/html/functions_m.html +1 -1
- package/SVF-doxygen/html/html/functions_n.html +2 -2
- package/SVF-doxygen/html/html/functions_o.html +17 -17
- package/SVF-doxygen/html/html/functions_p.html +4 -4
- package/SVF-doxygen/html/html/functions_s.html +7 -7
- package/SVF-doxygen/html/html/functions_t.html +20 -20
- package/SVF-doxygen/html/html/functions_type_c.html +1 -1
- package/SVF-doxygen/html/html/functions_type_l.html +3 -3
- package/SVF-doxygen/html/html/functions_type_p.html +1 -1
- package/SVF-doxygen/html/html/functions_type_s.html +3 -3
- package/SVF-doxygen/html/html/functions_u.html +2 -2
- package/SVF-doxygen/html/html/functions_v.html +5 -5
- package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_g.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_i.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_l.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_o.html +3 -3
- package/SVF-doxygen/html/html/functions_w.html +5 -9
- package/SVF-doxygen/html/html/hierarchy.html +65 -65
- package/SVF-doxygen/html/html/namespaceSVF.html +23 -23
- package/SVF-doxygen/html/html/search/all_1.js +37 -37
- package/SVF-doxygen/html/html/search/all_10.js +2 -2
- package/SVF-doxygen/html/html/search/all_13.js +6 -6
- package/SVF-doxygen/html/html/search/all_14.js +1 -1
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_2.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +8 -8
- package/SVF-doxygen/html/html/search/all_4.js +2 -2
- package/SVF-doxygen/html/html/search/all_6.js +2 -2
- package/SVF-doxygen/html/html/search/all_7.js +26 -26
- package/SVF-doxygen/html/html/search/all_9.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +7 -7
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +1 -1
- package/SVF-doxygen/html/html/search/all_f.js +3 -3
- package/SVF-doxygen/html/html/search/classes_0.js +1 -1
- package/SVF-doxygen/html/html/search/classes_1.js +1 -1
- package/SVF-doxygen/html/html/search/classes_11.js +1 -1
- package/SVF-doxygen/html/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/html/search/classes_2.js +5 -5
- package/SVF-doxygen/html/html/search/classes_3.js +2 -2
- package/SVF-doxygen/html/html/search/classes_5.js +1 -1
- package/SVF-doxygen/html/html/search/classes_6.js +2 -2
- package/SVF-doxygen/html/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/html/search/classes_b.js +1 -1
- package/SVF-doxygen/html/html/search/classes_c.js +1 -1
- package/SVF-doxygen/html/html/search/classes_d.js +1 -1
- package/SVF-doxygen/html/html/search/classes_f.js +1 -1
- package/SVF-doxygen/html/html/search/functions_0.js +37 -37
- package/SVF-doxygen/html/html/search/functions_1.js +1 -1
- package/SVF-doxygen/html/html/search/functions_10.js +3 -3
- package/SVF-doxygen/html/html/search/functions_11.js +1 -1
- package/SVF-doxygen/html/html/search/functions_12.js +1 -1
- package/SVF-doxygen/html/html/search/functions_13.js +2 -2
- package/SVF-doxygen/html/html/search/functions_2.js +7 -7
- package/SVF-doxygen/html/html/search/functions_3.js +2 -2
- package/SVF-doxygen/html/html/search/functions_5.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +25 -25
- package/SVF-doxygen/html/html/search/functions_a.js +3 -3
- package/SVF-doxygen/html/html/search/functions_c.js +1 -1
- package/SVF-doxygen/html/html/search/functions_d.js +2 -2
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +3 -3
- package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_b.js +3 -3
- package/SVF-doxygen/html/html/search/typedefs_f.js +1 -1
- package/SVF-doxygen/html/html/search/variables_6.js +1 -1
- package/SVF-doxygen/html/html/search/variables_7.js +1 -1
- package/SVF-doxygen/html/html/search/variables_9.js +1 -1
- package/SVF-doxygen/html/html/search/variables_c.js +1 -1
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_f.js +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +1 -1
- package/include/Graphs/ICFGNode.h +1 -1
- package/include/Graphs/VFG.h +9 -9
- package/include/Graphs/VFGNode.h +6 -6
- package/include/MSSA/MSSAMuChi.h +6 -6
- package/include/MSSA/MemRegion.h +8 -8
- package/include/MSSA/MemSSA.h +10 -10
- package/include/MemoryModel/PointerAnalysis.h +1 -1
- package/include/MemoryModel/PointerAnalysisImpl.h +2 -2
- package/include/MemoryModel/SVFIR.h +28 -28
- package/include/MemoryModel/SVFStatements.h +68 -68
- package/include/MemoryModel/SVFVariables.h +39 -39
- package/include/SVF-FE/SVFIRBuilder.h +22 -22
- package/lib/DDA/ContextDDA.cpp +4 -4
- package/lib/DDA/DDAStat.cpp +1 -1
- package/lib/DDA/FlowDDA.cpp +2 -2
- package/lib/Graphs/ConsG.cpp +12 -12
- package/lib/Graphs/IRGraph.cpp +15 -15
- package/lib/Graphs/OfflineConsG.cpp +8 -8
- package/lib/Graphs/SVFG.cpp +8 -8
- package/lib/Graphs/ThreadCallGraph.cpp +2 -2
- package/lib/Graphs/VFG.cpp +15 -15
- package/lib/MSSA/MemRegion.cpp +6 -6
- package/lib/MSSA/MemSSA.cpp +6 -6
- package/lib/MemoryModel/PAGBuilderFromFile.cpp +3 -3
- package/lib/MemoryModel/PointerAnalysis.cpp +9 -9
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +2 -2
- package/lib/MemoryModel/SVFIR.cpp +44 -44
- package/lib/MemoryModel/SVFStatements.cpp +24 -24
- package/lib/MemoryModel/SVFVariables.cpp +19 -19
- package/lib/SABER/SaberSVFGBuilder.cpp +2 -2
- package/lib/SVF-FE/Graph2Json.cpp +1 -1
- package/lib/SVF-FE/SVFIRBuilder.cpp +5 -5
- package/lib/Util/PTAStat.cpp +1 -1
- package/lib/Util/TypeBasedHeapCloning.cpp +19 -19
- package/lib/WPA/AndersenSFR.cpp +1 -1
- package/lib/WPA/AndersenStat.cpp +3 -3
- package/lib/WPA/FlowSensitive.cpp +2 -2
- package/lib/WPA/FlowSensitiveStat.cpp +2 -2
- package/lib/WPA/FlowSensitiveTBHC.cpp +4 -4
- package/lib/WPA/VersionedFlowSensitive.cpp +1 -1
- package/lib/WPA/VersionedFlowSensitiveStat.cpp +1 -1
- package/package.json +1 -1
|
@@ -66,8 +66,8 @@ $(function() {
|
|
|
66
66
|
<div class="title">VFG.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="VFG_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">//===- VFG.h ----------------------------------------------------------------//</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-2018> <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> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * VFG.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: 18 Sep. 2018</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifndef INCLUDE_UTIL_VFG_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define INCLUDE_UTIL_VFG_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</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="SVFIR_8h.html">MemoryModel/SVFIR.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="PTACallGraph_8h.html">Graphs/PTACallGraph.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="VFGNode_8h.html">Graphs/VFGNode.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "<a class="code" href="VFGEdge_8h.html">Graphs/VFGEdge.h</a>"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>PointerAnalysis;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">class </span>VFGStat;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ab4f1d8a6715e791c94970e6f87b18f8f"> 44</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericGraph.html">GenericGraph<VFGNode,VFGEdge></a> <a class="code" href="namespaceSVF.html#ab4f1d8a6715e791c94970e6f87b18f8f">GenericVFGTy</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html"> 50</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1VFG.html">VFG</a> : <span class="keyword">public</span> GenericVFGTy</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6"> 55</a></span>  <span class="keyword">enum</span> <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a8ed0b9aea88fbbbe91f33301bea0c9dd"> 57</a></span>  <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a5a28e6fd51e73e076091d4b6f4e61eaa">FULLSVFG</a>, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6ada8562b20e8d888a4b421c200957294d">PTRONLYSVFG</a>, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6aab1abd6be4a29fe8fb03a82f85e568a0">FULLSVFG_OPT</a>, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a8ed0b9aea88fbbbe91f33301bea0c9dd">PTRONLYSVFG_OPT</a></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> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab2abe2ba4ac9e3e1d326d042d35acbc0"> 60</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, VFGNode *></a> <a class="code" href="classSVF_1_1VFG.html#ab2abe2ba4ac9e3e1d326d042d35acbc0">VFGNodeIDToNodeMapTy</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a03d388eec513f713f5e0d06f920168db"> 61</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<VFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a03d388eec513f713f5e0d06f920168db">VFGNodeSet</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab9381c54f2339b3738348ae8b0d6659f"> 62</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, NodeID></a> <a class="code" href="classSVF_1_1VFG.html#ab9381c54f2339b3738348ae8b0d6659f">PAGNodeToDefMapTy</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#abec730a1ec61532cd164f3d42aa107b0"> 63</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<std::pair<NodeID,const CallBlockNode*></a>, <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a> *> <a class="code" href="classSVF_1_1VFG.html#abec730a1ec61532cd164f3d42aa107b0">PAGNodeToActualParmMapTy</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a999654aa377639db5c1e40f603e655a7"> 64</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, ActualRetVFGNode *></a> <a class="code" href="classSVF_1_1VFG.html#a999654aa377639db5c1e40f603e655a7">PAGNodeToActualRetMapTy</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6eb72d2fe080def018d09604fe3affcf"> 65</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, FormalParmVFGNode *></a> <a class="code" href="classSVF_1_1VFG.html#a6eb72d2fe080def018d09604fe3affcf">PAGNodeToFormalParmMapTy</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a52dac90d700a2377b657ec34d3ad2241"> 66</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, FormalRetVFGNode *></a> <a class="code" href="classSVF_1_1VFG.html#a52dac90d700a2377b657ec34d3ad2241">PAGNodeToFormalRetMapTy</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab37b067a59b52c472a284eabbeba43ff"> 67</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGEdge*, StmtVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#ab37b067a59b52c472a284eabbeba43ff">PAGEdgeToStmtVFGNodeMapTy</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aeed3eca629b10554f40b1d2b478580d4"> 68</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, IntraPHIVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#aeed3eca629b10554f40b1d2b478580d4">PAGNodeToPHIVFGNodeMapTy</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a7cefa553955e208d6eb4fcd01ed3c383"> 69</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, BinaryOPVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a7cefa553955e208d6eb4fcd01ed3c383">PAGNodeToBinaryOPVFGNodeMapTy</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#acfcd84ac6bedde4e7e74abdeb9233474"> 70</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, UnaryOPVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#acfcd84ac6bedde4e7e74abdeb9233474">PAGNodeToUnaryOPVFGNodeMapTy</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6ec1a8b02ece25aa165699e10fac7991"> 71</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, BranchVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a6ec1a8b02ece25aa165699e10fac7991">PAGNodeToBranchVFGNodeMapTy</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a9c2446f54d3738b6c0e65632a1200ba0"> 72</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, CmpVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a9c2446f54d3738b6c0e65632a1200ba0">PAGNodeToCmpVFGNodeMapTy</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ad63218978f65ab91ae21bc24c882a716"> 73</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFFunction*, VFGNodeSet ></a> <a class="code" href="classSVF_1_1VFG.html#ad63218978f65ab91ae21bc24c882a716">FunToVFGNodesMapTy</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ade3f735b3c7b1a53cab3d67cd9f7b874"> 75</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGNode.html#a43b6b3dc747d310f793ca1b3bfa9d05f">FormalParmVFGNode::CallPESet</a> <a class="code" href="classSVF_1_1VFG.html#ade3f735b3c7b1a53cab3d67cd9f7b874">CallPESet</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#abf966182c28f0521dcd161aa299e453d"> 76</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGNode.html#a367413b90de8a382190ffa9f0c742e01">FormalRetVFGNode::RetPESet</a> <a class="code" href="classSVF_1_1VFG.html#abf966182c28f0521dcd161aa299e453d">RetPESet</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0bdac7337a393ad2e21a33ec1978ca3f"> 77</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGEdge.html#a54e8b1d339da481222292e3b62d1e765">VFGEdge::VFGEdgeSetTy</a> <a class="code" href="classSVF_1_1VFG.html#a0bdac7337a393ad2e21a33ec1978ca3f">VFGEdgeSetTy</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694"> 78</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGEdge.html#a557334ef75bb5479b045f68c27b38701">VFGEdge::SVFGEdgeSetTy</a> <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a3037ca34a555ebdb4fbf0e86291dc4ea"> 79</a></span>  <span class="keyword">typedef</span> VFGEdge::VFGEdgeSetTy::iterator <a class="code" href="classSVF_1_1VFG.html#a3037ca34a555ebdb4fbf0e86291dc4ea">VFGNodeIter</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c"> 80</a></span>  <span class="keyword">typedef</span> VFGNodeIDToNodeMapTy::iterator <a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">iterator</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a225a91c04afac6a8fe198e9860890a52"> 81</a></span>  <span class="keyword">typedef</span> VFGNodeIDToNodeMapTy::const_iterator <a class="code" href="classSVF_1_1VFG.html#a225a91c04afac6a8fe198e9860890a52">const_iterator</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aa22b76d96c028055cb0cc14d7dd0ed2e"> 82</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1IRGraph.html#ae9547730a27575194977b240647e8ce2">SVFIR::PAGEdgeSet</a> <a class="code" href="classSVF_1_1VFG.html#aa22b76d96c028055cb0cc14d7dd0ed2e">PAGEdgeSet</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a113185086912213257b04daa4590bf13"> 83</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const VFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a113185086912213257b04daa4590bf13">GlobalVFGNodeSet</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab12de81e2912f06551ca7a6693f5046b"> 84</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const PAGNode*></a> <a class="code" href="classSVF_1_1VFG.html#ab12de81e2912f06551ca7a6693f5046b">PAGNodeSet</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8"> 88</a></span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac89b3917ed73ac70aac6205af8f7a4fe"> 89</a></span>  PAGNodeToDefMapTy <a class="code" href="classSVF_1_1VFG.html#ac89b3917ed73ac70aac6205af8f7a4fe">PAGNodeToDefMap</a>; </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a8b256a40e690f31b7a56308d55bad45a"> 90</a></span>  PAGNodeToActualParmMapTy <a class="code" href="classSVF_1_1VFG.html#a8b256a40e690f31b7a56308d55bad45a">PAGNodeToActualParmMap</a>; </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a28c5f7e331a437e09682b972769acf66"> 91</a></span>  PAGNodeToActualRetMapTy <a class="code" href="classSVF_1_1VFG.html#a28c5f7e331a437e09682b972769acf66">PAGNodeToActualRetMap</a>; </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ad014bc47ceba578c368da19e2d86b8f8"> 92</a></span>  PAGNodeToFormalParmMapTy <a class="code" href="classSVF_1_1VFG.html#ad014bc47ceba578c368da19e2d86b8f8">PAGNodeToFormalParmMap</a>; </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a190a59a119215dbb2556735ba3213a2a"> 93</a></span>  PAGNodeToFormalRetMapTy <a class="code" href="classSVF_1_1VFG.html#a190a59a119215dbb2556735ba3213a2a">PAGNodeToFormalRetMap</a>; </div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a598bc7a6863a6eccc3e089b63e9add17"> 94</a></span>  PAGNodeToPHIVFGNodeMapTy <a class="code" href="classSVF_1_1VFG.html#a598bc7a6863a6eccc3e089b63e9add17">PAGNodeToIntraPHIVFGNodeMap</a>; </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0f554fd778b338cbd7e4272eaefc96f6"> 95</a></span>  PAGNodeToBinaryOPVFGNodeMapTy <a class="code" href="classSVF_1_1VFG.html#a0f554fd778b338cbd7e4272eaefc96f6">PAGNodeToBinaryOPVFGNodeMap</a>; </div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac7083aa233d8e3820d6eb8e922f0c051"> 96</a></span>  PAGNodeToUnaryOPVFGNodeMapTy <a class="code" href="classSVF_1_1VFG.html#ac7083aa233d8e3820d6eb8e922f0c051">PAGNodeToUnaryOPVFGNodeMap</a>; </div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#af8c8d0eb778a2a94a33c0b97ee3704c1"> 97</a></span>  PAGNodeToBranchVFGNodeMapTy <a class="code" href="classSVF_1_1VFG.html#af8c8d0eb778a2a94a33c0b97ee3704c1">PAGNodeToBranchVFGNodeMap</a>; </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a9a16c7a7b0df273c1dcbe6ba3aef8fde"> 98</a></span>  PAGNodeToCmpVFGNodeMapTy <a class="code" href="classSVF_1_1VFG.html#a9a16c7a7b0df273c1dcbe6ba3aef8fde">PAGNodeToCmpVFGNodeMap</a>; </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a462fe6eefc55a436f90f91adeb34726f"> 99</a></span>  PAGEdgeToStmtVFGNodeMapTy <a class="code" href="classSVF_1_1VFG.html#a462fe6eefc55a436f90f91adeb34726f">PAGEdgeToStmtVFGNodeMap</a>; </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a9a99ae86d16ffe69bff9d52de769d049"> 100</a></span>  FunToVFGNodesMapTy <a class="code" href="classSVF_1_1VFG.html#a9a99ae86d16ffe69bff9d52de769d049">funToVFGNodesMap</a>; </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3"> 102</a></span>  GlobalVFGNodeSet <a class="code" href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3">globalVFGNodes</a>; </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0c8cf98b652b5eb97d22e2636576f92f"> 103</a></span>  <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1VFG.html#a0c8cf98b652b5eb97d22e2636576f92f">callgraph</a>;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a"> 104</a></span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f"> 105</a></span>  <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a> <a class="code" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f">kind</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#af5005136743913d760d7402bbd308c69">destroy</a>();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="classSVF_1_1VFG.html#a8ba98bb3d888ec5ff40f511da14b37bc">VFG</a>(<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* callgraph, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a> k = <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a5a28e6fd51e73e076091d4b6f4e61eaa">FULLSVFG</a>);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a66f439ffebda7a81925514b77199154b"> 115</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1VFG.html#a66f439ffebda7a81925514b77199154b">~VFG</a>()</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classSVF_1_1VFG.html#af5005136743913d760d7402bbd308c69">destroy</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"> 119</span> </div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ad63c3c11162ba107a6338fb24f9018d7"> 121</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a> <a class="code" href="classSVF_1_1VFG.html#ad63c3c11162ba107a6338fb24f9018d7">getKind</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f">kind</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a268ec1495cbe4adb51fa50d28a4cba3d"> 127</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a268ec1495cbe4adb51fa50d28a4cba3d">isPtrOnlySVFG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> (kind == <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6ada8562b20e8d888a4b421c200957294d">PTRONLYSVFG</a>) || (kind == <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a8ed0b9aea88fbbbe91f33301bea0c9dd">PTRONLYSVFG_OPT</a>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a7622e381fbc1601b3f9a8384df2751bd"> 133</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1VFG.html#a7622e381fbc1601b3f9a8384df2751bd">getPAG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a1693ccdb6c1b57418316c29cde05cad2"> 139</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1VFG.html#a1693ccdb6c1b57418316c29cde05cad2">getCallGraph</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a0c8cf98b652b5eb97d22e2636576f92f">callgraph</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc"> 145</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</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> </div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a30eb9d717ad5bc8a9109a7bdef38f4a1"> 151</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a30eb9d717ad5bc8a9109a7bdef38f4a1">hasVFGNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericGraph.html#a6885064afa211958af7b73f0233284e5">hasGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aff291586a4b0c28a6939577d39de5d0a"> 156</a></span>  <span class="keyword">inline</span> GlobalVFGNodeSet& <a class="code" href="classSVF_1_1VFG.html#aff291586a4b0c28a6939577d39de5d0a">getGlobalVFGNodes</a>()</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3">globalVFGNodes</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">getIntraVFGEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> kind);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aee3d0c4ed32bde425f33281f248b7dd2">dump</a>(<span class="keyword">const</span> std::string& file, <span class="keywordtype">bool</span> simple = <span class="keyword">false</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>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ae4350f68e960bfef87f44587628b1929">view</a>();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a0c0a7c8f0bd27bc9e88ce54c0809b11b">updateCallGraph</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aa1e09df7b3724bf18e450b16735998ab">connectCallerAndCallee</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, VFGEdgeSetTy& edges);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728"> 178</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)<span class="keyword"> const</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">return</span> callgraph-><a class="code" href="classSVF_1_1PTACallGraph.html#afb2daec804e81f0beb72fbc805d1c82a">getCallSiteID</a>(cs, func);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#af04068b6f6beff961f815cc6eae7f5b0"> 182</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* <a class="code" href="classSVF_1_1VFG.html#af04068b6f6beff961f815cc6eae7f5b0">getCallSite</a>(<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> callgraph-><a class="code" href="classSVF_1_1PTACallGraph.html#a2c8b1674f1f942a3b5aa77b7abccb229">getCallSite</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ad28caacede7ab7f3a6676e37655ee84e"> 189</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#ad28caacede7ab7f3a6676e37655ee84e">getDefVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(pagNode));</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">// Given an VFG node, return its left hand side top level pointer (PAGnode)</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a1fff5a365e5aa2d99f07f7f64cc35fac">getLHSTopLevPtr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* node) <span class="keyword">const</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a32b1586d326fbe47080bd1fa2d3270e6"> 199</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a32b1586d326fbe47080bd1fa2d3270e6">getStmtVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* pagEdge)<span class="keyword"> const</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  PAGEdgeToStmtVFGNodeMapTy::const_iterator it = PAGEdgeToStmtVFGNodeMap.find(pagEdge);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != PAGEdgeToStmtVFGNodeMap.end() && <span class="stringliteral">"StmtVFGNode can not be found??"</span>);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a688c0cc4a67c7cd9afbef2f0c264c85b"> 205</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1IntraPHIVFGNode.html">IntraPHIVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a688c0cc4a67c7cd9afbef2f0c264c85b">getIntraPHIVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  PAGNodeToPHIVFGNodeMapTy::const_iterator it = PAGNodeToIntraPHIVFGNodeMap.find(pagNode);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != PAGNodeToIntraPHIVFGNodeMap.end() && <span class="stringliteral">"PHIVFGNode can not be found??"</span>);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a27bd4d5ba75d65056d77882869b0c64d"> 211</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a27bd4d5ba75d65056d77882869b0c64d">getBinaryOPVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  PAGNodeToBinaryOPVFGNodeMapTy::const_iterator it = PAGNodeToBinaryOPVFGNodeMap.find(pagNode);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != PAGNodeToBinaryOPVFGNodeMap.end() && <span class="stringliteral">"BinaryOPVFGNode can not be found??"</span>);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">return</span> it->second;</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_1VFG.html#a1ba67eb17437a1a47c230614c1e3d9fd"> 217</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a1ba67eb17437a1a47c230614c1e3d9fd">getUnaryOPVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  PAGNodeToUnaryOPVFGNodeMapTy::const_iterator it = PAGNodeToUnaryOPVFGNodeMap.find(pagNode);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != PAGNodeToUnaryOPVFGNodeMap.end() && <span class="stringliteral">"UnaryOPVFGNode can not be found??"</span>);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a47609382fcd9ef36706e1d0f0531a843"> 223</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1BranchVFGNode.html">BranchVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a47609382fcd9ef36706e1d0f0531a843">getBranchVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  PAGNodeToBranchVFGNodeMapTy::const_iterator it = PAGNodeToBranchVFGNodeMap.find(pagNode);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != PAGNodeToBranchVFGNodeMap.end() && <span class="stringliteral">"BranchVFGNode can not be found??"</span>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a9215c1d7f1152967f0731057a085e793"> 229</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a9215c1d7f1152967f0731057a085e793">getCmpVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  PAGNodeToCmpVFGNodeMapTy::const_iterator it = PAGNodeToCmpVFGNodeMap.find(pagNode);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != PAGNodeToCmpVFGNodeMap.end() && <span class="stringliteral">"CmpVFGNode can not be found??"</span>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a01b8694a5ab7acf8df0213225550791b"> 235</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a01b8694a5ab7acf8df0213225550791b">getActualParmVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* aparm,<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  PAGNodeToActualParmMapTy::const_iterator it = PAGNodeToActualParmMap.find(std::make_pair(aparm-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),cs));</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=PAGNodeToActualParmMap.end() && <span class="stringliteral">"actual parameter VFG node can not be found??"</span>);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0b072e8e45899b89da0a466140563c38"> 241</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a0b072e8e45899b89da0a466140563c38">getActualRetVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* aret)<span class="keyword"> const</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  PAGNodeToActualRetMapTy::const_iterator it = PAGNodeToActualRetMap.find(aret);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=PAGNodeToActualRetMap.end() && <span class="stringliteral">"actual return VFG node can not be found??"</span>);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">return</span> it->second;</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_1VFG.html#a75eb519e4f89a116db98fccb263af4d6"> 247</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a75eb519e4f89a116db98fccb263af4d6">getFormalParmVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fparm)<span class="keyword"> const</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  PAGNodeToFormalParmMapTy::const_iterator it = PAGNodeToFormalParmMap.find(fparm);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=PAGNodeToFormalParmMap.end() && <span class="stringliteral">"formal parameter VFG node can not be found??"</span>);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> it->second;</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_1VFG.html#ab7ba9d179504165f277d347a7cb9f5d8"> 253</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#ab7ba9d179504165f277d347a7cb9f5d8">getFormalRetVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fret)<span class="keyword"> const</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  PAGNodeToFormalRetMapTy::const_iterator it = PAGNodeToFormalRetMap.find(fret);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=PAGNodeToFormalRetMap.end() && <span class="stringliteral">"formal return VFG node can not be found??"</span>);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1VFG.html#a8994194bca2edfd9528880390de795ab">isFunEntryVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* node) <span class="keyword">const</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a88f6468b9b43bbb06ef757d884580a50"> 265</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a88f6468b9b43bbb06ef757d884580a50">hasBlackHoleConstObjAddrAsDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4">hasDef</a>(pagNode))</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* defNode = <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(pagNode));</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrVFGNode.html">AddrVFGNode</a>* addr = SVFUtil::dyn_cast<AddrVFGNode>(defNode))</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()->isBlkObjOrConstantObj(addr->getPAGEdge()->getSrcID()))</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyVFGNode.html">CopyVFGNode</a>* copy = SVFUtil::dyn_cast<CopyVFGNode>(defNode))</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-><a class="code" href="classSVF_1_1SVFIR.html#a18ca66c199b910b15f1bfa77dcc98c30">isNullPtr</a>(copy->getPAGEdge()->getSrcID()))</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"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a18ec674e8ab0285ec086df87e5c591c9"> 286</a></span>  <span class="keyword">inline</span> VFGNodeSet& <a class="code" href="classSVF_1_1VFG.html#a18ec674e8ab0285ec086df87e5c591c9">getVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun) {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">return</span> funToVFGNodesMap[fun];</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a76af43e28630eb56a1aa5971f516d43d"> 289</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a76af43e28630eb56a1aa5971f516d43d">hasVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun)<span class="keyword"> const </span>{</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">return</span> funToVFGNodesMap.find(fun) != funToVFGNodesMap.end();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a43f4002b0beb00ed2026f7edd9ebbb1c"> 292</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a43f4002b0beb00ed2026f7edd9ebbb1c">VFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun)<span class="keyword"> const </span>{</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">return</span> funToVFGNodesMap.find(fun) != funToVFGNodesMap.end();</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a5166be2c1231a93c9b9ce5f272797b94"> 295</a></span>  <span class="keyword">inline</span> VFGNodeSet::const_iterator <a class="code" href="classSVF_1_1VFG.html#a5166be2c1231a93c9b9ce5f272797b94">getVFGNodeBegin</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun)<span class="keyword"> const </span>{</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  FunToVFGNodesMapTy::const_iterator it = funToVFGNodesMap.find(fun);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != funToVFGNodesMap.end() && <span class="stringliteral">"this function does not have any VFGNode"</span>);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">return</span> it->second.begin();</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a28f2bdcbbc0bab00e93df62ea11647a2"> 300</a></span>  <span class="keyword">inline</span> VFGNodeSet::const_iterator <a class="code" href="classSVF_1_1VFG.html#a28f2bdcbbc0bab00e93df62ea11647a2">getVFGNodeEnd</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun)<span class="keyword"> const </span>{</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  FunToVFGNodesMapTy::const_iterator it = funToVFGNodesMap.find(fun);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != funToVFGNodesMap.end() && <span class="stringliteral">"this function does not have any VFGNode"</span>);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">return</span> it->second.end();</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#aa01f63b17acdd52122a7f1ade329ccea">addCallEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2">addRetEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aeb24b155fe31813b2e6dc0564f55738a"> 314</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aeb24b155fe31813b2e6dc0564f55738a">removeVFGEdge</a>(<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->removeIncomingEdge(edge);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->removeOutgoingEdge(edge);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keyword">delete</span> edge;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  }</div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a122aa5ad874170ef644cee8705f1ef3e"> 321</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a122aa5ad874170ef644cee8705f1ef3e">removeVFGNode</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* node)</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <a class="code" href="classSVF_1_1GenericGraph.html#a1817b65e76052f11e36a67d6b9efd915">removeGNode</a>(node);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </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>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#ac34c4529229404617c346f81cc6c141f">hasIntraVFGEdge</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> kind);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> kind, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#aead3b463d9aa2fae5845d97896bd18ba">hasThreadVFGEdge</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> kind);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a84cf5facb15e1d598c2527fba0c7634d"> 334</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a84cf5facb15e1d598c2527fba0c7634d">addVFGEdge</a>(<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge)</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordtype">bool</span> added1 = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->addIncomingEdge(edge);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordtype">bool</span> added2 = edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->addOutgoingEdge(edge);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(added1 && added2 && <span class="stringliteral">"edge not added??"</span>);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a43b0c126c2e32cb3d286a78b14e09a96"> 345</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a43b0c126c2e32cb3d286a78b14e09a96">checkIntraEdgeParents</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a> *srcNode, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a> *dstNode)</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *srcfun = srcNode-><a class="code" href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">getFun</a>();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *dstfun = dstNode-><a class="code" href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">getFun</a>();</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">if</span>(srcfun != <span class="keyword">nullptr</span> && dstfun != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((srcfun == dstfun) && <span class="stringliteral">"src and dst nodes of an intra VFG edge are not in the same function?"</span>);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6fd24c001a6daedf591974ba27140461"> 356</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a6fd24c001a6daedf591974ba27140461">addInterEdgeFromAPToFP</a>(<a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* src, <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* dst, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId)</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#aa01f63b17acdd52122a7f1ade329ccea">addCallEdge</a>(src-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dst-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),csId);</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_1VFG.html#abd05b599b383c759455aff99963b7b41"> 361</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#abd05b599b383c759455aff99963b7b41">addInterEdgeFromFRToAR</a>(<a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>* src, <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* dst, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId)</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2">addRetEdge</a>(src-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dst-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),csId);</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="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a185ed4079babc0e0f72c4bf223342ee2"> 367</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a185ed4079babc0e0f72c4bf223342ee2">addInterEdgeFromAPToFP</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId)</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>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#aa01f63b17acdd52122a7f1ade329ccea">addCallEdge</a>(src,dst,csId);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  }</div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a4ac1cd5f79c9e33ae599f7eb942a6e01"> 372</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a4ac1cd5f79c9e33ae599f7eb942a6e01">addInterEdgeFromFRToAR</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId)</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2">addRetEdge</a>(src,dst,csId);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#acbc1f5ae3b9016b1ce97314a2b8b54c0">connectAParamAndFParam</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* csArg, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* funArg, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cbn, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, VFGEdgeSetTy& edges)</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> actualParam = <a class="code" href="classSVF_1_1VFG.html#a01b8694a5ab7acf8df0213225550791b">getActualParmVFGNode</a>(csArg, cbn)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> formalParam = <a class="code" href="classSVF_1_1VFG.html#a75eb519e4f89a116db98fccb263af4d6">getFormalParmVFGNode</a>(funArg)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#a6fd24c001a6daedf591974ba27140461">addInterEdgeFromAPToFP</a>(actualParam, formalParam,csId);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  edges.insert(edge);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }</div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab4e8ab307ad6beb46812a60ebd31ae3b"> 389</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ab4e8ab307ad6beb46812a60ebd31ae3b">connectFRetAndARet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* funReturn, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* csReturn, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, VFGEdgeSetTy& edges)</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> formalRet = <a class="code" href="classSVF_1_1VFG.html#ab7ba9d179504165f277d347a7cb9f5d8">getFormalRetVFGNode</a>(funReturn)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> actualRet = <a class="code" href="classSVF_1_1VFG.html#a0b072e8e45899b89da0a466140563c38">getActualRetVFGNode</a>(csReturn)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#abd05b599b383c759455aff99963b7b41">addInterEdgeFromFRToAR</a>(formalRet, actualRet,csId);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  edges.insert(edge);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</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"><a class="line" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660"> 401</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* node)</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  PAGNodeToDefMapTy::iterator it = PAGNodeToDefMap.find(pagNode);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">if</span>(it == PAGNodeToDefMap.end())</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  PAGNodeToDefMap[pagNode] = node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1VFG.html#a30eb9d717ad5bc8a9109a7bdef38f4a1">hasVFGNode</a>(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) && <span class="stringliteral">"not in the map!!"</span>);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">else</span></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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((it->second == node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) && <span class="stringliteral">"a SVFIR node can only have unique definition "</span>);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  }</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  }</div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650"> 414</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  PAGNodeToDefMapTy::const_iterator it = PAGNodeToDefMap.find(pagNode);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=PAGNodeToDefMap.end() && <span class="stringliteral">"SVFIR node does not have a definition??"</span>);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  }</div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4"> 420</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4">hasDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">return</span> (PAGNodeToDefMap.find(pagNode) != PAGNodeToDefMap.end());</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a3544cc0380964f238c964a0e7b417862">addVFGNodes</a>();</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> </div><div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682"> 430</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">PAGEdge::PAGEdgeSetTy</a>& <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">PAGEdge::PEDGEK</a> kind)</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a268ec1495cbe4adb51fa50d28a4cba3d">isPtrOnlySVFG</a>())</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">return</span> pag-><a class="code" href="classSVF_1_1SVFIR.html#a9c33009dc1aa3e16adfd34effd4471f6">getPTAEdgeSet</a>(kind);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">return</span> pag-><a class="code" href="classSVF_1_1SVFIR.html#ac2dff0e76e4ee879dc023255e7e6a63e">getEdgeSet</a>(kind);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  }</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div><div class="line"><a name="l00438"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a"> 438</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a268ec1495cbe4adb51fa50d28a4cba3d">isPtrOnlySVFG</a>())</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>();</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#adedaba0713164e10ce6273b2947535e0">connectDirectVFGEdges</a>();</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> </div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ab1f4c2765af027e903634d5262aea80b">addVFGInterEdges</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> </div><div class="line"><a name="l00452"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a8ddf15d89a1b11a7f7720b671f4f0295"> 452</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a8ddf15d89a1b11a7f7720b671f4f0295">isPhiCopyEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* copy)<span class="keyword"> const</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordflow">return</span> pag-><a class="code" href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff">isPhiNode</a>(copy-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>());</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383"> 458</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* vfgNode, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode)</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <a class="code" href="classSVF_1_1GenericGraph.html#a0a8831a5429005ff9d71adbd6bf3994f">addGNode</a>(vfgNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), vfgNode);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  vfgNode-><a class="code" href="classSVF_1_1VFGNode.html#a9c95dd4f0e70ccc4a03282cdddba95de">setICFGNode</a>(icfgNode);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  icfgNode-><a class="code" href="classSVF_1_1ICFGNode.html#aff18898b9bbd85d08b00d64d48eea6a5">addVFGNode</a>(vfgNode);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = icfgNode-><a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>())</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  funToVFGNodesMap[fun].insert(vfgNode);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  globalVFGNodes.insert(vfgNode);</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> </div><div class="line"><a name="l00471"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927"> 471</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">addStmtVFGNode</a>(<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* node, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* pagEdge)</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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(PAGEdgeToStmtVFGNodeMap.find(pagEdge)==PAGEdgeToStmtVFGNodeMap.end() && <span class="stringliteral">"should not insert twice!"</span>);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  PAGEdgeToStmtVFGNodeMap[pagEdge] = node;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(node, pagEdge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  }</div><div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a59bc855eb8591d88e0898e14d4f4b607"> 479</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a59bc855eb8591d88e0898e14d4f4b607">addNullPtrVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="classSVF_1_1NullPtrVFGNode.html">NullPtrVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1NullPtrVFGNode.html">NullPtrVFGNode</a>(totalVFGNode++,pagNode);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode, pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#ae3b8f1b45c75b5fc231da76d3a49ad57">getGlobalBlockNode</a>());</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(pagNode,sNode);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  }</div><div class="line"><a name="l00486"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a7b0d533f3ccce8fc64deae6077f3d959"> 486</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a7b0d533f3ccce8fc64deae6077f3d959">addAddrVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrPE.html">AddrPE</a>* addr)</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <a class="code" href="classSVF_1_1AddrVFGNode.html">AddrVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AddrVFGNode.html">AddrVFGNode</a>(totalVFGNode++,addr);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <a class="code" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">addStmtVFGNode</a>(sNode, addr);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(addr-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(),sNode);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  }</div><div class="line"><a name="l00493"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#afd664fad8aec173f4ed6c4aa588e5c46"> 493</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#afd664fad8aec173f4ed6c4aa588e5c46">addCopyVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyPE.html">CopyPE</a>* copy)</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>  <a class="code" href="classSVF_1_1CopyVFGNode.html">CopyVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CopyVFGNode.html">CopyVFGNode</a>(totalVFGNode++,copy);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <a class="code" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">addStmtVFGNode</a>(sNode, copy);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(copy-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(),sNode);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  }</div><div class="line"><a name="l00500"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a51b3b232ddda0656bfe0c7d9527b4a84"> 500</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a51b3b232ddda0656bfe0c7d9527b4a84">addGepVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepPE.html">GepPE</a>* gep)</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  {</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <a class="code" href="classSVF_1_1GepVFGNode.html">GepVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GepVFGNode.html">GepVFGNode</a>(totalVFGNode++,gep);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <a class="code" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">addStmtVFGNode</a>(sNode, gep);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(gep-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(),sNode);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  }</div><div class="line"><a name="l00507"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#adbd7966d18ab50da5a485ba6e043ba61"> 507</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#adbd7966d18ab50da5a485ba6e043ba61">addLoadVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadPE.html">LoadPE</a>* load)</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>  <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadVFGNode</a>(totalVFGNode++,load);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <a class="code" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">addStmtVFGNode</a>(sNode, load);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(load-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(),sNode);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  }</div><div class="line"><a name="l00515"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aa21ad616306c111b77fb3ec8f16b19be"> 515</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aa21ad616306c111b77fb3ec8f16b19be">addStoreVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StorePE.html">StorePE</a>* store)</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  {</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreVFGNode</a>(totalVFGNode++,store);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <a class="code" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">addStmtVFGNode</a>(sNode, store);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  }</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div><div class="line"><a name="l00524"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0fabca3c0f9bebe23f66a914dbb99e39"> 524</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a0fabca3c0f9bebe23f66a914dbb99e39">addActualParmVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* aparm, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>(totalVFGNode++,aparm,cs);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode, pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">getCallBlockNode</a>(cs-><a class="code" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">getCallSite</a>()));</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  PAGNodeToActualParmMap[std::make_pair(aparm-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),cs)] = sNode;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div><div class="line"><a name="l00532"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#afdb1560eecf692fb646d412dc760088d"> 532</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#afdb1560eecf692fb646d412dc760088d">addFormalParmVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fparm, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, CallPESet& callPEs)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>(totalVFGNode++,fparm,fun);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode, pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#ae1ef14cdda27a2062c4c454750444108">getFunEntryBlockNode</a>(fun));</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">for</span>(CallPESet::const_iterator it = callPEs.begin(), eit=callPEs.end();</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  it!=eit; ++it)</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  sNode-><a class="code" href="classSVF_1_1FormalParmVFGNode.html#af0dfc7f8b58d5bc0e47c6ad17216cc1e">addCallPE</a>(*it);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(fparm,sNode);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  PAGNodeToFormalParmMap[fparm] = sNode;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  }</div><div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aae3bddc73e39d96fcc97d56ea3dec373"> 546</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aae3bddc73e39d96fcc97d56ea3dec373">addFormalRetVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* uniqueFunRet, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, RetPESet& retPEs)</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>  <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a> *sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>(totalVFGNode++, uniqueFunRet, fun);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode, pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#aa33426d57dc150956902945a17a29bcb">getFunExitBlockNode</a>(fun));</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">for</span> (RetPESet::const_iterator it = retPEs.begin(), eit = retPEs.end(); it != eit; ++it)</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  sNode-><a class="code" href="classSVF_1_1FormalRetVFGNode.html#a051f7dc0da465d7ce0dc733d9a8fae6a">addRetPE</a>(*it);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> </div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  PAGNodeToFormalRetMap[uniqueFunRet] = sNode;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">if</span> (!pag-><a class="code" href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff">isPhiNode</a>(uniqueFunRet)){</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  std::string warn = fun-><a class="code" href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">getName</a>().str();</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVFUtil::writeWrnMsg</a>(warn + <span class="stringliteral">" does not have any ret instruction!"</span>);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(uniqueFunRet, sNode);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  }</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  }</div><div class="line"><a name="l00564"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a71022c8953e89e21b017936286f12251"> 564</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a71022c8953e89e21b017936286f12251">addActualRetVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* ret,<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</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>  <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>(totalVFGNode++,ret,cs);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode, pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a6d66c83cb1656d0f8ec8b8b65a9e9c41">getRetBlockNode</a>(cs-><a class="code" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">getCallSite</a>()));</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(ret,sNode);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  PAGNodeToActualRetMap[ret] = sNode;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  }</div><div class="line"><a name="l00572"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aba0389fbcac1efab08339b53d149bf84"> 572</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aba0389fbcac1efab08339b53d149bf84">addIntraPHIVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiPE.html">PhiPE</a>* edge)</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <a class="code" href="classSVF_1_1IntraPHIVFGNode.html">IntraPHIVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraPHIVFGNode.html">IntraPHIVFGNode</a>(totalVFGNode++,edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>());</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = 0;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> var : edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>())</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  sNode-><a class="code" href="classSVF_1_1IntraPHIVFGNode.html#a7e5fd83393224ece808de83cbf496882">setOpVerAndBB</a>(pos, var, edge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  pos++;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  }</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode,edge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>(),sNode);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  PAGNodeToIntraPHIVFGNodeMap[edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()] = sNode;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  }</div><div class="line"><a name="l00586"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab4166804d4612c1cf194d1d8710c09a6"> 586</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ab4166804d4612c1cf194d1d8710c09a6">addCmpVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpPE.html">CmpPE</a>* edge)</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>(totalVFGNode++, edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>());</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = 0;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> var : edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>())</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  {</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  sNode-><a class="code" href="classSVF_1_1CmpVFGNode.html#a41bcdd6b46a31c8d15533342478dc236">setOpVer</a>(pos, var);</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  pos++;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  }</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode,edge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>(),sNode);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  PAGNodeToCmpVFGNodeMap[edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()] = sNode;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  }</div><div class="line"><a name="l00600"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#afb440e02353766c2a2541005dd29fb24"> 600</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#afb440e02353766c2a2541005dd29fb24">addBinaryOPVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPPE.html">BinaryOPPE</a>* edge)</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>  <a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>(totalVFGNode++, edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>());</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = 0;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> var : edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>())</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  sNode-><a class="code" href="classSVF_1_1BinaryOPVFGNode.html#a76c67d31ffb67c4ef102471898ae2709">setOpVer</a>(pos, var);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  pos++;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode,edge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>(),sNode);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  PAGNodeToBinaryOPVFGNodeMap[edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()] = sNode;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  }</div><div class="line"><a name="l00614"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ae746db691e5c96dff1d590b109bffb7f"> 614</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ae746db691e5c96dff1d590b109bffb7f">addUnaryOPVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPPE.html">UnaryOPPE</a>* edge)</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>(totalVFGNode++, edge-><a class="code" href="classSVF_1_1UnaryOPPE.html#a80eb6a6681caf7407d7e16b36d7cb658">getRes</a>());</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  sNode-><a class="code" href="classSVF_1_1UnaryOPVFGNode.html#a3b082eef98b8393499908f6c430b8d6c">setOpVer</a>(0, edge-><a class="code" href="classSVF_1_1UnaryOPPE.html#a9e1afd73d1cd1f03e6e4e46cce5f1a64">getOpVar</a>());</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode,edge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(edge-><a class="code" href="classSVF_1_1UnaryOPPE.html#a80eb6a6681caf7407d7e16b36d7cb658">getRes</a>(),sNode);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  PAGNodeToUnaryOPVFGNodeMap[edge-><a class="code" href="classSVF_1_1UnaryOPPE.html#a80eb6a6681caf7407d7e16b36d7cb658">getRes</a>()] = sNode;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  }</div><div class="line"><a name="l00623"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a18afc4baf33eb700e0510928016019f5"> 623</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a18afc4baf33eb700e0510928016019f5">addBranchVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>* edge)</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <a class="code" href="classSVF_1_1BranchVFGNode.html">BranchVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BranchVFGNode.html">BranchVFGNode</a>(totalVFGNode++, edge);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode,edge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(edge-><a class="code" href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b">getBranchInst</a>(),sNode);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  PAGNodeToBranchVFGNodeMap[edge-><a class="code" href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b">getBranchInst</a>()] = sNode;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  }</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> };</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span> </div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> </div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="keyword">namespace </span><a class="code" href="namespacellvm.html">llvm</a></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> {</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="comment">/* !</span></div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="comment"> * GraphTraits specializations for generic graph algorithms.</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> <span class="comment"> * Provide graph traits for traversing from a constraint node using standard graph traversals.</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="comment"> */</span></div><div class="line"><a name="l00640"></a><span class="lineno"><a class="line" href="structllvm_1_1GraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.html"> 640</a></span> <span class="keyword">template</span><> <span class="keyword">struct </span>GraphTraits<<a class="code" href="namespaceSVF.html">SVF</a>::VFGNode*> : <span class="keyword">public</span> GraphTraits<SVF::GenericNode<SVF::VFGNode,SVF::VFGEdge>* ></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> </div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> <span class="keyword">template</span><></div><div class="line"><a name="l00646"></a><span class="lineno"><a class="line" href="structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.html"> 646</a></span> <span class="keyword">struct </span>GraphTraits<Inverse<SVF::VFGNode *> > : <span class="keyword">public</span> GraphTraits<Inverse<SVF::GenericNode<SVF::VFGNode,SVF::VFGEdge>* > ></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> {</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> };</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="structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4.html"> 650</a></span> <span class="keyword">template</span><> <span class="keyword">struct </span>GraphTraits<SVF::<a class="code" href="classSVF_1_1VFG.html#a8ba98bb3d888ec5ff40f511da14b37bc">VFG</a>*> : <span class="keyword">public</span> GraphTraits<SVF::GenericGraph<SVF::VFGNode,SVF::VFGEdge>* ></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span> {</div><div class="line"><a name="l00652"></a><span class="lineno"><a class="line" href="structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4.html#a0c6c42e5f1f75e34d71c39996f50e5b2"> 652</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGNode.html">SVF::VFGNode</a> *<a class="code" href="structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4.html#a0c6c42e5f1f75e34d71c39996f50e5b2">NodeRef</a>;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span> };</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> </div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> } <span class="comment">// End namespace llvm</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> </div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="preprocessor">#endif </span><span class="comment">/* INCLUDE_UTIL_VFG_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1VFG_html_a8b256a40e690f31b7a56308d55bad45a"><div class="ttname"><a href="classSVF_1_1VFG.html#a8b256a40e690f31b7a56308d55bad45a">SVF::VFG::PAGNodeToActualParmMap</a></div><div class="ttdeci">PAGNodeToActualParmMapTy PAGNodeToActualParmMap</div><div class="ttdoc">map a PAGNode to an actual parameter </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00090">VFG.h:90</a></div></div>
|
|
70
|
-
<div class="ttc" id="
|
|
69
|
+
<a href="VFG_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">//===- VFG.h ----------------------------------------------------------------//</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-2018> <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> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * VFG.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: 18 Sep. 2018</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifndef INCLUDE_UTIL_VFG_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define INCLUDE_UTIL_VFG_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</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="SVFIR_8h.html">MemoryModel/SVFIR.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="PTACallGraph_8h.html">Graphs/PTACallGraph.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="VFGNode_8h.html">Graphs/VFGNode.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "<a class="code" href="VFGEdge_8h.html">Graphs/VFGEdge.h</a>"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>PointerAnalysis;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">class </span>VFGStat;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ab4f1d8a6715e791c94970e6f87b18f8f"> 44</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericGraph.html">GenericGraph<VFGNode,VFGEdge></a> <a class="code" href="namespaceSVF.html#ab4f1d8a6715e791c94970e6f87b18f8f">GenericVFGTy</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html"> 50</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1VFG.html">VFG</a> : <span class="keyword">public</span> GenericVFGTy</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6"> 55</a></span>  <span class="keyword">enum</span> <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a8ed0b9aea88fbbbe91f33301bea0c9dd"> 57</a></span>  <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a5a28e6fd51e73e076091d4b6f4e61eaa">FULLSVFG</a>, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6ada8562b20e8d888a4b421c200957294d">PTRONLYSVFG</a>, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6aab1abd6be4a29fe8fb03a82f85e568a0">FULLSVFG_OPT</a>, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a8ed0b9aea88fbbbe91f33301bea0c9dd">PTRONLYSVFG_OPT</a></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> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab2abe2ba4ac9e3e1d326d042d35acbc0"> 60</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, VFGNode *></a> <a class="code" href="classSVF_1_1VFG.html#ab2abe2ba4ac9e3e1d326d042d35acbc0">VFGNodeIDToNodeMapTy</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a03d388eec513f713f5e0d06f920168db"> 61</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<VFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a03d388eec513f713f5e0d06f920168db">VFGNodeSet</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab9381c54f2339b3738348ae8b0d6659f"> 62</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, NodeID></a> <a class="code" href="classSVF_1_1VFG.html#ab9381c54f2339b3738348ae8b0d6659f">PAGNodeToDefMapTy</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#abec730a1ec61532cd164f3d42aa107b0"> 63</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<std::pair<NodeID,const CallBlockNode*></a>, <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a> *> <a class="code" href="classSVF_1_1VFG.html#abec730a1ec61532cd164f3d42aa107b0">PAGNodeToActualParmMapTy</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a999654aa377639db5c1e40f603e655a7"> 64</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, ActualRetVFGNode *></a> <a class="code" href="classSVF_1_1VFG.html#a999654aa377639db5c1e40f603e655a7">PAGNodeToActualRetMapTy</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6eb72d2fe080def018d09604fe3affcf"> 65</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, FormalParmVFGNode *></a> <a class="code" href="classSVF_1_1VFG.html#a6eb72d2fe080def018d09604fe3affcf">PAGNodeToFormalParmMapTy</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a52dac90d700a2377b657ec34d3ad2241"> 66</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, FormalRetVFGNode *></a> <a class="code" href="classSVF_1_1VFG.html#a52dac90d700a2377b657ec34d3ad2241">PAGNodeToFormalRetMapTy</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab37b067a59b52c472a284eabbeba43ff"> 67</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGEdge*, StmtVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#ab37b067a59b52c472a284eabbeba43ff">PAGEdgeToStmtVFGNodeMapTy</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aeed3eca629b10554f40b1d2b478580d4"> 68</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, IntraPHIVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#aeed3eca629b10554f40b1d2b478580d4">PAGNodeToPHIVFGNodeMapTy</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a7cefa553955e208d6eb4fcd01ed3c383"> 69</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, BinaryOPVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a7cefa553955e208d6eb4fcd01ed3c383">PAGNodeToBinaryOPVFGNodeMapTy</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#acfcd84ac6bedde4e7e74abdeb9233474"> 70</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, UnaryOPVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#acfcd84ac6bedde4e7e74abdeb9233474">PAGNodeToUnaryOPVFGNodeMapTy</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6ec1a8b02ece25aa165699e10fac7991"> 71</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, BranchVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a6ec1a8b02ece25aa165699e10fac7991">PAGNodeToBranchVFGNodeMapTy</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a9c2446f54d3738b6c0e65632a1200ba0"> 72</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, CmpVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a9c2446f54d3738b6c0e65632a1200ba0">PAGNodeToCmpVFGNodeMapTy</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ad63218978f65ab91ae21bc24c882a716"> 73</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFFunction*, VFGNodeSet ></a> <a class="code" href="classSVF_1_1VFG.html#ad63218978f65ab91ae21bc24c882a716">FunToVFGNodesMapTy</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ade3f735b3c7b1a53cab3d67cd9f7b874"> 75</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGNode.html#a43b6b3dc747d310f793ca1b3bfa9d05f">FormalParmVFGNode::CallPESet</a> <a class="code" href="classSVF_1_1VFG.html#ade3f735b3c7b1a53cab3d67cd9f7b874">CallPESet</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#abf966182c28f0521dcd161aa299e453d"> 76</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGNode.html#a367413b90de8a382190ffa9f0c742e01">FormalRetVFGNode::RetPESet</a> <a class="code" href="classSVF_1_1VFG.html#abf966182c28f0521dcd161aa299e453d">RetPESet</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0bdac7337a393ad2e21a33ec1978ca3f"> 77</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGEdge.html#a54e8b1d339da481222292e3b62d1e765">VFGEdge::VFGEdgeSetTy</a> <a class="code" href="classSVF_1_1VFG.html#a0bdac7337a393ad2e21a33ec1978ca3f">VFGEdgeSetTy</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694"> 78</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGEdge.html#a557334ef75bb5479b045f68c27b38701">VFGEdge::SVFGEdgeSetTy</a> <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a3037ca34a555ebdb4fbf0e86291dc4ea"> 79</a></span>  <span class="keyword">typedef</span> VFGEdge::VFGEdgeSetTy::iterator <a class="code" href="classSVF_1_1VFG.html#a3037ca34a555ebdb4fbf0e86291dc4ea">VFGNodeIter</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c"> 80</a></span>  <span class="keyword">typedef</span> VFGNodeIDToNodeMapTy::iterator <a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">iterator</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a225a91c04afac6a8fe198e9860890a52"> 81</a></span>  <span class="keyword">typedef</span> VFGNodeIDToNodeMapTy::const_iterator <a class="code" href="classSVF_1_1VFG.html#a225a91c04afac6a8fe198e9860890a52">const_iterator</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aa22b76d96c028055cb0cc14d7dd0ed2e"> 82</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1IRGraph.html#ae9547730a27575194977b240647e8ce2">SVFIR::PAGEdgeSet</a> <a class="code" href="classSVF_1_1VFG.html#aa22b76d96c028055cb0cc14d7dd0ed2e">PAGEdgeSet</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a113185086912213257b04daa4590bf13"> 83</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const VFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a113185086912213257b04daa4590bf13">GlobalVFGNodeSet</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab12de81e2912f06551ca7a6693f5046b"> 84</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const PAGNode*></a> <a class="code" href="classSVF_1_1VFG.html#ab12de81e2912f06551ca7a6693f5046b">PAGNodeSet</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8"> 88</a></span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac89b3917ed73ac70aac6205af8f7a4fe"> 89</a></span>  PAGNodeToDefMapTy <a class="code" href="classSVF_1_1VFG.html#ac89b3917ed73ac70aac6205af8f7a4fe">PAGNodeToDefMap</a>; </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a8b256a40e690f31b7a56308d55bad45a"> 90</a></span>  PAGNodeToActualParmMapTy <a class="code" href="classSVF_1_1VFG.html#a8b256a40e690f31b7a56308d55bad45a">PAGNodeToActualParmMap</a>; </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a28c5f7e331a437e09682b972769acf66"> 91</a></span>  PAGNodeToActualRetMapTy <a class="code" href="classSVF_1_1VFG.html#a28c5f7e331a437e09682b972769acf66">PAGNodeToActualRetMap</a>; </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ad014bc47ceba578c368da19e2d86b8f8"> 92</a></span>  PAGNodeToFormalParmMapTy <a class="code" href="classSVF_1_1VFG.html#ad014bc47ceba578c368da19e2d86b8f8">PAGNodeToFormalParmMap</a>; </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a190a59a119215dbb2556735ba3213a2a"> 93</a></span>  PAGNodeToFormalRetMapTy <a class="code" href="classSVF_1_1VFG.html#a190a59a119215dbb2556735ba3213a2a">PAGNodeToFormalRetMap</a>; </div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a598bc7a6863a6eccc3e089b63e9add17"> 94</a></span>  PAGNodeToPHIVFGNodeMapTy <a class="code" href="classSVF_1_1VFG.html#a598bc7a6863a6eccc3e089b63e9add17">PAGNodeToIntraPHIVFGNodeMap</a>; </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0f554fd778b338cbd7e4272eaefc96f6"> 95</a></span>  PAGNodeToBinaryOPVFGNodeMapTy <a class="code" href="classSVF_1_1VFG.html#a0f554fd778b338cbd7e4272eaefc96f6">PAGNodeToBinaryOPVFGNodeMap</a>; </div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac7083aa233d8e3820d6eb8e922f0c051"> 96</a></span>  PAGNodeToUnaryOPVFGNodeMapTy <a class="code" href="classSVF_1_1VFG.html#ac7083aa233d8e3820d6eb8e922f0c051">PAGNodeToUnaryOPVFGNodeMap</a>; </div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#af8c8d0eb778a2a94a33c0b97ee3704c1"> 97</a></span>  PAGNodeToBranchVFGNodeMapTy <a class="code" href="classSVF_1_1VFG.html#af8c8d0eb778a2a94a33c0b97ee3704c1">PAGNodeToBranchVFGNodeMap</a>; </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a9a16c7a7b0df273c1dcbe6ba3aef8fde"> 98</a></span>  PAGNodeToCmpVFGNodeMapTy <a class="code" href="classSVF_1_1VFG.html#a9a16c7a7b0df273c1dcbe6ba3aef8fde">PAGNodeToCmpVFGNodeMap</a>; </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a462fe6eefc55a436f90f91adeb34726f"> 99</a></span>  PAGEdgeToStmtVFGNodeMapTy <a class="code" href="classSVF_1_1VFG.html#a462fe6eefc55a436f90f91adeb34726f">PAGEdgeToStmtVFGNodeMap</a>; </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a9a99ae86d16ffe69bff9d52de769d049"> 100</a></span>  FunToVFGNodesMapTy <a class="code" href="classSVF_1_1VFG.html#a9a99ae86d16ffe69bff9d52de769d049">funToVFGNodesMap</a>; </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3"> 102</a></span>  GlobalVFGNodeSet <a class="code" href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3">globalVFGNodes</a>; </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0c8cf98b652b5eb97d22e2636576f92f"> 103</a></span>  <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1VFG.html#a0c8cf98b652b5eb97d22e2636576f92f">callgraph</a>;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a"> 104</a></span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f"> 105</a></span>  <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a> <a class="code" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f">kind</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#af5005136743913d760d7402bbd308c69">destroy</a>();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="classSVF_1_1VFG.html#a8ba98bb3d888ec5ff40f511da14b37bc">VFG</a>(<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* callgraph, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a> k = <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a5a28e6fd51e73e076091d4b6f4e61eaa">FULLSVFG</a>);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a66f439ffebda7a81925514b77199154b"> 115</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1VFG.html#a66f439ffebda7a81925514b77199154b">~VFG</a>()</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classSVF_1_1VFG.html#af5005136743913d760d7402bbd308c69">destroy</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"> 119</span> </div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ad63c3c11162ba107a6338fb24f9018d7"> 121</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a> <a class="code" href="classSVF_1_1VFG.html#ad63c3c11162ba107a6338fb24f9018d7">getKind</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f">kind</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a268ec1495cbe4adb51fa50d28a4cba3d"> 127</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a268ec1495cbe4adb51fa50d28a4cba3d">isPtrOnlySVFG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> (kind == <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6ada8562b20e8d888a4b421c200957294d">PTRONLYSVFG</a>) || (kind == <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a8ed0b9aea88fbbbe91f33301bea0c9dd">PTRONLYSVFG_OPT</a>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a7622e381fbc1601b3f9a8384df2751bd"> 133</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1VFG.html#a7622e381fbc1601b3f9a8384df2751bd">getPAG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a1693ccdb6c1b57418316c29cde05cad2"> 139</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1VFG.html#a1693ccdb6c1b57418316c29cde05cad2">getCallGraph</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a0c8cf98b652b5eb97d22e2636576f92f">callgraph</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc"> 145</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</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> </div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a30eb9d717ad5bc8a9109a7bdef38f4a1"> 151</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a30eb9d717ad5bc8a9109a7bdef38f4a1">hasVFGNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericGraph.html#a6885064afa211958af7b73f0233284e5">hasGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aff291586a4b0c28a6939577d39de5d0a"> 156</a></span>  <span class="keyword">inline</span> GlobalVFGNodeSet& <a class="code" href="classSVF_1_1VFG.html#aff291586a4b0c28a6939577d39de5d0a">getGlobalVFGNodes</a>()</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3">globalVFGNodes</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">getIntraVFGEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> kind);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aee3d0c4ed32bde425f33281f248b7dd2">dump</a>(<span class="keyword">const</span> std::string& file, <span class="keywordtype">bool</span> simple = <span class="keyword">false</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>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ae4350f68e960bfef87f44587628b1929">view</a>();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a0c0a7c8f0bd27bc9e88ce54c0809b11b">updateCallGraph</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aa1e09df7b3724bf18e450b16735998ab">connectCallerAndCallee</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, VFGEdgeSetTy& edges);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728"> 178</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)<span class="keyword"> const</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">return</span> callgraph-><a class="code" href="classSVF_1_1PTACallGraph.html#afb2daec804e81f0beb72fbc805d1c82a">getCallSiteID</a>(cs, func);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#af04068b6f6beff961f815cc6eae7f5b0"> 182</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* <a class="code" href="classSVF_1_1VFG.html#af04068b6f6beff961f815cc6eae7f5b0">getCallSite</a>(<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> callgraph-><a class="code" href="classSVF_1_1PTACallGraph.html#a2c8b1674f1f942a3b5aa77b7abccb229">getCallSite</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ad28caacede7ab7f3a6676e37655ee84e"> 189</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#ad28caacede7ab7f3a6676e37655ee84e">getDefVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(pagNode));</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">// Given an VFG node, return its left hand side top level pointer (PAGnode)</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a1fff5a365e5aa2d99f07f7f64cc35fac">getLHSTopLevPtr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* node) <span class="keyword">const</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a32b1586d326fbe47080bd1fa2d3270e6"> 199</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a32b1586d326fbe47080bd1fa2d3270e6">getStmtVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* pagEdge)<span class="keyword"> const</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  PAGEdgeToStmtVFGNodeMapTy::const_iterator it = PAGEdgeToStmtVFGNodeMap.find(pagEdge);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != PAGEdgeToStmtVFGNodeMap.end() && <span class="stringliteral">"StmtVFGNode can not be found??"</span>);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a688c0cc4a67c7cd9afbef2f0c264c85b"> 205</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1IntraPHIVFGNode.html">IntraPHIVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a688c0cc4a67c7cd9afbef2f0c264c85b">getIntraPHIVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  PAGNodeToPHIVFGNodeMapTy::const_iterator it = PAGNodeToIntraPHIVFGNodeMap.find(pagNode);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != PAGNodeToIntraPHIVFGNodeMap.end() && <span class="stringliteral">"PHIVFGNode can not be found??"</span>);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a27bd4d5ba75d65056d77882869b0c64d"> 211</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a27bd4d5ba75d65056d77882869b0c64d">getBinaryOPVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  PAGNodeToBinaryOPVFGNodeMapTy::const_iterator it = PAGNodeToBinaryOPVFGNodeMap.find(pagNode);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != PAGNodeToBinaryOPVFGNodeMap.end() && <span class="stringliteral">"BinaryOPVFGNode can not be found??"</span>);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">return</span> it->second;</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_1VFG.html#a1ba67eb17437a1a47c230614c1e3d9fd"> 217</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a1ba67eb17437a1a47c230614c1e3d9fd">getUnaryOPVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  PAGNodeToUnaryOPVFGNodeMapTy::const_iterator it = PAGNodeToUnaryOPVFGNodeMap.find(pagNode);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != PAGNodeToUnaryOPVFGNodeMap.end() && <span class="stringliteral">"UnaryOPVFGNode can not be found??"</span>);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a47609382fcd9ef36706e1d0f0531a843"> 223</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1BranchVFGNode.html">BranchVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a47609382fcd9ef36706e1d0f0531a843">getBranchVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  PAGNodeToBranchVFGNodeMapTy::const_iterator it = PAGNodeToBranchVFGNodeMap.find(pagNode);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != PAGNodeToBranchVFGNodeMap.end() && <span class="stringliteral">"BranchVFGNode can not be found??"</span>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a9215c1d7f1152967f0731057a085e793"> 229</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a9215c1d7f1152967f0731057a085e793">getCmpVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  PAGNodeToCmpVFGNodeMapTy::const_iterator it = PAGNodeToCmpVFGNodeMap.find(pagNode);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != PAGNodeToCmpVFGNodeMap.end() && <span class="stringliteral">"CmpVFGNode can not be found??"</span>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a01b8694a5ab7acf8df0213225550791b"> 235</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a01b8694a5ab7acf8df0213225550791b">getActualParmVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* aparm,<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  PAGNodeToActualParmMapTy::const_iterator it = PAGNodeToActualParmMap.find(std::make_pair(aparm-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),cs));</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=PAGNodeToActualParmMap.end() && <span class="stringliteral">"actual parameter VFG node can not be found??"</span>);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0b072e8e45899b89da0a466140563c38"> 241</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a0b072e8e45899b89da0a466140563c38">getActualRetVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* aret)<span class="keyword"> const</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  PAGNodeToActualRetMapTy::const_iterator it = PAGNodeToActualRetMap.find(aret);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=PAGNodeToActualRetMap.end() && <span class="stringliteral">"actual return VFG node can not be found??"</span>);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">return</span> it->second;</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_1VFG.html#a75eb519e4f89a116db98fccb263af4d6"> 247</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a75eb519e4f89a116db98fccb263af4d6">getFormalParmVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fparm)<span class="keyword"> const</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  PAGNodeToFormalParmMapTy::const_iterator it = PAGNodeToFormalParmMap.find(fparm);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=PAGNodeToFormalParmMap.end() && <span class="stringliteral">"formal parameter VFG node can not be found??"</span>);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> it->second;</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_1VFG.html#ab7ba9d179504165f277d347a7cb9f5d8"> 253</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#ab7ba9d179504165f277d347a7cb9f5d8">getFormalRetVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fret)<span class="keyword"> const</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  PAGNodeToFormalRetMapTy::const_iterator it = PAGNodeToFormalRetMap.find(fret);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=PAGNodeToFormalRetMap.end() && <span class="stringliteral">"formal return VFG node can not be found??"</span>);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1VFG.html#a8994194bca2edfd9528880390de795ab">isFunEntryVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* node) <span class="keyword">const</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a88f6468b9b43bbb06ef757d884580a50"> 265</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a88f6468b9b43bbb06ef757d884580a50">hasBlackHoleConstObjAddrAsDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4">hasDef</a>(pagNode))</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* defNode = <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(pagNode));</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrVFGNode.html">AddrVFGNode</a>* addr = SVFUtil::dyn_cast<AddrVFGNode>(defNode))</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()->isBlkObjOrConstantObj(addr->getPAGEdge()->getSrcID()))</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyVFGNode.html">CopyVFGNode</a>* copy = SVFUtil::dyn_cast<CopyVFGNode>(defNode))</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-><a class="code" href="classSVF_1_1SVFIR.html#a18ca66c199b910b15f1bfa77dcc98c30">isNullPtr</a>(copy->getPAGEdge()->getSrcID()))</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"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a18ec674e8ab0285ec086df87e5c591c9"> 286</a></span>  <span class="keyword">inline</span> VFGNodeSet& <a class="code" href="classSVF_1_1VFG.html#a18ec674e8ab0285ec086df87e5c591c9">getVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun) {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">return</span> funToVFGNodesMap[fun];</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a76af43e28630eb56a1aa5971f516d43d"> 289</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a76af43e28630eb56a1aa5971f516d43d">hasVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun)<span class="keyword"> const </span>{</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">return</span> funToVFGNodesMap.find(fun) != funToVFGNodesMap.end();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a43f4002b0beb00ed2026f7edd9ebbb1c"> 292</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a43f4002b0beb00ed2026f7edd9ebbb1c">VFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun)<span class="keyword"> const </span>{</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">return</span> funToVFGNodesMap.find(fun) != funToVFGNodesMap.end();</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a5166be2c1231a93c9b9ce5f272797b94"> 295</a></span>  <span class="keyword">inline</span> VFGNodeSet::const_iterator <a class="code" href="classSVF_1_1VFG.html#a5166be2c1231a93c9b9ce5f272797b94">getVFGNodeBegin</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun)<span class="keyword"> const </span>{</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  FunToVFGNodesMapTy::const_iterator it = funToVFGNodesMap.find(fun);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != funToVFGNodesMap.end() && <span class="stringliteral">"this function does not have any VFGNode"</span>);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">return</span> it->second.begin();</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a28f2bdcbbc0bab00e93df62ea11647a2"> 300</a></span>  <span class="keyword">inline</span> VFGNodeSet::const_iterator <a class="code" href="classSVF_1_1VFG.html#a28f2bdcbbc0bab00e93df62ea11647a2">getVFGNodeEnd</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun)<span class="keyword"> const </span>{</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  FunToVFGNodesMapTy::const_iterator it = funToVFGNodesMap.find(fun);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != funToVFGNodesMap.end() && <span class="stringliteral">"this function does not have any VFGNode"</span>);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">return</span> it->second.end();</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#aa01f63b17acdd52122a7f1ade329ccea">addCallEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2">addRetEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aeb24b155fe31813b2e6dc0564f55738a"> 314</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aeb24b155fe31813b2e6dc0564f55738a">removeVFGEdge</a>(<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->removeIncomingEdge(edge);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->removeOutgoingEdge(edge);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keyword">delete</span> edge;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  }</div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a122aa5ad874170ef644cee8705f1ef3e"> 321</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a122aa5ad874170ef644cee8705f1ef3e">removeVFGNode</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* node)</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <a class="code" href="classSVF_1_1GenericGraph.html#a1817b65e76052f11e36a67d6b9efd915">removeGNode</a>(node);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </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>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#ac34c4529229404617c346f81cc6c141f">hasIntraVFGEdge</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> kind);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> kind, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#aead3b463d9aa2fae5845d97896bd18ba">hasThreadVFGEdge</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> kind);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a84cf5facb15e1d598c2527fba0c7634d"> 334</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a84cf5facb15e1d598c2527fba0c7634d">addVFGEdge</a>(<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge)</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordtype">bool</span> added1 = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->addIncomingEdge(edge);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordtype">bool</span> added2 = edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->addOutgoingEdge(edge);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(added1 && added2 && <span class="stringliteral">"edge not added??"</span>);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a43b0c126c2e32cb3d286a78b14e09a96"> 345</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a43b0c126c2e32cb3d286a78b14e09a96">checkIntraEdgeParents</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a> *srcNode, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a> *dstNode)</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *srcfun = srcNode-><a class="code" href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">getFun</a>();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *dstfun = dstNode-><a class="code" href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">getFun</a>();</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">if</span>(srcfun != <span class="keyword">nullptr</span> && dstfun != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((srcfun == dstfun) && <span class="stringliteral">"src and dst nodes of an intra VFG edge are not in the same function?"</span>);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6fd24c001a6daedf591974ba27140461"> 356</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a6fd24c001a6daedf591974ba27140461">addInterEdgeFromAPToFP</a>(<a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* src, <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* dst, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId)</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#aa01f63b17acdd52122a7f1ade329ccea">addCallEdge</a>(src-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dst-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),csId);</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_1VFG.html#abd05b599b383c759455aff99963b7b41"> 361</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#abd05b599b383c759455aff99963b7b41">addInterEdgeFromFRToAR</a>(<a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>* src, <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* dst, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId)</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2">addRetEdge</a>(src-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dst-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),csId);</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="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a185ed4079babc0e0f72c4bf223342ee2"> 367</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a185ed4079babc0e0f72c4bf223342ee2">addInterEdgeFromAPToFP</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId)</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>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#aa01f63b17acdd52122a7f1ade329ccea">addCallEdge</a>(src,dst,csId);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  }</div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a4ac1cd5f79c9e33ae599f7eb942a6e01"> 372</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a4ac1cd5f79c9e33ae599f7eb942a6e01">addInterEdgeFromFRToAR</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId)</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2">addRetEdge</a>(src,dst,csId);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#acbc1f5ae3b9016b1ce97314a2b8b54c0">connectAParamAndFParam</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* csArg, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* funArg, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cbn, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, VFGEdgeSetTy& edges)</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> actualParam = <a class="code" href="classSVF_1_1VFG.html#a01b8694a5ab7acf8df0213225550791b">getActualParmVFGNode</a>(csArg, cbn)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> formalParam = <a class="code" href="classSVF_1_1VFG.html#a75eb519e4f89a116db98fccb263af4d6">getFormalParmVFGNode</a>(funArg)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#a6fd24c001a6daedf591974ba27140461">addInterEdgeFromAPToFP</a>(actualParam, formalParam,csId);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  edges.insert(edge);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }</div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab4e8ab307ad6beb46812a60ebd31ae3b"> 389</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ab4e8ab307ad6beb46812a60ebd31ae3b">connectFRetAndARet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* funReturn, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* csReturn, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, VFGEdgeSetTy& edges)</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> formalRet = <a class="code" href="classSVF_1_1VFG.html#ab7ba9d179504165f277d347a7cb9f5d8">getFormalRetVFGNode</a>(funReturn)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> actualRet = <a class="code" href="classSVF_1_1VFG.html#a0b072e8e45899b89da0a466140563c38">getActualRetVFGNode</a>(csReturn)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#abd05b599b383c759455aff99963b7b41">addInterEdgeFromFRToAR</a>(formalRet, actualRet,csId);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  edges.insert(edge);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</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"><a class="line" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660"> 401</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* node)</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  PAGNodeToDefMapTy::iterator it = PAGNodeToDefMap.find(pagNode);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">if</span>(it == PAGNodeToDefMap.end())</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  PAGNodeToDefMap[pagNode] = node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1VFG.html#a30eb9d717ad5bc8a9109a7bdef38f4a1">hasVFGNode</a>(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) && <span class="stringliteral">"not in the map!!"</span>);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">else</span></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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((it->second == node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) && <span class="stringliteral">"a SVFIR node can only have unique definition "</span>);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  }</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  }</div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650"> 414</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  PAGNodeToDefMapTy::const_iterator it = PAGNodeToDefMap.find(pagNode);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=PAGNodeToDefMap.end() && <span class="stringliteral">"SVFIR node does not have a definition??"</span>);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  }</div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4"> 420</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4">hasDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">return</span> (PAGNodeToDefMap.find(pagNode) != PAGNodeToDefMap.end());</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a3544cc0380964f238c964a0e7b417862">addVFGNodes</a>();</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> </div><div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682"> 430</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">PAGEdge::PAGEdgeSetTy</a>& <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">PAGEdge::PEDGEK</a> kind)</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a268ec1495cbe4adb51fa50d28a4cba3d">isPtrOnlySVFG</a>())</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">return</span> pag-><a class="code" href="classSVF_1_1SVFIR.html#a9c33009dc1aa3e16adfd34effd4471f6">getPTAEdgeSet</a>(kind);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">return</span> pag-><a class="code" href="classSVF_1_1SVFIR.html#ac2dff0e76e4ee879dc023255e7e6a63e">getEdgeSet</a>(kind);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  }</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div><div class="line"><a name="l00438"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a"> 438</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a268ec1495cbe4adb51fa50d28a4cba3d">isPtrOnlySVFG</a>())</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>();</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#adedaba0713164e10ce6273b2947535e0">connectDirectVFGEdges</a>();</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> </div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ab1f4c2765af027e903634d5262aea80b">addVFGInterEdges</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> </div><div class="line"><a name="l00452"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a8ddf15d89a1b11a7f7720b671f4f0295"> 452</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a8ddf15d89a1b11a7f7720b671f4f0295">isPhiCopyEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* copy)<span class="keyword"> const</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordflow">return</span> pag-><a class="code" href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff">isPhiNode</a>(copy-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>());</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383"> 458</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* vfgNode, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode)</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <a class="code" href="classSVF_1_1GenericGraph.html#a0a8831a5429005ff9d71adbd6bf3994f">addGNode</a>(vfgNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), vfgNode);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  vfgNode-><a class="code" href="classSVF_1_1VFGNode.html#a9c95dd4f0e70ccc4a03282cdddba95de">setICFGNode</a>(icfgNode);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  icfgNode-><a class="code" href="classSVF_1_1ICFGNode.html#aff18898b9bbd85d08b00d64d48eea6a5">addVFGNode</a>(vfgNode);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = icfgNode-><a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>())</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  funToVFGNodesMap[fun].insert(vfgNode);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  globalVFGNodes.insert(vfgNode);</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> </div><div class="line"><a name="l00471"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927"> 471</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">addStmtVFGNode</a>(<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* node, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* pagEdge)</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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(PAGEdgeToStmtVFGNodeMap.find(pagEdge)==PAGEdgeToStmtVFGNodeMap.end() && <span class="stringliteral">"should not insert twice!"</span>);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  PAGEdgeToStmtVFGNodeMap[pagEdge] = node;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(node, pagEdge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  }</div><div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a59bc855eb8591d88e0898e14d4f4b607"> 479</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a59bc855eb8591d88e0898e14d4f4b607">addNullPtrVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="classSVF_1_1NullPtrVFGNode.html">NullPtrVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1NullPtrVFGNode.html">NullPtrVFGNode</a>(totalVFGNode++,pagNode);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode, pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#ae3b8f1b45c75b5fc231da76d3a49ad57">getGlobalBlockNode</a>());</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(pagNode,sNode);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  }</div><div class="line"><a name="l00486"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aca2b1493bd712bdc6618de995a81e5af"> 486</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aca2b1493bd712bdc6618de995a81e5af">addAddrVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a>* addr)</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <a class="code" href="classSVF_1_1AddrVFGNode.html">AddrVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AddrVFGNode.html">AddrVFGNode</a>(totalVFGNode++,addr);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <a class="code" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">addStmtVFGNode</a>(sNode, addr);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(addr-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(),sNode);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  }</div><div class="line"><a name="l00493"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a49d35213a281859ca64398760c485a85"> 493</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a49d35213a281859ca64398760c485a85">addCopyVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>* copy)</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>  <a class="code" href="classSVF_1_1CopyVFGNode.html">CopyVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CopyVFGNode.html">CopyVFGNode</a>(totalVFGNode++,copy);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <a class="code" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">addStmtVFGNode</a>(sNode, copy);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(copy-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(),sNode);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  }</div><div class="line"><a name="l00500"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a4fb321fb0ff2a06c1065506552b862aa"> 500</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a4fb321fb0ff2a06c1065506552b862aa">addGepVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gep)</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  {</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <a class="code" href="classSVF_1_1GepVFGNode.html">GepVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GepVFGNode.html">GepVFGNode</a>(totalVFGNode++,gep);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <a class="code" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">addStmtVFGNode</a>(sNode, gep);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(gep-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(),sNode);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  }</div><div class="line"><a name="l00507"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a373e7066630719ffb7c62681f2c2a74e"> 507</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a373e7066630719ffb7c62681f2c2a74e">addLoadVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load)</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>  <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadVFGNode</a>(totalVFGNode++,load);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <a class="code" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">addStmtVFGNode</a>(sNode, load);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(load-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(),sNode);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  }</div><div class="line"><a name="l00515"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a13f7caf44741db3b0e8a44b13d8931f5"> 515</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a13f7caf44741db3b0e8a44b13d8931f5">addStoreVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store)</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  {</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreVFGNode</a>(totalVFGNode++,store);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <a class="code" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">addStmtVFGNode</a>(sNode, store);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  }</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div><div class="line"><a name="l00524"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0fabca3c0f9bebe23f66a914dbb99e39"> 524</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a0fabca3c0f9bebe23f66a914dbb99e39">addActualParmVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* aparm, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>(totalVFGNode++,aparm,cs);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode, pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">getCallBlockNode</a>(cs-><a class="code" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">getCallSite</a>()));</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  PAGNodeToActualParmMap[std::make_pair(aparm-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),cs)] = sNode;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div><div class="line"><a name="l00532"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#afdb1560eecf692fb646d412dc760088d"> 532</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#afdb1560eecf692fb646d412dc760088d">addFormalParmVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fparm, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, CallPESet& callPEs)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>(totalVFGNode++,fparm,fun);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode, pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#ae1ef14cdda27a2062c4c454750444108">getFunEntryBlockNode</a>(fun));</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">for</span>(CallPESet::const_iterator it = callPEs.begin(), eit=callPEs.end();</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  it!=eit; ++it)</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  sNode-><a class="code" href="classSVF_1_1FormalParmVFGNode.html#af0dfc7f8b58d5bc0e47c6ad17216cc1e">addCallPE</a>(*it);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(fparm,sNode);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  PAGNodeToFormalParmMap[fparm] = sNode;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  }</div><div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aae3bddc73e39d96fcc97d56ea3dec373"> 546</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aae3bddc73e39d96fcc97d56ea3dec373">addFormalRetVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* uniqueFunRet, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, RetPESet& retPEs)</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>  <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a> *sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>(totalVFGNode++, uniqueFunRet, fun);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode, pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#aa33426d57dc150956902945a17a29bcb">getFunExitBlockNode</a>(fun));</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">for</span> (RetPESet::const_iterator it = retPEs.begin(), eit = retPEs.end(); it != eit; ++it)</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  sNode-><a class="code" href="classSVF_1_1FormalRetVFGNode.html#a051f7dc0da465d7ce0dc733d9a8fae6a">addRetPE</a>(*it);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> </div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  PAGNodeToFormalRetMap[uniqueFunRet] = sNode;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">if</span> (!pag-><a class="code" href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff">isPhiNode</a>(uniqueFunRet)){</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  std::string warn = fun-><a class="code" href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">getName</a>().str();</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVFUtil::writeWrnMsg</a>(warn + <span class="stringliteral">" does not have any ret instruction!"</span>);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(uniqueFunRet, sNode);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  }</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  }</div><div class="line"><a name="l00564"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a71022c8953e89e21b017936286f12251"> 564</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a71022c8953e89e21b017936286f12251">addActualRetVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* ret,<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</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>  <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>(totalVFGNode++,ret,cs);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode, pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a6d66c83cb1656d0f8ec8b8b65a9e9c41">getRetBlockNode</a>(cs-><a class="code" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">getCallSite</a>()));</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(ret,sNode);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  PAGNodeToActualRetMap[ret] = sNode;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  }</div><div class="line"><a name="l00572"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6a1435f8ac7f74cc81608839fa3da3df"> 572</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a6a1435f8ac7f74cc81608839fa3da3df">addIntraPHIVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>* edge)</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <a class="code" href="classSVF_1_1IntraPHIVFGNode.html">IntraPHIVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraPHIVFGNode.html">IntraPHIVFGNode</a>(totalVFGNode++,edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>());</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = 0;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> var : edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>())</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  sNode-><a class="code" href="classSVF_1_1IntraPHIVFGNode.html#a7e5fd83393224ece808de83cbf496882">setOpVerAndBB</a>(pos, var, edge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  pos++;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  }</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode,edge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>(),sNode);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  PAGNodeToIntraPHIVFGNodeMap[edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()] = sNode;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  }</div><div class="line"><a name="l00586"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6c2280052b44ff7029cf4b98712c374b"> 586</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a6c2280052b44ff7029cf4b98712c374b">addCmpVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>* edge)</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>(totalVFGNode++, edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>());</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = 0;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> var : edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>())</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  {</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  sNode-><a class="code" href="classSVF_1_1CmpVFGNode.html#a41bcdd6b46a31c8d15533342478dc236">setOpVer</a>(pos, var);</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  pos++;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  }</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode,edge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>(),sNode);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  PAGNodeToCmpVFGNodeMap[edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()] = sNode;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  }</div><div class="line"><a name="l00600"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac79516fc4d9136241d708f9df5c73262"> 600</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ac79516fc4d9136241d708f9df5c73262">addBinaryOPVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>* edge)</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>  <a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>(totalVFGNode++, edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>());</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = 0;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> var : edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>())</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  sNode-><a class="code" href="classSVF_1_1BinaryOPVFGNode.html#a76c67d31ffb67c4ef102471898ae2709">setOpVer</a>(pos, var);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  pos++;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode,edge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>(),sNode);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  PAGNodeToBinaryOPVFGNodeMap[edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()] = sNode;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  }</div><div class="line"><a name="l00614"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a65c88a6c20380b715ac8b6c31e68afed"> 614</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a65c88a6c20380b715ac8b6c31e68afed">addUnaryOPVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>* edge)</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>(totalVFGNode++, edge-><a class="code" href="classSVF_1_1UnaryOPStmt.html#a919db9b8c9287c3802f563840b56c4f1">getRes</a>());</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  sNode-><a class="code" href="classSVF_1_1UnaryOPVFGNode.html#a3b082eef98b8393499908f6c430b8d6c">setOpVer</a>(0, edge-><a class="code" href="classSVF_1_1UnaryOPStmt.html#abde2b32d5bbd37df0e194b1a4e78483b">getOpVar</a>());</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode,edge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(edge-><a class="code" href="classSVF_1_1UnaryOPStmt.html#a919db9b8c9287c3802f563840b56c4f1">getRes</a>(),sNode);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  PAGNodeToUnaryOPVFGNodeMap[edge-><a class="code" href="classSVF_1_1UnaryOPStmt.html#a919db9b8c9287c3802f563840b56c4f1">getRes</a>()] = sNode;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  }</div><div class="line"><a name="l00623"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a18afc4baf33eb700e0510928016019f5"> 623</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a18afc4baf33eb700e0510928016019f5">addBranchVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>* edge)</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <a class="code" href="classSVF_1_1BranchVFGNode.html">BranchVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BranchVFGNode.html">BranchVFGNode</a>(totalVFGNode++, edge);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode,edge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(edge-><a class="code" href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b">getBranchInst</a>(),sNode);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  PAGNodeToBranchVFGNodeMap[edge-><a class="code" href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b">getBranchInst</a>()] = sNode;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  }</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> };</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span> </div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> </div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="keyword">namespace </span><a class="code" href="namespacellvm.html">llvm</a></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> {</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="comment">/* !</span></div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="comment"> * GraphTraits specializations for generic graph algorithms.</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> <span class="comment"> * Provide graph traits for traversing from a constraint node using standard graph traversals.</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="comment"> */</span></div><div class="line"><a name="l00640"></a><span class="lineno"><a class="line" href="structllvm_1_1GraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.html"> 640</a></span> <span class="keyword">template</span><> <span class="keyword">struct </span>GraphTraits<<a class="code" href="namespaceSVF.html">SVF</a>::VFGNode*> : <span class="keyword">public</span> GraphTraits<SVF::GenericNode<SVF::VFGNode,SVF::VFGEdge>* ></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> </div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> <span class="keyword">template</span><></div><div class="line"><a name="l00646"></a><span class="lineno"><a class="line" href="structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.html"> 646</a></span> <span class="keyword">struct </span>GraphTraits<Inverse<SVF::VFGNode *> > : <span class="keyword">public</span> GraphTraits<Inverse<SVF::GenericNode<SVF::VFGNode,SVF::VFGEdge>* > ></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> {</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> };</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="structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4.html"> 650</a></span> <span class="keyword">template</span><> <span class="keyword">struct </span>GraphTraits<SVF::<a class="code" href="classSVF_1_1VFG.html#a8ba98bb3d888ec5ff40f511da14b37bc">VFG</a>*> : <span class="keyword">public</span> GraphTraits<SVF::GenericGraph<SVF::VFGNode,SVF::VFGEdge>* ></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span> {</div><div class="line"><a name="l00652"></a><span class="lineno"><a class="line" href="structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4.html#a0c6c42e5f1f75e34d71c39996f50e5b2"> 652</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGNode.html">SVF::VFGNode</a> *<a class="code" href="structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4.html#a0c6c42e5f1f75e34d71c39996f50e5b2">NodeRef</a>;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span> };</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> </div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> } <span class="comment">// End namespace llvm</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> </div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="preprocessor">#endif </span><span class="comment">/* INCLUDE_UTIL_VFG_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1VFG_html_a8b256a40e690f31b7a56308d55bad45a"><div class="ttname"><a href="classSVF_1_1VFG.html#a8b256a40e690f31b7a56308d55bad45a">SVF::VFG::PAGNodeToActualParmMap</a></div><div class="ttdeci">PAGNodeToActualParmMapTy PAGNodeToActualParmMap</div><div class="ttdoc">map a PAGNode to an actual parameter </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00090">VFG.h:90</a></div></div>
|
|
70
|
+
<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#l00196">SVFStatements.h:196</a></div></div>
|
|
71
71
|
<div class="ttc" id="classSVF_1_1VFG_html_a84cf5facb15e1d598c2527fba0c7634d"><div class="ttname"><a href="classSVF_1_1VFG.html#a84cf5facb15e1d598c2527fba0c7634d">SVF::VFG::addVFGEdge</a></div><div class="ttdeci">bool addVFGEdge(VFGEdge *edge)</div><div class="ttdoc">Add VFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00334">VFG.h:334</a></div></div>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1VFG_html_ab37b067a59b52c472a284eabbeba43ff"><div class="ttname"><a href="classSVF_1_1VFG.html#ab37b067a59b52c472a284eabbeba43ff">SVF::VFG::PAGEdgeToStmtVFGNodeMapTy</a></div><div class="ttdeci">Map< const PAGEdge *, StmtVFGNode * > PAGEdgeToStmtVFGNodeMapTy</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00067">VFG.h:67</a></div></div>
|
|
73
73
|
<div class="ttc" id="classSVF_1_1VFG_html_aeb24b155fe31813b2e6dc0564f55738a"><div class="ttname"><a href="classSVF_1_1VFG.html#aeb24b155fe31813b2e6dc0564f55738a">SVF::VFG::removeVFGEdge</a></div><div class="ttdeci">void removeVFGEdge(VFGEdge *edge)</div><div class="ttdoc">Remove a SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00314">VFG.h:314</a></div></div>
|
|
@@ -98,7 +98,6 @@ $(function() {
|
|
|
98
98
|
<div class="ttc" id="PTACallGraph_8h_html"><div class="ttname"><a href="PTACallGraph_8h.html">PTACallGraph.h</a></div></div>
|
|
99
99
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_aa809a57c8cdaaa35dfc3cc0f3b33b52b"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">SVF::SVFStmt::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00132">SVFStatements.h:132</a></div></div>
|
|
100
100
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVF::SVFStmt::PEDGEK</a></div><div class="ttdeci">PEDGEK</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00054">SVFStatements.h:54</a></div></div>
|
|
101
|
-
<div class="ttc" id="classSVF_1_1VFG_html_aba0389fbcac1efab08339b53d149bf84"><div class="ttname"><a href="classSVF_1_1VFG.html#aba0389fbcac1efab08339b53d149bf84">SVF::VFG::addIntraPHIVFGNode</a></div><div class="ttdeci">void addIntraPHIVFGNode(const PhiPE *edge)</div><div class="ttdoc">Add an llvm PHI VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00572">VFG.h:572</a></div></div>
|
|
102
101
|
<div class="ttc" id="classSVF_1_1VFG_html_a8ddf15d89a1b11a7f7720b671f4f0295"><div class="ttname"><a href="classSVF_1_1VFG.html#a8ddf15d89a1b11a7f7720b671f4f0295">SVF::VFG::isPhiCopyEdge</a></div><div class="ttdeci">bool isPhiCopyEdge(const PAGEdge *copy) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00452">VFG.h:452</a></div></div>
|
|
103
102
|
<div class="ttc" id="classSVF_1_1VFG_html_a66f439ffebda7a81925514b77199154b"><div class="ttname"><a href="classSVF_1_1VFG.html#a66f439ffebda7a81925514b77199154b">SVF::VFG::~VFG</a></div><div class="ttdeci">virtual ~VFG()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00115">VFG.h:115</a></div></div>
|
|
104
103
|
<div class="ttc" id="classSVF_1_1ICFG_html_a7d10e8a815c836a070d35850f817a18c"><div class="ttname"><a href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">SVF::ICFG::getCallBlockNode</a></div><div class="ttdeci">CallBlockNode * getCallBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00197">ICFG.cpp:197</a></div></div>
|
|
@@ -108,17 +107,15 @@ $(function() {
|
|
|
108
107
|
<div class="ttc" id="classSVF_1_1VFG_html_ac2e2f555975063da3fa1932ac35802c6a5a28e6fd51e73e076091d4b6f4e61eaa"><div class="ttname"><a href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a5a28e6fd51e73e076091d4b6f4e61eaa">SVF::VFG::FULLSVFG</a></div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00057">VFG.h:57</a></div></div>
|
|
109
108
|
<div class="ttc" id="classSVF_1_1VFG_html_a3037ca34a555ebdb4fbf0e86291dc4ea"><div class="ttname"><a href="classSVF_1_1VFG.html#a3037ca34a555ebdb4fbf0e86291dc4ea">SVF::VFG::VFGNodeIter</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy::iterator VFGNodeIter</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00079">VFG.h:79</a></div></div>
|
|
110
109
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
111
|
-
<div class="ttc" id="classSVF_1_1UnaryOPPE_html"><div class="ttname"><a href="classSVF_1_1UnaryOPPE.html">SVF::UnaryOPPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00474">SVFStatements.h:474</a></div></div>
|
|
112
110
|
<div class="ttc" id="classSVF_1_1VFG_html_ac2e2f555975063da3fa1932ac35802c6ada8562b20e8d888a4b421c200957294d"><div class="ttname"><a href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6ada8562b20e8d888a4b421c200957294d">SVF::VFG::PTRONLYSVFG</a></div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00057">VFG.h:57</a></div></div>
|
|
113
111
|
<div class="ttc" id="classSVF_1_1VFG_html_a9215c1d7f1152967f0731057a085e793"><div class="ttname"><a href="classSVF_1_1VFG.html#a9215c1d7f1152967f0731057a085e793">SVF::VFG::getCmpVFGNode</a></div><div class="ttdeci">CmpVFGNode * getCmpVFGNode(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00229">VFG.h:229</a></div></div>
|
|
112
|
+
<div class="ttc" id="classSVF_1_1GepStmt_html"><div class="ttname"><a href="classSVF_1_1GepStmt.html">SVF::GepStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00664">SVFStatements.h:664</a></div></div>
|
|
114
113
|
<div class="ttc" id="classSVF_1_1VFG_html_a122aa5ad874170ef644cee8705f1ef3e"><div class="ttname"><a href="classSVF_1_1VFG.html#a122aa5ad874170ef644cee8705f1ef3e">SVF::VFG::removeVFGNode</a></div><div class="ttdeci">void removeVFGNode(VFGNode *node)</div><div class="ttdoc">Remove a VFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00321">VFG.h:321</a></div></div>
|
|
115
114
|
<div class="ttc" id="classSVF_1_1VFG_html_a27ac8d60de7be75e831b4a28f8f8f1d2"><div class="ttname"><a href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2">SVF::VFG::addRetEdge</a></div><div class="ttdeci">VFGEdge * addRetEdge(NodeID srcId, NodeID dstId, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00583">VFG.cpp:583</a></div></div>
|
|
116
|
-
<div class="ttc" id="classSVF_1_1VFG_html_a7b0d533f3ccce8fc64deae6077f3d959"><div class="ttname"><a href="classSVF_1_1VFG.html#a7b0d533f3ccce8fc64deae6077f3d959">SVF::VFG::addAddrVFGNode</a></div><div class="ttdeci">void addAddrVFGNode(const AddrPE *addr)</div><div class="ttdoc">Add an Address VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00486">VFG.h:486</a></div></div>
|
|
117
115
|
<div class="ttc" id="classSVF_1_1IntraPHIVFGNode_html"><div class="ttname"><a href="classSVF_1_1IntraPHIVFGNode.html">SVF::IntraPHIVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00697">VFGNode.h:697</a></div></div>
|
|
118
116
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
|
|
119
117
|
<div class="ttc" id="classSVF_1_1VFG_html_a268ec1495cbe4adb51fa50d28a4cba3d"><div class="ttname"><a href="classSVF_1_1VFG.html#a268ec1495cbe4adb51fa50d28a4cba3d">SVF::VFG::isPtrOnlySVFG</a></div><div class="ttdeci">bool isPtrOnlySVFG() const</div><div class="ttdoc">Return true if this VFG only contains pointer related SVFGNodes for pointer analysis. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00127">VFG.h:127</a></div></div>
|
|
120
118
|
<div class="ttc" id="classSVF_1_1CopyVFGNode_html"><div class="ttname"><a href="classSVF_1_1CopyVFGNode.html">SVF::CopyVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00274">VFGNode.h:274</a></div></div>
|
|
121
|
-
<div class="ttc" id="classSVF_1_1StorePE_html"><div class="ttname"><a href="classSVF_1_1StorePE.html">SVF::StorePE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00591">SVFStatements.h:591</a></div></div>
|
|
122
119
|
<div class="ttc" id="classSVF_1_1VFGNode_html_ab98e74dfd4756e70e3e3c5b7d5e5ae27"><div class="ttname"><a href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">SVF::VFGNode::getFun</a></div><div class="ttdeci">virtual const SVFFunction * getFun() const</div><div class="ttdoc">Get the function of this SVFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00084">VFGNode.h:84</a></div></div>
|
|
123
120
|
<div class="ttc" id="classSVF_1_1VFGEdge_html_a557334ef75bb5479b045f68c27b38701"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a557334ef75bb5479b045f68c27b38701">SVF::VFGEdge::SVFGEdgeSetTy</a></div><div class="ttdeci">VFGEdgeSetTy SVFGEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00118">VFGEdge.h:118</a></div></div>
|
|
124
121
|
<div class="ttc" id="classSVF_1_1VFG_html_a43f4002b0beb00ed2026f7edd9ebbb1c"><div class="ttname"><a href="classSVF_1_1VFG.html#a43f4002b0beb00ed2026f7edd9ebbb1c">SVF::VFG::VFGNodes</a></div><div class="ttdeci">bool VFGNodes(const SVFFunction *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00292">VFG.h:292</a></div></div>
|
|
@@ -130,15 +127,13 @@ $(function() {
|
|
|
130
127
|
<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>
|
|
131
128
|
<div class="ttc" id="classSVF_1_1VFG_html_a7622e381fbc1601b3f9a8384df2751bd"><div class="ttname"><a href="classSVF_1_1VFG.html#a7622e381fbc1601b3f9a8384df2751bd">SVF::VFG::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdoc">Return SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00133">VFG.h:133</a></div></div>
|
|
132
129
|
<div class="ttc" id="classSVF_1_1ICFGNode_html_ae526280cca2d6cbb2868c80461bc16da"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">SVF::ICFGNode::getFun</a></div><div class="ttdeci">virtual const SVFFunction * getFun() const</div><div class="ttdoc">Return the function of this ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00080">ICFGNode.h:80</a></div></div>
|
|
133
|
-
<div class="ttc" id="classSVF_1_1VFG_html_a51b3b232ddda0656bfe0c7d9527b4a84"><div class="ttname"><a href="classSVF_1_1VFG.html#a51b3b232ddda0656bfe0c7d9527b4a84">SVF::VFG::addGepVFGNode</a></div><div class="ttdeci">void addGepVFGNode(const GepPE *gep)</div><div class="ttdoc">Add a Gep VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00500">VFG.h:500</a></div></div>
|
|
134
130
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a37cfa2aa4e7b98ef9dc8179f581a2362"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVF::SVFIR::getPAG</a></div><div class="ttdeci">static SVFIR * getPAG(bool buildFromFile=false)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00107">SVFIR.h:107</a></div></div>
|
|
135
131
|
<div class="ttc" id="classSVF_1_1SVFValue_html_adc15c1f7a77158142156fba7524e89c9"><div class="ttname"><a href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">SVF::SVFValue::getName</a></div><div class="ttdeci">const llvm::StringRef getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00231">SVFBasicTypes.h:231</a></div></div>
|
|
136
132
|
<div class="ttc" id="classSVF_1_1VFGEdge_html_a156ae6a8b3a033f505c18c6b162e7cf5"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">SVF::VFGEdge::VFGEdgeK</a></div><div class="ttdeci">VFGEdgeK</div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00051">VFGEdge.h:51</a></div></div>
|
|
137
133
|
<div class="ttc" id="classSVF_1_1VFG_html_a52dac90d700a2377b657ec34d3ad2241"><div class="ttname"><a href="classSVF_1_1VFG.html#a52dac90d700a2377b657ec34d3ad2241">SVF::VFG::PAGNodeToFormalRetMapTy</a></div><div class="ttdeci">Map< const PAGNode *, FormalRetVFGNode * > PAGNodeToFormalRetMapTy</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00066">VFG.h:66</a></div></div>
|
|
138
|
-
<div class="ttc" id="
|
|
134
|
+
<div class="ttc" id="classSVF_1_1VFG_html_a6a1435f8ac7f74cc81608839fa3da3df"><div class="ttname"><a href="classSVF_1_1VFG.html#a6a1435f8ac7f74cc81608839fa3da3df">SVF::VFG::addIntraPHIVFGNode</a></div><div class="ttdeci">void addIntraPHIVFGNode(const PhiStmt *edge)</div><div class="ttdoc">Add an llvm PHI VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00572">VFG.h:572</a></div></div>
|
|
139
135
|
<div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00100">SVFBasicTypes.h:100</a></div></div>
|
|
140
136
|
<div class="ttc" id="SVFIR_8h_html"><div class="ttname"><a href="SVFIR_8h.html">SVFIR.h</a></div></div>
|
|
141
|
-
<div class="ttc" id="classSVF_1_1VFG_html_ae746db691e5c96dff1d590b109bffb7f"><div class="ttname"><a href="classSVF_1_1VFG.html#ae746db691e5c96dff1d590b109bffb7f">SVF::VFG::addUnaryOPVFGNode</a></div><div class="ttdeci">void addUnaryOPVFGNode(const UnaryOPPE *edge)</div><div class="ttdoc">Add a UnaryOperator VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00614">VFG.h:614</a></div></div>
|
|
142
137
|
<div class="ttc" id="classSVF_1_1VFG_html_a1693ccdb6c1b57418316c29cde05cad2"><div class="ttname"><a href="classSVF_1_1VFG.html#a1693ccdb6c1b57418316c29cde05cad2">SVF::VFG::getCallGraph</a></div><div class="ttdeci">PTACallGraph * getCallGraph() const</div><div class="ttdoc">Return CallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00139">VFG.h:139</a></div></div>
|
|
143
138
|
<div class="ttc" id="classSVF_1_1VFG_html_a37239391028cd313eab7110626444682"><div class="ttname"><a href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">SVF::VFG::getPAGEdgeSet</a></div><div class="ttdeci">virtual PAGEdge::PAGEdgeSetTy & getPAGEdgeSet(PAGEdge::PEDGEK kind)</div><div class="ttdoc">Get PAGEdge set. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00430">VFG.h:430</a></div></div>
|
|
144
139
|
<div class="ttc" id="classSVF_1_1VFG_html_a27bd4d5ba75d65056d77882869b0c64d"><div class="ttname"><a href="classSVF_1_1VFG.html#a27bd4d5ba75d65056d77882869b0c64d">SVF::VFG::getBinaryOPVFGNode</a></div><div class="ttdeci">BinaryOPVFGNode * getBinaryOPVFGNode(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00211">VFG.h:211</a></div></div>
|
|
@@ -150,6 +145,7 @@ $(function() {
|
|
|
150
145
|
<div class="ttc" id="classSVF_1_1SVFVar_html_a3b61042079a6c9dc395f38925c6a1271"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">SVF::SVFVar::isPointer</a></div><div class="ttdeci">virtual bool isPointer() const</div><div class="ttdoc">Whether it is a pointer. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00115">SVFVariables.h:115</a></div></div>
|
|
151
146
|
<div class="ttc" id="classSVF_1_1VFG_html_afdb1560eecf692fb646d412dc760088d"><div class="ttname"><a href="classSVF_1_1VFG.html#afdb1560eecf692fb646d412dc760088d">SVF::VFG::addFormalParmVFGNode</a></div><div class="ttdeci">void addFormalParmVFGNode(const PAGNode *fparm, const SVFFunction *fun, CallPESet &callPEs)</div><div class="ttdoc">Add a formal parameter VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00532">VFG.h:532</a></div></div>
|
|
152
147
|
<div class="ttc" id="classSVF_1_1VFG_html_a113185086912213257b04daa4590bf13"><div class="ttname"><a href="classSVF_1_1VFG.html#a113185086912213257b04daa4590bf13">SVF::VFG::GlobalVFGNodeSet</a></div><div class="ttdeci">Set< const VFGNode * > GlobalVFGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00083">VFG.h:83</a></div></div>
|
|
148
|
+
<div class="ttc" id="classSVF_1_1UnaryOPStmt_html_a919db9b8c9287c3802f563840b56c4f1"><div class="ttname"><a href="classSVF_1_1UnaryOPStmt.html#a919db9b8c9287c3802f563840b56c4f1">SVF::UnaryOPStmt::getRes</a></div><div class="ttdeci">const SVFVar * getRes() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00515">SVFStatements.h:515</a></div></div>
|
|
153
149
|
<div class="ttc" id="classSVF_1_1VFG_html_adedaba0713164e10ce6273b2947535e0"><div class="ttname"><a href="classSVF_1_1VFG.html#adedaba0713164e10ce6273b2947535e0">SVF::VFG::connectDirectVFGEdges</a></div><div class="ttdeci">void connectDirectVFGEdges()</div><div class="ttdoc">Create edges between VFG nodes within a function. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00603">VFG.cpp:603</a></div></div>
|
|
154
150
|
<div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
|
|
155
151
|
<div class="ttc" id="classSVF_1_1VFG_html_a0fabca3c0f9bebe23f66a914dbb99e39"><div class="ttname"><a href="classSVF_1_1VFG.html#a0fabca3c0f9bebe23f66a914dbb99e39">SVF::VFG::addActualParmVFGNode</a></div><div class="ttdeci">void addActualParmVFGNode(const PAGNode *aparm, const CallBlockNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00524">VFG.h:524</a></div></div>
|
|
@@ -157,26 +153,25 @@ $(function() {
|
|
|
157
153
|
<div class="ttc" id="classSVF_1_1UnaryOPVFGNode_html"><div class="ttname"><a href="classSVF_1_1UnaryOPVFGNode.html">SVF::UnaryOPVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00459">VFGNode.h:459</a></div></div>
|
|
158
154
|
<div class="ttc" id="classSVF_1_1VFG_html_ac7083aa233d8e3820d6eb8e922f0c051"><div class="ttname"><a href="classSVF_1_1VFG.html#ac7083aa233d8e3820d6eb8e922f0c051">SVF::VFG::PAGNodeToUnaryOPVFGNodeMap</a></div><div class="ttdeci">PAGNodeToUnaryOPVFGNodeMapTy PAGNodeToUnaryOPVFGNodeMap</div><div class="ttdoc">map a PAGNode to its UnaryOPVFGNode </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00096">VFG.h:96</a></div></div>
|
|
159
155
|
<div class="ttc" id="classSVF_1_1CmpVFGNode_html"><div class="ttname"><a href="classSVF_1_1CmpVFGNode.html">SVF::CmpVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00315">VFGNode.h:315</a></div></div>
|
|
156
|
+
<div class="ttc" id="classSVF_1_1UnaryOPStmt_html"><div class="ttname"><a href="classSVF_1_1UnaryOPStmt.html">SVF::UnaryOPStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00474">SVFStatements.h:474</a></div></div>
|
|
160
157
|
<div class="ttc" id="classSVF_1_1VFG_html_a6d2a20830533ee40a5757e58e127f927"><div class="ttname"><a href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">SVF::VFG::addStmtVFGNode</a></div><div class="ttdeci">void addStmtVFGNode(StmtVFGNode *node, const PAGEdge *pagEdge)</div><div class="ttdoc">Add a VFG node for program statement. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00471">VFG.h:471</a></div></div>
|
|
161
158
|
<div class="ttc" id="classSVF_1_1BranchVFGNode_html"><div class="ttname"><a href="classSVF_1_1BranchVFGNode.html">SVF::BranchVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00534">VFGNode.h:534</a></div></div>
|
|
162
159
|
<div class="ttc" id="classSVF_1_1VFG_html_a30eb9d717ad5bc8a9109a7bdef38f4a1"><div class="ttname"><a href="classSVF_1_1VFG.html#a30eb9d717ad5bc8a9109a7bdef38f4a1">SVF::VFG::hasVFGNode</a></div><div class="ttdeci">bool hasVFGNode(NodeID id) const</div><div class="ttdoc">Whether has the VFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00151">VFG.h:151</a></div></div>
|
|
163
160
|
<div class="ttc" id="classSVF_1_1VFG_html_a0c0a7c8f0bd27bc9e88ce54c0809b11b"><div class="ttname"><a href="classSVF_1_1VFG.html#a0c0a7c8f0bd27bc9e88ce54c0809b11b">SVF::VFG::updateCallGraph</a></div><div class="ttdeci">void updateCallGraph(PointerAnalysis *pta)</div><div class="ttdoc">Update VFG based on pointer analysis results. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00796">VFG.cpp:796</a></div></div>
|
|
164
161
|
<div class="ttc" id="classSVF_1_1VFG_html_a6c3daf2777cc5f76ce07241f803720f3"><div class="ttname"><a href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3">SVF::VFG::globalVFGNodes</a></div><div class="ttdeci">GlobalVFGNodeSet globalVFGNodes</div><div class="ttdoc">set of global store VFG nodes </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00102">VFG.h:102</a></div></div>
|
|
165
162
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_afb2daec804e81f0beb72fbc805d1c82a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#afb2daec804e81f0beb72fbc805d1c82a">SVF::PTACallGraph::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallBlockNode *cs, const SVFFunction *callee) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00344">PTACallGraph.h:344</a></div></div>
|
|
166
|
-
<div class="ttc" id="classSVF_1_1VFG_html_ab4166804d4612c1cf194d1d8710c09a6"><div class="ttname"><a href="classSVF_1_1VFG.html#ab4166804d4612c1cf194d1d8710c09a6">SVF::VFG::addCmpVFGNode</a></div><div class="ttdeci">void addCmpVFGNode(const CmpPE *edge)</div><div class="ttdoc">Add a Compare VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00586">VFG.h:586</a></div></div>
|
|
167
163
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a6885064afa211958af7b73f0233284e5"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a6885064afa211958af7b73f0233284e5">SVF::GenericGraph::hasGNode</a></div><div class="ttdeci">bool hasGNode(NodeID id) const</div><div class="ttdoc">Has a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00395">GenericGraph.h:395</a></div></div>
|
|
168
|
-
<div class="ttc" id="classSVF_1_1VFG_html_aa21ad616306c111b77fb3ec8f16b19be"><div class="ttname"><a href="classSVF_1_1VFG.html#aa21ad616306c111b77fb3ec8f16b19be">SVF::VFG::addStoreVFGNode</a></div><div class="ttdeci">void addStoreVFGNode(const StorePE *store)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00515">VFG.h:515</a></div></div>
|
|
169
164
|
<div class="ttc" id="classSVF_1_1VFG_html_a241d0489bf0315460e2b07db87e7847c"><div class="ttname"><a href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVF::VFG::iterator</a></div><div class="ttdeci">VFGNodeIDToNodeMapTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00080">VFG.h:80</a></div></div>
|
|
170
165
|
<div class="ttc" id="classSVF_1_1VFG_html_a0f554fd778b338cbd7e4272eaefc96f6"><div class="ttname"><a href="classSVF_1_1VFG.html#a0f554fd778b338cbd7e4272eaefc96f6">SVF::VFG::PAGNodeToBinaryOPVFGNodeMap</a></div><div class="ttdeci">PAGNodeToBinaryOPVFGNodeMapTy PAGNodeToBinaryOPVFGNodeMap</div><div class="ttdoc">map a PAGNode to its BinaryOPVFGNode </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00095">VFG.h:95</a></div></div>
|
|
171
|
-
<div class="ttc" id="classSVF_1_1VFG_html_afb440e02353766c2a2541005dd29fb24"><div class="ttname"><a href="classSVF_1_1VFG.html#afb440e02353766c2a2541005dd29fb24">SVF::VFG::addBinaryOPVFGNode</a></div><div class="ttdeci">void addBinaryOPVFGNode(const BinaryOPPE *edge)</div><div class="ttdoc">Add a BinaryOperator VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00600">VFG.h:600</a></div></div>
|
|
172
166
|
<div class="ttc" id="classSVF_1_1VFG_html_af5005136743913d760d7402bbd308c69"><div class="ttname"><a href="classSVF_1_1VFG.html#af5005136743913d760d7402bbd308c69">SVF::VFG::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Clean up memory. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00321">VFG.cpp:321</a></div></div>
|
|
167
|
+
<div class="ttc" id="classSVF_1_1VFG_html_ac79516fc4d9136241d708f9df5c73262"><div class="ttname"><a href="classSVF_1_1VFG.html#ac79516fc4d9136241d708f9df5c73262">SVF::VFG::addBinaryOPVFGNode</a></div><div class="ttdeci">void addBinaryOPVFGNode(const BinaryOPStmt *edge)</div><div class="ttdoc">Add a BinaryOperator VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00600">VFG.h:600</a></div></div>
|
|
173
168
|
<div class="ttc" id="classSVF_1_1VFG_html_a9c2446f54d3738b6c0e65632a1200ba0"><div class="ttname"><a href="classSVF_1_1VFG.html#a9c2446f54d3738b6c0e65632a1200ba0">SVF::VFG::PAGNodeToCmpVFGNodeMapTy</a></div><div class="ttdeci">Map< const PAGNode *, CmpVFGNode * > PAGNodeToCmpVFGNodeMapTy</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00072">VFG.h:72</a></div></div>
|
|
174
169
|
<div class="ttc" id="classSVF_1_1VFG_html_a9a16c7a7b0df273c1dcbe6ba3aef8fde"><div class="ttname"><a href="classSVF_1_1VFG.html#a9a16c7a7b0df273c1dcbe6ba3aef8fde">SVF::VFG::PAGNodeToCmpVFGNodeMap</a></div><div class="ttdeci">PAGNodeToCmpVFGNodeMapTy PAGNodeToCmpVFGNodeMap</div><div class="ttdoc">map a PAGNode to its CmpVFGNode </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00098">VFG.h:98</a></div></div>
|
|
175
170
|
<div class="ttc" id="classSVF_1_1VFG_html_ab12de81e2912f06551ca7a6693f5046b"><div class="ttname"><a href="classSVF_1_1VFG.html#ab12de81e2912f06551ca7a6693f5046b">SVF::VFG::PAGNodeSet</a></div><div class="ttdeci">Set< const PAGNode * > PAGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00084">VFG.h:84</a></div></div>
|
|
176
|
-
<div class="ttc" id="classSVF_1_1UnaryOPPE_html_a80eb6a6681caf7407d7e16b36d7cb658"><div class="ttname"><a href="classSVF_1_1UnaryOPPE.html#a80eb6a6681caf7407d7e16b36d7cb658">SVF::UnaryOPPE::getRes</a></div><div class="ttdeci">const SVFVar * getRes() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00515">SVFStatements.h:515</a></div></div>
|
|
177
171
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
|
|
178
172
|
<div class="ttc" id="classSVF_1_1VFG_html_a8994194bca2edfd9528880390de795ab"><div class="ttname"><a href="classSVF_1_1VFG.html#a8994194bca2edfd9528880390de795ab">SVF::VFG::isFunEntryVFGNode</a></div><div class="ttdeci">const SVFFunction * isFunEntryVFGNode(const VFGNode *node) const</div><div class="ttdoc">Whether a node is function entry VFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00905">VFG.cpp:905</a></div></div>
|
|
179
173
|
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
|
|
174
|
+
<div class="ttc" id="classSVF_1_1UnaryOPStmt_html_abde2b32d5bbd37df0e194b1a4e78483b"><div class="ttname"><a href="classSVF_1_1UnaryOPStmt.html#abde2b32d5bbd37df0e194b1a4e78483b">SVF::UnaryOPStmt::getOpVar</a></div><div class="ttdeci">const SVFVar * getOpVar() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00512">SVFStatements.h:512</a></div></div>
|
|
180
175
|
<div class="ttc" id="VFGNode_8h_html"><div class="ttname"><a href="VFGNode_8h.html">VFGNode.h</a></div></div>
|
|
181
176
|
<div class="ttc" id="classSVF_1_1VFG_html_a5166be2c1231a93c9b9ce5f272797b94"><div class="ttname"><a href="classSVF_1_1VFG.html#a5166be2c1231a93c9b9ce5f272797b94">SVF::VFG::getVFGNodeBegin</a></div><div class="ttdeci">VFGNodeSet::const_iterator getVFGNodeBegin(const SVFFunction *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00295">VFG.h:295</a></div></div>
|
|
182
177
|
<div class="ttc" id="classSVF_1_1VFG_html_ac2e2f555975063da3fa1932ac35802c6a8ed0b9aea88fbbbe91f33301bea0c9dd"><div class="ttname"><a href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a8ed0b9aea88fbbbe91f33301bea0c9dd">SVF::VFG::PTRONLYSVFG_OPT</a></div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00057">VFG.h:57</a></div></div>
|
|
@@ -185,12 +180,15 @@ $(function() {
|
|
|
185
180
|
<div class="ttc" id="classSVF_1_1VFG_html_a28c5f7e331a437e09682b972769acf66"><div class="ttname"><a href="classSVF_1_1VFG.html#a28c5f7e331a437e09682b972769acf66">SVF::VFG::PAGNodeToActualRetMap</a></div><div class="ttdeci">PAGNodeToActualRetMapTy PAGNodeToActualRetMap</div><div class="ttdoc">map a PAGNode to an actual return </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00091">VFG.h:91</a></div></div>
|
|
186
181
|
<div class="ttc" id="classSVF_1_1VFGEdge_html_a54e8b1d339da481222292e3b62d1e765"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a54e8b1d339da481222292e3b62d1e765">SVF::VFGEdge::VFGEdgeSetTy</a></div><div class="ttdeci">GenericNode< VFGNode, VFGEdge >::GEdgeSetTy VFGEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00117">VFGEdge.h:117</a></div></div>
|
|
187
182
|
<div class="ttc" id="classSVF_1_1VFG_html_ac97ef8c479556f9ca2c40cd4d8a18694"><div class="ttname"><a href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVF::VFG::SVFGEdgeSetTy</a></div><div class="ttdeci">VFGEdge::SVFGEdgeSetTy SVFGEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00078">VFG.h:78</a></div></div>
|
|
183
|
+
<div class="ttc" id="classSVF_1_1VFG_html_a6c2280052b44ff7029cf4b98712c374b"><div class="ttname"><a href="classSVF_1_1VFG.html#a6c2280052b44ff7029cf4b98712c374b">SVF::VFG::addCmpVFGNode</a></div><div class="ttdeci">void addCmpVFGNode(const CmpStmt *edge)</div><div class="ttdoc">Add a Compare VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00586">VFG.h:586</a></div></div>
|
|
184
|
+
<div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00628">SVFStatements.h:628</a></div></div>
|
|
188
185
|
<div class="ttc" id="classSVF_1_1VFG_html_ab4e8ab307ad6beb46812a60ebd31ae3b"><div class="ttname"><a href="classSVF_1_1VFG.html#ab4e8ab307ad6beb46812a60ebd31ae3b">SVF::VFG::connectFRetAndARet</a></div><div class="ttdeci">virtual void connectFRetAndARet(const PAGNode *funReturn, const PAGNode *csReturn, CallSiteID csId, VFGEdgeSetTy &edges)</div><div class="ttdoc">Connect formal-ret and actual ret. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00389">VFG.h:389</a></div></div>
|
|
189
186
|
<div class="ttc" id="classSVF_1_1BranchStmt_html"><div class="ttname"><a href="classSVF_1_1BranchStmt.html">SVF::BranchStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00528">SVFStatements.h:528</a></div></div>
|
|
190
187
|
<div class="ttc" id="classSVF_1_1VFG_html_aa1e09df7b3724bf18e450b16735998ab"><div class="ttname"><a href="classSVF_1_1VFG.html#aa1e09df7b3724bf18e450b16735998ab">SVF::VFG::connectCallerAndCallee</a></div><div class="ttdeci">virtual void connectCallerAndCallee(const CallBlockNode *cs, const SVFFunction *callee, VFGEdgeSetTy &edges)</div><div class="ttdoc">Connect VFG nodes between caller and callee for indirect call site. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00818">VFG.cpp:818</a></div></div>
|
|
191
188
|
<div class="ttc" id="classSVF_1_1VFG_html_af04068b6f6beff961f815cc6eae7f5b0"><div class="ttname"><a href="classSVF_1_1VFG.html#af04068b6f6beff961f815cc6eae7f5b0">SVF::VFG::getCallSite</a></div><div class="ttdeci">const CallBlockNode * getCallSite(CallSiteID id) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00182">VFG.h:182</a></div></div>
|
|
192
189
|
<div class="ttc" id="classSVF_1_1VFG_html_a0b072e8e45899b89da0a466140563c38"><div class="ttname"><a href="classSVF_1_1VFG.html#a0b072e8e45899b89da0a466140563c38">SVF::VFG::getActualRetVFGNode</a></div><div class="ttdeci">ActualRetVFGNode * getActualRetVFGNode(const PAGNode *aret) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00241">VFG.h:241</a></div></div>
|
|
193
190
|
<div class="ttc" id="classSVF_1_1VFG_html_acbc1f5ae3b9016b1ce97314a2b8b54c0"><div class="ttname"><a href="classSVF_1_1VFG.html#acbc1f5ae3b9016b1ce97314a2b8b54c0">SVF::VFG::connectAParamAndFParam</a></div><div class="ttdeci">virtual void connectAParamAndFParam(const PAGNode *csArg, const PAGNode *funArg, const CallBlockNode *cbn, CallSiteID csId, VFGEdgeSetTy &edges)</div><div class="ttdoc">Connect VFG nodes between caller and callee for indirect call site. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00380">VFG.h:380</a></div></div>
|
|
191
|
+
<div class="ttc" id="classSVF_1_1PhiStmt_html"><div class="ttname"><a href="classSVF_1_1PhiStmt.html">SVF::PhiStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00328">SVFStatements.h:328</a></div></div>
|
|
194
192
|
<div class="ttc" id="classSVF_1_1BinaryOPVFGNode_html_a76c67d31ffb67c4ef102471898ae2709"><div class="ttname"><a href="classSVF_1_1BinaryOPVFGNode.html#a76c67d31ffb67c4ef102471898ae2709">SVF::BinaryOPVFGNode::setOpVer</a></div><div class="ttdeci">void setOpVer(u32_t pos, const PAGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00430">VFGNode.h:430</a></div></div>
|
|
195
193
|
<div class="ttc" id="classSVF_1_1BranchStmt_html_a2c6fe09027838f9e0ad9ab8193ce8e9b"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b">SVF::BranchStmt::getBranchInst</a></div><div class="ttdeci">const SVFVar * getBranchInst() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00570">SVFStatements.h:570</a></div></div>
|
|
196
194
|
<div class="ttc" id="classSVF_1_1SVFIR_html_ac2dff0e76e4ee879dc023255e7e6a63e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac2dff0e76e4ee879dc023255e7e6a63e">SVF::SVFIR::getEdgeSet</a></div><div class="ttdeci">SVFStmt::PAGEdgeSetTy & getEdgeSet(SVFStmt::PEDGEK kind)</div><div class="ttdoc">Get/set methods to get SVFStmts based on their kinds and ICFGNodes. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00163">SVFIR.h:163</a></div></div>
|
|
@@ -203,11 +201,11 @@ $(function() {
|
|
|
203
201
|
<div class="ttc" id="classSVF_1_1VFG_html_a01b8694a5ab7acf8df0213225550791b"><div class="ttname"><a href="classSVF_1_1VFG.html#a01b8694a5ab7acf8df0213225550791b">SVF::VFG::getActualParmVFGNode</a></div><div class="ttdeci">ActualParmVFGNode * getActualParmVFGNode(const PAGNode *aparm, const CallBlockNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00235">VFG.h:235</a></div></div>
|
|
204
202
|
<div class="ttc" id="classSVF_1_1ICFGNode_html_aff18898b9bbd85d08b00d64d48eea6a5"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#aff18898b9bbd85d08b00d64d48eea6a5">SVF::ICFGNode::addVFGNode</a></div><div class="ttdeci">void addVFGNode(const VFGNode *vfgNode)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00103">ICFGNode.h:103</a></div></div>
|
|
205
203
|
<div class="ttc" id="classSVF_1_1VFG_html_a88f6468b9b43bbb06ef757d884580a50"><div class="ttname"><a href="classSVF_1_1VFG.html#a88f6468b9b43bbb06ef757d884580a50">SVF::VFG::hasBlackHoleConstObjAddrAsDef</a></div><div class="ttdeci">bool hasBlackHoleConstObjAddrAsDef(const PAGNode *pagNode) const</div><div class="ttdoc">Whether a PAGNode has a blackhole or const object as its definition. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00265">VFG.h:265</a></div></div>
|
|
206
|
-
<div class="ttc" id="classSVF_1_1GepPE_html"><div class="ttname"><a href="classSVF_1_1GepPE.html">SVF::GepPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00664">SVFStatements.h:664</a></div></div>
|
|
207
204
|
<div class="ttc" id="classSVF_1_1VFG_html_a1e0b8c7df55e05739775e8a1c50cf660"><div class="ttname"><a href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">SVF::VFG::setDef</a></div><div class="ttdeci">void setDef(const PAGNode *pagNode, const VFGNode *node)</div><div class="ttdoc">Given a PAGNode, set/get its def VFG node (definition of top level pointers) </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00401">VFG.h:401</a></div></div>
|
|
208
205
|
<div class="ttc" id="classSVF_1_1VFG_html_a25c2bbbc2e966e2aaa59a5b83363557a"><div class="ttname"><a href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">SVF::VFG::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00104">VFG.h:104</a></div></div>
|
|
209
206
|
<div class="ttc" id="classSVF_1_1FormalParmVFGNode_html_af0dfc7f8b58d5bc0e47c6ad17216cc1e"><div class="ttname"><a href="classSVF_1_1FormalParmVFGNode.html#af0dfc7f8b58d5bc0e47c6ad17216cc1e">SVF::FormalParmVFGNode::addCallPE</a></div><div class="ttdeci">void addCallPE(const CallPE *call)</div><div class="ttdoc">Return call edge. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00906">VFGNode.h:906</a></div></div>
|
|
210
|
-
<div class="ttc" id="
|
|
207
|
+
<div class="ttc" id="classSVF_1_1VFG_html_a49d35213a281859ca64398760c485a85"><div class="ttname"><a href="classSVF_1_1VFG.html#a49d35213a281859ca64398760c485a85">SVF::VFG::addCopyVFGNode</a></div><div class="ttdeci">void addCopyVFGNode(const CopyStmt *copy)</div><div class="ttdoc">Add a Copy VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00493">VFG.h:493</a></div></div>
|
|
208
|
+
<div class="ttc" id="classSVF_1_1VFG_html_a4fb321fb0ff2a06c1065506552b862aa"><div class="ttname"><a href="classSVF_1_1VFG.html#a4fb321fb0ff2a06c1065506552b862aa">SVF::VFG::addGepVFGNode</a></div><div class="ttdeci">void addGepVFGNode(const GepStmt *gep)</div><div class="ttdoc">Add a Gep VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00500">VFG.h:500</a></div></div>
|
|
211
209
|
<div class="ttc" id="classSVF_1_1LoadVFGNode_html"><div class="ttname"><a href="classSVF_1_1LoadVFGNode.html">SVF::LoadVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00196">VFGNode.h:196</a></div></div>
|
|
212
210
|
<div class="ttc" id="classSVF_1_1VFGNode_html_a9c95dd4f0e70ccc4a03282cdddba95de"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a9c95dd4f0e70ccc4a03282cdddba95de">SVF::VFGNode::setICFGNode</a></div><div class="ttdeci">virtual void setICFGNode(const ICFGNode *node)</div><div class="ttdoc">Set corresponding ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00078">VFGNode.h:78</a></div></div>
|
|
213
211
|
<div class="ttc" id="classSVF_1_1VFG_html_a18ec674e8ab0285ec086df87e5c591c9"><div class="ttname"><a href="classSVF_1_1VFG.html#a18ec674e8ab0285ec086df87e5c591c9">SVF::VFG::getVFGNodes</a></div><div class="ttdeci">VFGNodeSet & getVFGNodes(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00286">VFG.h:286</a></div></div>
|
|
@@ -216,18 +214,17 @@ $(function() {
|
|
|
216
214
|
<div class="ttc" id="classSVF_1_1VFG_html_a9a99ae86d16ffe69bff9d52de769d049"><div class="ttname"><a href="classSVF_1_1VFG.html#a9a99ae86d16ffe69bff9d52de769d049">SVF::VFG::funToVFGNodesMap</a></div><div class="ttdeci">FunToVFGNodesMapTy funToVFGNodesMap</div><div class="ttdoc">map a function to its VFGNodes; </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00100">VFG.h:100</a></div></div>
|
|
217
215
|
<div class="ttc" id="classSVF_1_1VFG_html_a6fd24c001a6daedf591974ba27140461"><div class="ttname"><a href="classSVF_1_1VFG.html#a6fd24c001a6daedf591974ba27140461">SVF::VFG::addInterEdgeFromAPToFP</a></div><div class="ttdeci">VFGEdge * addInterEdgeFromAPToFP(ActualParmVFGNode *src, FormalParmVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from actual to formal parameters. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00356">VFG.h:356</a></div></div>
|
|
218
216
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a0a8831a5429005ff9d71adbd6bf3994f"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0a8831a5429005ff9d71adbd6bf3994f">SVF::GenericGraph::addGNode</a></div><div class="ttdeci">void addGNode(NodeID id, NodeType *node)</div><div class="ttdoc">Add a Node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00380">GenericGraph.h:380</a></div></div>
|
|
219
|
-
<div class="ttc" id="classSVF_1_1VFG_html_adbd7966d18ab50da5a485ba6e043ba61"><div class="ttname"><a href="classSVF_1_1VFG.html#adbd7966d18ab50da5a485ba6e043ba61">SVF::VFG::addLoadVFGNode</a></div><div class="ttdeci">void addLoadVFGNode(const LoadPE *load)</div><div class="ttdoc">Add a Load VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00507">VFG.h:507</a></div></div>
|
|
220
217
|
<div class="ttc" id="classSVF_1_1VFG_html_a598bc7a6863a6eccc3e089b63e9add17"><div class="ttname"><a href="classSVF_1_1VFG.html#a598bc7a6863a6eccc3e089b63e9add17">SVF::VFG::PAGNodeToIntraPHIVFGNodeMap</a></div><div class="ttdeci">PAGNodeToPHIVFGNodeMapTy PAGNodeToIntraPHIVFGNodeMap</div><div class="ttdoc">map a PAGNode to its PHIVFGNode </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00094">VFG.h:94</a></div></div>
|
|
221
218
|
<div class="ttc" id="classSVF_1_1VFG_html_a6ec1a8b02ece25aa165699e10fac7991"><div class="ttname"><a href="classSVF_1_1VFG.html#a6ec1a8b02ece25aa165699e10fac7991">SVF::VFG::PAGNodeToBranchVFGNodeMapTy</a></div><div class="ttdeci">Map< const PAGNode *, BranchVFGNode * > PAGNodeToBranchVFGNodeMapTy</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00071">VFG.h:71</a></div></div>
|
|
222
219
|
<div class="ttc" id="classSVF_1_1ActualRetVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualRetVFGNode.html">SVF::ActualRetVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00948">VFGNode.h:948</a></div></div>
|
|
223
220
|
<div class="ttc" id="VFGEdge_8h_html"><div class="ttname"><a href="VFGEdge_8h.html">VFGEdge.h</a></div></div>
|
|
224
221
|
<div class="ttc" id="classSVF_1_1VFG_html_a18afc4baf33eb700e0510928016019f5"><div class="ttname"><a href="classSVF_1_1VFG.html#a18afc4baf33eb700e0510928016019f5">SVF::VFG::addBranchVFGNode</a></div><div class="ttdeci">void addBranchVFGNode(const BranchStmt *edge)</div><div class="ttdoc">Add a BranchVFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00623">VFG.h:623</a></div></div>
|
|
225
222
|
<div class="ttc" id="classSVF_1_1VFG_html_acb181d4f9faa40578c80e2018e2742b8"><div class="ttname"><a href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">SVF::VFG::totalVFGNode</a></div><div class="ttdeci">NodeID totalVFGNode</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00088">VFG.h:88</a></div></div>
|
|
226
|
-
<div class="ttc" id="classSVF_1_1LoadPE_html"><div class="ttname"><a href="classSVF_1_1LoadPE.html">SVF::LoadPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00628">SVFStatements.h:628</a></div></div>
|
|
227
223
|
<div class="ttc" id="classSVF_1_1VFG_html_a4ac1cd5f79c9e33ae599f7eb942a6e01"><div class="ttname"><a href="classSVF_1_1VFG.html#a4ac1cd5f79c9e33ae599f7eb942a6e01">SVF::VFG::addInterEdgeFromFRToAR</a></div><div class="ttdeci">VFGEdge * addInterEdgeFromFRToAR(NodeID src, NodeID dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from callee return to callsite receive parameter. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00372">VFG.h:372</a></div></div>
|
|
228
224
|
<div class="ttc" id="classSVF_1_1VFG_html_ab5b63b4f6317bfb5875f2b977bcf26a4"><div class="ttname"><a href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4">SVF::VFG::hasDef</a></div><div class="ttdeci">bool hasDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00420">VFG.h:420</a></div></div>
|
|
229
225
|
<div class="ttc" id="classSVF_1_1VFG_html_aa22b76d96c028055cb0cc14d7dd0ed2e"><div class="ttname"><a href="classSVF_1_1VFG.html#aa22b76d96c028055cb0cc14d7dd0ed2e">SVF::VFG::PAGEdgeSet</a></div><div class="ttdeci">SVFIR::PAGEdgeSet PAGEdgeSet</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00082">VFG.h:82</a></div></div>
|
|
230
226
|
<div class="ttc" id="classSVF_1_1VFG_html_a688c0cc4a67c7cd9afbef2f0c264c85b"><div class="ttname"><a href="classSVF_1_1VFG.html#a688c0cc4a67c7cd9afbef2f0c264c85b">SVF::VFG::getIntraPHIVFGNode</a></div><div class="ttdeci">IntraPHIVFGNode * getIntraPHIVFGNode(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00205">VFG.h:205</a></div></div>
|
|
227
|
+
<div class="ttc" id="classSVF_1_1VFG_html_a373e7066630719ffb7c62681f2c2a74e"><div class="ttname"><a href="classSVF_1_1VFG.html#a373e7066630719ffb7c62681f2c2a74e">SVF::VFG::addLoadVFGNode</a></div><div class="ttdeci">void addLoadVFGNode(const LoadStmt *load)</div><div class="ttdoc">Add a Load VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00507">VFG.h:507</a></div></div>
|
|
231
228
|
<div class="ttc" id="classSVF_1_1VFG_html_a28f2bdcbbc0bab00e93df62ea11647a2"><div class="ttname"><a href="classSVF_1_1VFG.html#a28f2bdcbbc0bab00e93df62ea11647a2">SVF::VFG::getVFGNodeEnd</a></div><div class="ttdeci">VFGNodeSet::const_iterator getVFGNodeEnd(const SVFFunction *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00300">VFG.h:300</a></div></div>
|
|
232
229
|
<div class="ttc" id="classSVF_1_1VFG_html_a185ed4079babc0e0f72c4bf223342ee2"><div class="ttname"><a href="classSVF_1_1VFG.html#a185ed4079babc0e0f72c4bf223342ee2">SVF::VFG::addInterEdgeFromAPToFP</a></div><div class="ttdeci">VFGEdge * addInterEdgeFromAPToFP(NodeID src, NodeID dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from actual to formal parameters. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00367">VFG.h:367</a></div></div>
|
|
233
230
|
<div class="ttc" id="classSVF_1_1VFG_html_a3544cc0380964f238c964a0e7b417862"><div class="ttname"><a href="classSVF_1_1VFG.html#a3544cc0380964f238c964a0e7b417862">SVF::VFG::addVFGNodes</a></div><div class="ttdeci">void addVFGNodes()</div><div class="ttdoc">Create VFG nodes. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00330">VFG.cpp:330</a></div></div>
|
|
@@ -240,27 +237,30 @@ $(function() {
|
|
|
240
237
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_a2c8b1674f1f942a3b5aa77b7abccb229"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a2c8b1674f1f942a3b5aa77b7abccb229">SVF::PTACallGraph::getCallSite</a></div><div class="ttdeci">const CallBlockNode * getCallSite(CallSiteID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00363">PTACallGraph.h:363</a></div></div>
|
|
241
238
|
<div class="ttc" id="classSVF_1_1VFG_html_a47609382fcd9ef36706e1d0f0531a843"><div class="ttname"><a href="classSVF_1_1VFG.html#a47609382fcd9ef36706e1d0f0531a843">SVF::VFG::getBranchVFGNode</a></div><div class="ttdeci">BranchVFGNode * getBranchVFGNode(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00223">VFG.h:223</a></div></div>
|
|
242
239
|
<div class="ttc" id="classSVF_1_1VFG_html_a8ba98bb3d888ec5ff40f511da14b37bc"><div class="ttname"><a href="classSVF_1_1VFG.html#a8ba98bb3d888ec5ff40f511da14b37bc">SVF::VFG::VFG</a></div><div class="ttdeci">VFG(PTACallGraph *callgraph, VFGK k=FULLSVFG)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00308">VFG.cpp:308</a></div></div>
|
|
240
|
+
<div class="ttc" id="classSVF_1_1CmpStmt_html"><div class="ttname"><a href="classSVF_1_1CmpStmt.html">SVF::CmpStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00374">SVFStatements.h:374</a></div></div>
|
|
241
|
+
<div class="ttc" id="classSVF_1_1VFG_html_aca2b1493bd712bdc6618de995a81e5af"><div class="ttname"><a href="classSVF_1_1VFG.html#aca2b1493bd712bdc6618de995a81e5af">SVF::VFG::addAddrVFGNode</a></div><div class="ttdeci">void addAddrVFGNode(const AddrStmt *addr)</div><div class="ttdoc">Add an Address VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00486">VFG.h:486</a></div></div>
|
|
243
242
|
<div class="ttc" id="classSVF_1_1CallBlockNode_html_ad3d50024efcfa94b1246c982b43aff2f"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">SVF::CallBlockNode::getCallSite</a></div><div class="ttdeci">const Instruction * getCallSite() const</div><div class="ttdoc">Return callsite. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00381">ICFGNode.h:381</a></div></div>
|
|
244
243
|
<div class="ttc" id="classSVF_1_1VFG_html_aa01f63b17acdd52122a7f1ade329ccea"><div class="ttname"><a href="classSVF_1_1VFG.html#aa01f63b17acdd52122a7f1ade329ccea">SVF::VFG::addCallEdge</a></div><div class="ttdeci">VFGEdge * addCallEdge(NodeID srcId, NodeID dstId, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00564">VFG.cpp:564</a></div></div>
|
|
245
244
|
<div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
|
|
246
245
|
<div class="ttc" id="classSVF_1_1ICFG_html_a6d66c83cb1656d0f8ec8b8b65a9e9c41"><div class="ttname"><a href="classSVF_1_1ICFG.html#a6d66c83cb1656d0f8ec8b8b65a9e9c41">SVF::ICFG::getRetBlockNode</a></div><div class="ttdeci">RetBlockNode * getRetBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00210">ICFG.cpp:210</a></div></div>
|
|
247
|
-
<div class="ttc" id="classSVF_1_1BinaryOPPE_html"><div class="ttname"><a href="classSVF_1_1BinaryOPPE.html">SVF::BinaryOPPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00424">SVFStatements.h:424</a></div></div>
|
|
248
246
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00165">GenericGraph.h:165</a></div></div>
|
|
249
247
|
<div class="ttc" id="classSVF_1_1ICFG_html_ae1ef14cdda27a2062c4c454750444108"><div class="ttname"><a href="classSVF_1_1ICFG.html#ae1ef14cdda27a2062c4c454750444108">SVF::ICFG::getFunEntryBlockNode</a></div><div class="ttdeci">FunEntryBlockNode * getFunEntryBlockNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function entry node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00230">ICFG.cpp:230</a></div></div>
|
|
250
248
|
<div class="ttc" id="classSVF_1_1VFG_html_ac34c4529229404617c346f81cc6c141f"><div class="ttname"><a href="classSVF_1_1VFG.html#ac34c4529229404617c346f81cc6c141f">SVF::VFG::hasIntraVFGEdge</a></div><div class="ttdeci">VFGEdge * hasIntraVFGEdge(VFGNode *src, VFGNode *dst, VFGEdge::VFGEdgeK kind)</div><div class="ttdoc">Whether we has a SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00720">VFG.cpp:720</a></div></div>
|
|
251
|
-
<div class="ttc" id="classSVF_1_1AddrPE_html"><div class="ttname"><a href="classSVF_1_1AddrPE.html">SVF::AddrPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00196">SVFStatements.h:196</a></div></div>
|
|
252
249
|
<div class="ttc" id="classSVF_1_1VFG_html_a7343f970332391634f79b2023bba6650"><div class="ttname"><a href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">SVF::VFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00414">VFG.h:414</a></div></div>
|
|
253
250
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html">SVF::StmtVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00113">VFGNode.h:113</a></div></div>
|
|
251
|
+
<div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00591">SVFStatements.h:591</a></div></div>
|
|
254
252
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_af02857ff13e61f81d332d83eb376bdb4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">SVF::SVFStmt::PAGEdgeSetTy</a></div><div class="ttdeci">GenericNode< SVFVar, SVFStmt >::GEdgeSetTy PAGEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00178">SVFStatements.h:178</a></div></div>
|
|
255
253
|
<div class="ttc" id="classSVF_1_1VFGNode_html_a367413b90de8a382190ffa9f0c742e01"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a367413b90de8a382190ffa9f0c742e01">SVF::VFGNode::RetPESet</a></div><div class="ttdeci">Set< const RetPE * > RetPESet</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00062">VFGNode.h:62</a></div></div>
|
|
256
254
|
<div class="ttc" id="classSVF_1_1VFG_html_aff291586a4b0c28a6939577d39de5d0a"><div class="ttname"><a href="classSVF_1_1VFG.html#aff291586a4b0c28a6939577d39de5d0a">SVF::VFG::getGlobalVFGNodes</a></div><div class="ttdeci">GlobalVFGNodeSet & getGlobalVFGNodes()</div><div class="ttdoc">Return global stores. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00156">VFG.h:156</a></div></div>
|
|
257
255
|
<div class="ttc" id="classSVF_1_1VFG_html_a1fff5a365e5aa2d99f07f7f64cc35fac"><div class="ttname"><a href="classSVF_1_1VFG.html#a1fff5a365e5aa2d99f07f7f64cc35fac">SVF::VFG::getLHSTopLevPtr</a></div><div class="ttdeci">const PAGNode * getLHSTopLevPtr(const VFGNode *node) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00868">VFG.cpp:868</a></div></div>
|
|
258
256
|
<div class="ttc" id="classSVF_1_1GenericGraph_html"><div class="ttname"><a href="classSVF_1_1GenericGraph.html">SVF::GenericGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00327">GenericGraph.h:327</a></div></div>
|
|
259
257
|
<div class="ttc" id="classSVF_1_1FormalParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalParmVFGNode.html">SVF::FormalParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00881">VFGNode.h:881</a></div></div>
|
|
258
|
+
<div class="ttc" id="classSVF_1_1VFG_html_a65c88a6c20380b715ac8b6c31e68afed"><div class="ttname"><a href="classSVF_1_1VFG.html#a65c88a6c20380b715ac8b6c31e68afed">SVF::VFG::addUnaryOPVFGNode</a></div><div class="ttdeci">void addUnaryOPVFGNode(const UnaryOPStmt *edge)</div><div class="ttdoc">Add a UnaryOperator VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00614">VFG.h:614</a></div></div>
|
|
260
259
|
<div class="ttc" id="classSVF_1_1VFG_html_a915fa50effaeea10716b86528b15c6dc"><div class="ttname"><a href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">SVF::VFG::getVFGNode</a></div><div class="ttdeci">VFGNode * getVFGNode(NodeID id) const</div><div class="ttdoc">Get a VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00145">VFG.h:145</a></div></div>
|
|
261
260
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a1817b65e76052f11e36a67d6b9efd915"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a1817b65e76052f11e36a67d6b9efd915">SVF::GenericGraph::removeGNode</a></div><div class="ttdeci">void removeGNode(NodeType *node)</div><div class="ttdoc">Delete a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00402">GenericGraph.h:402</a></div></div>
|
|
262
261
|
<div class="ttc" id="classSVF_1_1VFG_html_ad63218978f65ab91ae21bc24c882a716"><div class="ttname"><a href="classSVF_1_1VFG.html#ad63218978f65ab91ae21bc24c882a716">SVF::VFG::FunToVFGNodesMapTy</a></div><div class="ttdeci">Map< const SVFFunction *, VFGNodeSet > FunToVFGNodesMapTy</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00073">VFG.h:73</a></div></div>
|
|
263
262
|
<div class="ttc" id="structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4_html_a0c6c42e5f1f75e34d71c39996f50e5b2"><div class="ttname"><a href="structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4.html#a0c6c42e5f1f75e34d71c39996f50e5b2">llvm::GraphTraits< SVF::VFG * >::NodeRef</a></div><div class="ttdeci">SVF::VFGNode * NodeRef</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00652">VFG.h:652</a></div></div>
|
|
263
|
+
<div class="ttc" id="classSVF_1_1BinaryOPStmt_html"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html">SVF::BinaryOPStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00424">SVFStatements.h:424</a></div></div>
|
|
264
264
|
<div class="ttc" id="classSVF_1_1VFG_html_ade3f735b3c7b1a53cab3d67cd9f7b874"><div class="ttname"><a href="classSVF_1_1VFG.html#ade3f735b3c7b1a53cab3d67cd9f7b874">SVF::VFG::CallPESet</a></div><div class="ttdeci">FormalParmVFGNode::CallPESet CallPESet</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00075">VFG.h:75</a></div></div>
|
|
265
265
|
<div class="ttc" id="classSVF_1_1FormalRetVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalRetVFGNode.html">SVF::FormalRetVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01004">VFGNode.h:1004</a></div></div>
|
|
266
266
|
<div class="ttc" id="classSVF_1_1VFG_html_acfcd84ac6bedde4e7e74abdeb9233474"><div class="ttname"><a href="classSVF_1_1VFG.html#acfcd84ac6bedde4e7e74abdeb9233474">SVF::VFG::PAGNodeToUnaryOPVFGNodeMapTy</a></div><div class="ttdeci">Map< const PAGNode *, UnaryOPVFGNode * > PAGNodeToUnaryOPVFGNodeMapTy</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00070">VFG.h:70</a></div></div>
|
|
@@ -269,7 +269,6 @@ $(function() {
|
|
|
269
269
|
<div class="ttc" id="classSVF_1_1FormalRetVFGNode_html_a051f7dc0da465d7ce0dc733d9a8fae6a"><div class="ttname"><a href="classSVF_1_1FormalRetVFGNode.html#a051f7dc0da465d7ce0dc733d9a8fae6a">SVF::FormalRetVFGNode::addRetPE</a></div><div class="ttdeci">void addRetPE(const RetPE *retPE)</div><div class="ttdoc">RetPE. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01029">VFGNode.h:1029</a></div></div>
|
|
270
270
|
<div class="ttc" id="classSVF_1_1CallBlockNode_html"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html">SVF::CallBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00364">ICFGNode.h:364</a></div></div>
|
|
271
271
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00387">GenericGraph.h:387</a></div></div>
|
|
272
|
-
<div class="ttc" id="classSVF_1_1CopyPE_html"><div class="ttname"><a href="classSVF_1_1CopyPE.html">SVF::CopyPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00231">SVFStatements.h:231</a></div></div>
|
|
273
272
|
<div class="ttc" id="classSVF_1_1VFG_html_af8c8d0eb778a2a94a33c0b97ee3704c1"><div class="ttname"><a href="classSVF_1_1VFG.html#af8c8d0eb778a2a94a33c0b97ee3704c1">SVF::VFG::PAGNodeToBranchVFGNodeMap</a></div><div class="ttdeci">PAGNodeToBranchVFGNodeMapTy PAGNodeToBranchVFGNodeMap</div><div class="ttdoc">map a PAGNode to its BranchVFGNode </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00097">VFG.h:97</a></div></div>
|
|
274
273
|
<div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
|
|
275
274
|
<div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00133">SVFIR.h:133</a></div></div>
|
|
@@ -278,14 +277,15 @@ $(function() {
|
|
|
278
277
|
<div class="ttc" id="classSVF_1_1VFG_html_a462fe6eefc55a436f90f91adeb34726f"><div class="ttname"><a href="classSVF_1_1VFG.html#a462fe6eefc55a436f90f91adeb34726f">SVF::VFG::PAGEdgeToStmtVFGNodeMap</a></div><div class="ttdeci">PAGEdgeToStmtVFGNodeMapTy PAGEdgeToStmtVFGNodeMap</div><div class="ttdoc">map a PAGEdge to its StmtVFGNode </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00099">VFG.h:99</a></div></div>
|
|
279
278
|
<div class="ttc" id="classSVF_1_1VFG_html_a75eb519e4f89a116db98fccb263af4d6"><div class="ttname"><a href="classSVF_1_1VFG.html#a75eb519e4f89a116db98fccb263af4d6">SVF::VFG::getFormalParmVFGNode</a></div><div class="ttdeci">FormalParmVFGNode * getFormalParmVFGNode(const PAGNode *fparm) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00247">VFG.h:247</a></div></div>
|
|
280
279
|
<div class="ttc" id="classSVF_1_1VFGNode_html_a43b6b3dc747d310f793ca1b3bfa9d05f"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a43b6b3dc747d310f793ca1b3bfa9d05f">SVF::VFGNode::CallPESet</a></div><div class="ttdeci">Set< const CallPE * > CallPESet</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00061">VFGNode.h:61</a></div></div>
|
|
281
|
-
<div class="ttc" id="classSVF_1_1PhiPE_html"><div class="ttname"><a href="classSVF_1_1PhiPE.html">SVF::PhiPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00328">SVFStatements.h:328</a></div></div>
|
|
282
280
|
<div class="ttc" id="classSVF_1_1CmpVFGNode_html_a41bcdd6b46a31c8d15533342478dc236"><div class="ttname"><a href="classSVF_1_1CmpVFGNode.html#a41bcdd6b46a31c8d15533342478dc236">SVF::CmpVFGNode::setOpVer</a></div><div class="ttdeci">void setOpVer(u32_t pos, const PAGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00358">VFGNode.h:358</a></div></div>
|
|
283
281
|
<div class="ttc" id="classSVF_1_1UnaryOPVFGNode_html_a3b082eef98b8393499908f6c430b8d6c"><div class="ttname"><a href="classSVF_1_1UnaryOPVFGNode.html#a3b082eef98b8393499908f6c430b8d6c">SVF::UnaryOPVFGNode::setOpVer</a></div><div class="ttdeci">void setOpVer(u32_t pos, const PAGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00501">VFGNode.h:501</a></div></div>
|
|
284
282
|
<div class="ttc" id="classSVF_1_1VFG_html_a190a59a119215dbb2556735ba3213a2a"><div class="ttname"><a href="classSVF_1_1VFG.html#a190a59a119215dbb2556735ba3213a2a">SVF::VFG::PAGNodeToFormalRetMap</a></div><div class="ttdeci">PAGNodeToFormalRetMapTy PAGNodeToFormalRetMap</div><div class="ttdoc">map a PAGNode to a formal return </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00093">VFG.h:93</a></div></div>
|
|
285
283
|
<div class="ttc" id="classSVF_1_1VFG_html_ab1f4c2765af027e903634d5262aea80b"><div class="ttname"><a href="classSVF_1_1VFG.html#ab1f4c2765af027e903634d5262aea80b">SVF::VFG::addVFGInterEdges</a></div><div class="ttdeci">void addVFGInterEdges(const CallBlockNode *cs, const SVFFunction *callee)</div><div class="ttdoc">Create edges between VFG nodes across functions. </div></div>
|
|
284
|
+
<div class="ttc" id="classSVF_1_1CopyStmt_html"><div class="ttname"><a href="classSVF_1_1CopyStmt.html">SVF::CopyStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00231">SVFStatements.h:231</a></div></div>
|
|
286
285
|
<div class="ttc" id="classSVF_1_1IntraPHIVFGNode_html_a7e5fd83393224ece808de83cbf496882"><div class="ttname"><a href="classSVF_1_1IntraPHIVFGNode.html#a7e5fd83393224ece808de83cbf496882">SVF::IntraPHIVFGNode::setOpVerAndBB</a></div><div class="ttdeci">void setOpVerAndBB(u32_t pos, const PAGNode *node, const ICFGNode *bb)</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00717">VFGNode.h:717</a></div></div>
|
|
287
286
|
<div class="ttc" id="classSVF_1_1VFG_html_ae4350f68e960bfef87f44587628b1929"><div class="ttname"><a href="classSVF_1_1VFG.html#ae4350f68e960bfef87f44587628b1929">SVF::VFG::view</a></div><div class="ttdeci">void view()</div><div class="ttdoc">Dump graph into dot file. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00790">VFG.cpp:790</a></div></div>
|
|
288
287
|
<div class="ttc" id="classSVF_1_1SVFStmt_html"><div class="ttname"><a href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00047">SVFStatements.h:47</a></div></div>
|
|
288
|
+
<div class="ttc" id="classSVF_1_1VFG_html_a13f7caf44741db3b0e8a44b13d8931f5"><div class="ttname"><a href="classSVF_1_1VFG.html#a13f7caf44741db3b0e8a44b13d8931f5">SVF::VFG::addStoreVFGNode</a></div><div class="ttdeci">void addStoreVFGNode(const StoreStmt *store)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00515">VFG.h:515</a></div></div>
|
|
289
289
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html">SVF::PointerAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00057">PointerAnalysis.h:57</a></div></div>
|
|
290
290
|
<div class="ttc" id="classSVF_1_1VFG_html_ab7ba9d179504165f277d347a7cb9f5d8"><div class="ttname"><a href="classSVF_1_1VFG.html#ab7ba9d179504165f277d347a7cb9f5d8">SVF::VFG::getFormalRetVFGNode</a></div><div class="ttdeci">FormalRetVFGNode * getFormalRetVFGNode(const PAGNode *fret) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00253">VFG.h:253</a></div></div>
|
|
291
291
|
<div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
|