svf-tools 1.0.322 → 1.0.326
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 +7 -7
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Conditions_8cpp_source.html +22 -20
- package/SVF-doxygen/html/html/Conditions_8h_source.html +12 -9
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +13 -12
- package/SVF-doxygen/html/html/ConsG_8h_source.html +15 -15
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +8 -8
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/IRGraph_8cpp.html +1 -0
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +20 -18
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +13 -13
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +21 -21
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +5 -5
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +5 -5
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Options_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/Options_8h_source.html +2 -1
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +24 -22
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +17 -17
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFG_8cpp.html +1 -0
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +61 -59
- package/SVF-doxygen/html/html/SVFG_8h_source.html +20 -20
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +33 -33
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +56 -56
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +147 -148
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +133 -132
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +14 -14
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +11 -11
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +39 -39
- package/SVF-doxygen/html/html/VFG_8h_source.html +26 -26
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +20 -19
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +18 -16
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +34 -34
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +26 -25
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +24 -22
- package/SVF-doxygen/html/html/classSVF_1_1BranchCondManager.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +20 -19
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +33 -31
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +20 -19
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +24 -22
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +28 -27
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +41 -39
- package/SVF-doxygen/html/html/classSVF_1_1CondManager-members.html +10 -7
- package/SVF-doxygen/html/html/classSVF_1_1CondManager.html +144 -43
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +46 -46
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +20 -19
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +18 -16
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +20 -19
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +18 -16
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +54 -54
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterBlockNode-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1InterBlockNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +18 -16
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +92 -92
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +24 -23
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +33 -31
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt-members.html +24 -23
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +25 -23
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +21 -20
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +26 -0
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator-members.html +13 -12
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +102 -70
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +25 -24
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +23 -21
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +47 -47
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +11 -10
- package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode-members.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +20 -19
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +24 -22
- package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +47 -47
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +74 -74
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +59 -59
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +131 -132
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +732 -750
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +86 -86
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +50 -32
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +69 -69
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +20 -19
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +18 -16
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +18 -16
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +18 -16
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +24 -23
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +28 -26
- package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +83 -83
- package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt-members.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +20 -18
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +3 -3
- package/SVF-doxygen/html/html/functions_a.html +29 -29
- package/SVF-doxygen/html/html/functions_c.html +25 -30
- package/SVF-doxygen/html/html/functions_f.html +2 -2
- package/SVF-doxygen/html/html/functions_func.html +29 -29
- package/SVF-doxygen/html/html/functions_func_g.html +59 -57
- package/SVF-doxygen/html/html/functions_func_h.html +6 -6
- package/SVF-doxygen/html/html/functions_func_i.html +8 -4
- package/SVF-doxygen/html/html/functions_func_s.html +8 -5
- package/SVF-doxygen/html/html/functions_g.html +74 -72
- package/SVF-doxygen/html/html/functions_h.html +6 -6
- package/SVF-doxygen/html/html/functions_i.html +20 -16
- package/SVF-doxygen/html/html/functions_k.html +9 -0
- package/SVF-doxygen/html/html/functions_l.html +8 -8
- package/SVF-doxygen/html/html/functions_n.html +3 -0
- package/SVF-doxygen/html/html/functions_o.html +12 -15
- package/SVF-doxygen/html/html/functions_p.html +20 -35
- package/SVF-doxygen/html/html/functions_s.html +35 -13
- package/SVF-doxygen/html/html/functions_t.html +5 -7
- package/SVF-doxygen/html/html/functions_type_c.html +1 -4
- package/SVF-doxygen/html/html/functions_type_f.html +2 -2
- package/SVF-doxygen/html/html/functions_type_g.html +2 -2
- package/SVF-doxygen/html/html/functions_type_i.html +3 -3
- package/SVF-doxygen/html/html/functions_type_k.html +3 -0
- package/SVF-doxygen/html/html/functions_type_p.html +2 -18
- package/SVF-doxygen/html/html/functions_type_s.html +16 -0
- package/SVF-doxygen/html/html/functions_type_v.html +1 -1
- package/SVF-doxygen/html/html/functions_v.html +4 -4
- package/SVF-doxygen/html/html/functions_vars_g.html +7 -7
- package/SVF-doxygen/html/html/functions_vars_i.html +7 -7
- package/SVF-doxygen/html/html/functions_vars_k.html +6 -0
- package/SVF-doxygen/html/html/functions_vars_n.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_o.html +1 -2
- package/SVF-doxygen/html/html/functions_vars_p.html +4 -7
- package/SVF-doxygen/html/html/functions_vars_s.html +3 -0
- package/SVF-doxygen/html/html/functions_w.html +9 -5
- package/SVF-doxygen/html/html/namespaceSVF.html +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +14 -14
- package/SVF-doxygen/html/html/search/all_10.js +13 -18
- package/SVF-doxygen/html/html/search/all_13.js +10 -4
- package/SVF-doxygen/html/html/search/all_14.js +6 -6
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +3 -3
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +2 -3
- package/SVF-doxygen/html/html/search/all_6.js +2 -2
- package/SVF-doxygen/html/html/search/all_7.js +29 -28
- package/SVF-doxygen/html/html/search/all_8.js +2 -2
- package/SVF-doxygen/html/html/search/all_9.js +4 -3
- package/SVF-doxygen/html/html/search/all_b.js +3 -0
- package/SVF-doxygen/html/html/search/all_c.js +4 -4
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +4 -3
- package/SVF-doxygen/html/html/search/all_f.js +2 -2
- package/SVF-doxygen/html/html/search/functions_0.js +14 -14
- package/SVF-doxygen/html/html/search/functions_10.js +1 -0
- package/SVF-doxygen/html/html/search/functions_2.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +25 -24
- package/SVF-doxygen/html/html/search/functions_7.js +2 -2
- package/SVF-doxygen/html/html/search/functions_8.js +1 -0
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +4 -0
- package/SVF-doxygen/html/html/search/typedefs_14.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_2.js +1 -2
- package/SVF-doxygen/html/html/search/typedefs_5.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_6.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_a.js +2 -1
- package/SVF-doxygen/html/html/search/typedefs_f.js +2 -6
- package/SVF-doxygen/html/html/search/variables_10.js +2 -3
- package/SVF-doxygen/html/html/search/variables_13.js +1 -0
- package/SVF-doxygen/html/html/search/variables_14.js +4 -4
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_7.js +3 -3
- package/SVF-doxygen/html/html/search/variables_9.js +3 -3
- package/SVF-doxygen/html/html/search/variables_b.js +3 -1
- package/SVF-doxygen/html/html/search/variables_e.js +3 -2
- package/SVF-doxygen/html/html/search/variables_f.js +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +9 -9
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +18 -18
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +20 -20
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
- package/include/DDA/ContextDDA.h +1 -1
- package/include/DDA/FlowDDA.h +1 -1
- package/include/Graphs/ConsG.h +10 -10
- package/include/Graphs/ICFGNode.h +3 -3
- package/include/Graphs/IRGraph.h +7 -7
- package/include/Graphs/VFG.h +4 -4
- package/include/MSSA/MemRegion.h +3 -3
- package/include/MSSA/MemSSA.h +1 -1
- package/include/MemoryModel/PointerAnalysis.h +8 -8
- package/include/MemoryModel/PointerAnalysisImpl.h +2 -2
- package/include/MemoryModel/SVFIR.h +66 -67
- package/include/MemoryModel/SVFStatements.h +30 -25
- package/include/MemoryModel/SVFVariables.h +32 -32
- package/include/SABER/PathCondAllocator.h +4 -0
- package/include/SVF-FE/SVFIRBuilder.h +15 -15
- package/include/Util/Conditions.h +10 -0
- package/include/Util/IRAnnotator.h +1 -1
- package/include/Util/Options.h +3 -1
- package/include/Util/TypeBasedHeapCloning.h +2 -2
- package/include/WPA/Andersen.h +1 -1
- package/include/WPA/FlowSensitiveTBHC.h +1 -1
- package/lib/DDA/ContextDDA.cpp +2 -2
- package/lib/DDA/DDAClient.cpp +6 -6
- package/lib/DDA/DDAStat.cpp +1 -1
- package/lib/DDA/FlowDDA.cpp +2 -2
- package/lib/Graphs/ConsG.cpp +25 -24
- package/lib/Graphs/ICFG.cpp +4 -4
- package/lib/Graphs/IRGraph.cpp +12 -9
- package/lib/Graphs/SVFG.cpp +10 -8
- package/lib/Graphs/VFG.cpp +37 -37
- package/lib/MSSA/MemRegion.cpp +17 -17
- package/lib/MSSA/MemSSA.cpp +9 -9
- package/lib/MTA/MTAAnnotator.cpp +5 -5
- package/lib/MemoryModel/PAGBuilderFromFile.cpp +10 -10
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +12 -12
- package/lib/MemoryModel/SVFIR.cpp +63 -63
- package/lib/SABER/LeakChecker.cpp +2 -2
- package/lib/SABER/ProgSlice.cpp +4 -1
- package/lib/SABER/SaberSVFGBuilder.cpp +3 -3
- package/lib/SVF-FE/Graph2Json.cpp +2 -2
- package/lib/SVF-FE/SVFIRBuilder.cpp +18 -18
- package/lib/Util/Conditions.cpp +5 -1
- package/lib/Util/Options.cpp +6 -0
- package/lib/Util/PTAStat.cpp +7 -7
- package/lib/Util/TypeBasedHeapCloning.cpp +3 -3
- package/lib/WPA/Andersen.cpp +13 -13
- package/lib/WPA/AndersenSFR.cpp +1 -1
- package/lib/WPA/AndersenStat.cpp +3 -3
- package/lib/WPA/FlowSensitive.cpp +6 -6
- package/lib/WPA/FlowSensitiveStat.cpp +2 -2
- package/lib/WPA/FlowSensitiveTBHC.cpp +5 -5
- package/lib/WPA/VersionedFlowSensitive.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#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#
|
|
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#a8e3633597a4dca714df20e0720b31f1e"> 82</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1IRGraph.html#a28ea8f85b0923d00364a010c1fd4e416">SVFIR::SVFStmtSet</a> <a class="code" href="classSVF_1_1VFG.html#a8e3633597a4dca714df20e0720b31f1e">SVFStmtSet</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#a77c2855e80d85ee122e3ee076402d864"> 430</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">PAGEdge::SVFStmtSetTy</a>& <a class="code" href="classSVF_1_1VFG.html#a77c2855e80d85ee122e3ee076402d864">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#a65a4af3d6f0bfc11e31f020bb2966576">getPTASVFStmtSet</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#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</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#l00197">SVFStatements.h:197</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>
|
|
@@ -75,13 +75,12 @@ $(function() {
|
|
|
75
75
|
<div class="ttc" id="classSVF_1_1VFG_html_ab2abe2ba4ac9e3e1d326d042d35acbc0"><div class="ttname"><a href="classSVF_1_1VFG.html#ab2abe2ba4ac9e3e1d326d042d35acbc0">SVF::VFG::VFGNodeIDToNodeMapTy</a></div><div class="ttdeci">Map< NodeID, VFGNode * > VFGNodeIDToNodeMapTy</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00060">VFG.h:60</a></div></div>
|
|
76
76
|
<div class="ttc" id="classSVF_1_1VFG_html_ac2e2f555975063da3fa1932ac35802c6aab1abd6be4a29fe8fb03a82f85e568a0"><div class="ttname"><a href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6aab1abd6be4a29fe8fb03a82f85e568a0">SVF::VFG::FULLSVFG_OPT</a></div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00057">VFG.h:57</a></div></div>
|
|
77
77
|
<div class="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00235">VFGNode.h:235</a></div></div>
|
|
78
|
-
<div class="ttc" id="classSVF_1_1SVFIR_html_a18ca66c199b910b15f1bfa77dcc98c30"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a18ca66c199b910b15f1bfa77dcc98c30">SVF::SVFIR::isNullPtr</a></div><div class="ttdeci">bool isNullPtr(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#
|
|
79
|
-
<div class="ttc" id="classSVF_1_1IRGraph_html_ae9547730a27575194977b240647e8ce2"><div class="ttname"><a href="classSVF_1_1IRGraph.html#ae9547730a27575194977b240647e8ce2">SVF::IRGraph::PAGEdgeSet</a></div><div class="ttdeci">Set< const SVFStmt * > PAGEdgeSet</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00051">IRGraph.h:51</a></div></div>
|
|
78
|
+
<div class="ttc" id="classSVF_1_1SVFIR_html_a18ca66c199b910b15f1bfa77dcc98c30"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a18ca66c199b910b15f1bfa77dcc98c30">SVF::SVFIR::isNullPtr</a></div><div class="ttdeci">bool isNullPtr(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00396">SVFIR.h:396</a></div></div>
|
|
80
79
|
<div class="ttc" id="classSVF_1_1VFG_html_ad28caacede7ab7f3a6676e37655ee84e"><div class="ttname"><a href="classSVF_1_1VFG.html#ad28caacede7ab7f3a6676e37655ee84e">SVF::VFG::getDefVFGNode</a></div><div class="ttdeci">const VFGNode * getDefVFGNode(const PAGNode *pagNode) const</div><div class="ttdoc">Given a pagNode, return its definition site. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00189">VFG.h:189</a></div></div>
|
|
81
80
|
<div class="ttc" id="classSVF_1_1BinaryOPVFGNode_html"><div class="ttname"><a href="classSVF_1_1BinaryOPVFGNode.html">SVF::BinaryOPVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00387">VFGNode.h:387</a></div></div>
|
|
82
81
|
<div class="ttc" id="classSVF_1_1ActualParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualParmVFGNode.html">SVF::ActualParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00831">VFGNode.h:831</a></div></div>
|
|
83
82
|
<div class="ttc" id="classSVF_1_1VFG_html_aae3bddc73e39d96fcc97d56ea3dec373"><div class="ttname"><a href="classSVF_1_1VFG.html#aae3bddc73e39d96fcc97d56ea3dec373">SVF::VFG::addFormalRetVFGNode</a></div><div class="ttdeci">void addFormalRetVFGNode(const PAGNode *uniqueFunRet, const SVFFunction *fun, RetPESet &retPEs)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00546">VFG.h:546</a></div></div>
|
|
84
|
-
<div class="ttc" id="classSVF_1_1MultiOpndStmt_html_a0441f2646fed28830439c41a0704ed4b"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">SVF::MultiOpndStmt::getOpndVars</a></div><div class="ttdeci">const OPVars & getOpndVars() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
83
|
+
<div class="ttc" id="classSVF_1_1MultiOpndStmt_html_a0441f2646fed28830439c41a0704ed4b"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">SVF::MultiOpndStmt::getOpndVars</a></div><div class="ttdeci">const OPVars & getOpndVars() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00315">SVFStatements.h:315</a></div></div>
|
|
85
84
|
<div class="ttc" id="classSVF_1_1AddrVFGNode_html"><div class="ttname"><a href="classSVF_1_1AddrVFGNode.html">SVF::AddrVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00747">VFGNode.h:747</a></div></div>
|
|
86
85
|
<div class="ttc" id="namespacellvm_html"><div class="ttname"><a href="namespacellvm.html">llvm</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00328">CHG.h:328</a></div></div>
|
|
87
86
|
<div class="ttc" id="classSVF_1_1VFG_html_a59bc855eb8591d88e0898e14d4f4b607"><div class="ttname"><a href="classSVF_1_1VFG.html#a59bc855eb8591d88e0898e14d4f4b607">SVF::VFG::addNullPtrVFGNode</a></div><div class="ttdeci">void addNullPtrVFGNode(const PAGNode *pagNode)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00479">VFG.h:479</a></div></div>
|
|
@@ -101,7 +100,7 @@ $(function() {
|
|
|
101
100
|
<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>
|
|
102
101
|
<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>
|
|
103
102
|
<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>
|
|
104
|
-
<div class="ttc" id="classSVF_1_1MultiOpndStmt_html_a00a14ad8f49912b876fd9d729fea4601"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">SVF::MultiOpndStmt::getRes</a></div><div class="ttdeci">const SVFVar * getRes() const</div><div class="ttdoc">Result SVFVar. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
103
|
+
<div class="ttc" id="classSVF_1_1MultiOpndStmt_html_a00a14ad8f49912b876fd9d729fea4601"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">SVF::MultiOpndStmt::getRes</a></div><div class="ttdeci">const SVFVar * getRes() const</div><div class="ttdoc">Result SVFVar. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00303">SVFStatements.h:303</a></div></div>
|
|
105
104
|
<div class="ttc" id="classSVF_1_1VFG_html_a71022c8953e89e21b017936286f12251"><div class="ttname"><a href="classSVF_1_1VFG.html#a71022c8953e89e21b017936286f12251">SVF::VFG::addActualRetVFGNode</a></div><div class="ttdeci">void addActualRetVFGNode(const PAGNode *ret, const CallBlockNode *cs)</div><div class="ttdoc">Add a callsite Receive VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00564">VFG.h:564</a></div></div>
|
|
106
105
|
<div class="ttc" id="classSVF_1_1VFG_html_ad86631f70bd702b5635bdbeab7d884b9"><div class="ttname"><a href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">SVF::VFG::hasInterVFGEdge</a></div><div class="ttdeci">VFGEdge * hasInterVFGEdge(VFGNode *src, VFGNode *dst, VFGEdge::VFGEdgeK kind, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00755">VFG.cpp:755</a></div></div>
|
|
107
106
|
<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,13 +108,15 @@ $(function() {
|
|
|
109
108
|
<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>
|
|
110
109
|
<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>
|
|
111
110
|
<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#
|
|
111
|
+
<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#l00669">SVFStatements.h:669</a></div></div>
|
|
113
112
|
<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>
|
|
114
113
|
<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>
|
|
115
114
|
<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>
|
|
116
115
|
<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>
|
|
116
|
+
<div class="ttc" id="classSVF_1_1VFG_html_a77c2855e80d85ee122e3ee076402d864"><div class="ttname"><a href="classSVF_1_1VFG.html#a77c2855e80d85ee122e3ee076402d864">SVF::VFG::getPAGEdgeSet</a></div><div class="ttdeci">virtual PAGEdge::SVFStmtSetTy & 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>
|
|
117
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>
|
|
118
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>
|
|
119
|
+
<div class="ttc" id="classSVF_1_1SVFStmt_html_a8cd7b6c6fd8b030b1421d95a086359f4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVF::SVFStmt::SVFStmtSetTy</a></div><div class="ttdeci">GenericNode< SVFVar, SVFStmt >::GEdgeSetTy SVFStmtSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00178">SVFStatements.h:178</a></div></div>
|
|
119
120
|
<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>
|
|
120
121
|
<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>
|
|
121
122
|
<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>
|
|
@@ -127,7 +128,8 @@ $(function() {
|
|
|
127
128
|
<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>
|
|
128
129
|
<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>
|
|
129
130
|
<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>
|
|
130
|
-
<div class="ttc" id="
|
|
131
|
+
<div class="ttc" id="classSVF_1_1VFG_html_a8e3633597a4dca714df20e0720b31f1e"><div class="ttname"><a href="classSVF_1_1VFG.html#a8e3633597a4dca714df20e0720b31f1e">SVF::VFG::SVFStmtSet</a></div><div class="ttdeci">SVFIR::SVFStmtSet SVFStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00082">VFG.h:82</a></div></div>
|
|
132
|
+
<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#l00106">SVFIR.h:106</a></div></div>
|
|
131
133
|
<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>
|
|
132
134
|
<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>
|
|
133
135
|
<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>
|
|
@@ -135,7 +137,6 @@ $(function() {
|
|
|
135
137
|
<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>
|
|
136
138
|
<div class="ttc" id="SVFIR_8h_html"><div class="ttname"><a href="SVFIR_8h.html">SVFIR.h</a></div></div>
|
|
137
139
|
<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>
|
|
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>
|
|
139
140
|
<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>
|
|
140
141
|
<div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
|
|
141
142
|
<div class="ttc" id="namespaceSVF_html_ab4f1d8a6715e791c94970e6f87b18f8f"><div class="ttname"><a href="namespaceSVF.html#ab4f1d8a6715e791c94970e6f87b18f8f">SVF::GenericVFGTy</a></div><div class="ttdeci">GenericGraph< VFGNode, VFGEdge > GenericVFGTy</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00044">VFG.h:44</a></div></div>
|
|
@@ -145,15 +146,16 @@ $(function() {
|
|
|
145
146
|
<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>
|
|
146
147
|
<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>
|
|
147
148
|
<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#
|
|
149
|
+
<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#l00520">SVFStatements.h:520</a></div></div>
|
|
149
150
|
<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>
|
|
151
|
+
<div class="ttc" id="classSVF_1_1SVFIR_html_a65a4af3d6f0bfc11e31f020bb2966576"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a65a4af3d6f0bfc11e31f020bb2966576">SVF::SVFIR::getPTASVFStmtSet</a></div><div class="ttdeci">SVFStmt::SVFStmtSetTy & getPTASVFStmtSet(SVFStmt::PEDGEK kind)</div><div class="ttdoc">Get PTA edges set according to its kind. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00167">SVFIR.h:167</a></div></div>
|
|
150
152
|
<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>
|
|
151
153
|
<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>
|
|
152
154
|
<div class="ttc" id="classSVF_1_1VFG_html_a6eb72d2fe080def018d09604fe3affcf"><div class="ttname"><a href="classSVF_1_1VFG.html#a6eb72d2fe080def018d09604fe3affcf">SVF::VFG::PAGNodeToFormalParmMapTy</a></div><div class="ttdeci">Map< const PAGNode *, FormalParmVFGNode * > PAGNodeToFormalParmMapTy</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00065">VFG.h:65</a></div></div>
|
|
153
155
|
<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>
|
|
154
156
|
<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>
|
|
155
157
|
<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#
|
|
158
|
+
<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#l00479">SVFStatements.h:479</a></div></div>
|
|
157
159
|
<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>
|
|
158
160
|
<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>
|
|
159
161
|
<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>
|
|
@@ -171,7 +173,7 @@ $(function() {
|
|
|
171
173
|
<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>
|
|
172
174
|
<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>
|
|
173
175
|
<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#
|
|
176
|
+
<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#l00517">SVFStatements.h:517</a></div></div>
|
|
175
177
|
<div class="ttc" id="VFGNode_8h_html"><div class="ttname"><a href="VFGNode_8h.html">VFGNode.h</a></div></div>
|
|
176
178
|
<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>
|
|
177
179
|
<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>
|
|
@@ -181,18 +183,17 @@ $(function() {
|
|
|
181
183
|
<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>
|
|
182
184
|
<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
185
|
<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#
|
|
186
|
+
<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#l00633">SVFStatements.h:633</a></div></div>
|
|
185
187
|
<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>
|
|
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#
|
|
188
|
+
<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#l00533">SVFStatements.h:533</a></div></div>
|
|
187
189
|
<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>
|
|
188
190
|
<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>
|
|
189
191
|
<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>
|
|
190
192
|
<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#
|
|
193
|
+
<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#l00333">SVFStatements.h:333</a></div></div>
|
|
192
194
|
<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>
|
|
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#
|
|
194
|
-
<div class="ttc" id="
|
|
195
|
-
<div class="ttc" id="classSVF_1_1SVFIR_html_a5de67390d38bfacd5b63b776a0ecbfff"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff">SVF::SVFIR::isPhiNode</a></div><div class="ttdeci">bool isPhiNode(const SVFVar *node) const</div><div class="ttdoc">Whether this SVFVar is a result operand a of phi node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00210">SVFIR.h:210</a></div></div>
|
|
195
|
+
<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#l00575">SVFStatements.h:575</a></div></div>
|
|
196
|
+
<div class="ttc" id="classSVF_1_1SVFIR_html_a5de67390d38bfacd5b63b776a0ecbfff"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff">SVF::SVFIR::isPhiNode</a></div><div class="ttdeci">bool isPhiNode(const SVFVar *node) const</div><div class="ttdoc">Whether this SVFVar is a result operand a of phi node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00209">SVFIR.h:209</a></div></div>
|
|
196
197
|
<div class="ttc" id="classSVF_1_1ICFG_html_aa33426d57dc150956902945a17a29bcb"><div class="ttname"><a href="classSVF_1_1ICFG.html#aa33426d57dc150956902945a17a29bcb">SVF::ICFG::getFunExitBlockNode</a></div><div class="ttdeci">FunExitBlockNode * getFunExitBlockNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function exit node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00239">ICFG.cpp:239</a></div></div>
|
|
197
198
|
<div class="ttc" id="classSVF_1_1VFG_html_a3c97d77bc0348471d6c098d5655f15b2"><div class="ttname"><a href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">SVF::VFG::addIntraDirectVFEdge</a></div><div class="ttdeci">VFGEdge * addIntraDirectVFEdge(NodeID srcId, NodeID dstId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00540">VFG.cpp:540</a></div></div>
|
|
198
199
|
<div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00083">SVFBasicTypes.h:83</a></div></div>
|
|
@@ -220,9 +221,9 @@ $(function() {
|
|
|
220
221
|
<div class="ttc" id="VFGEdge_8h_html"><div class="ttname"><a href="VFGEdge_8h.html">VFGEdge.h</a></div></div>
|
|
221
222
|
<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>
|
|
222
223
|
<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>
|
|
224
|
+
<div class="ttc" id="classSVF_1_1IRGraph_html_a28ea8f85b0923d00364a010c1fd4e416"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a28ea8f85b0923d00364a010c1fd4e416">SVF::IRGraph::SVFStmtSet</a></div><div class="ttdeci">Set< const SVFStmt * > SVFStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00051">IRGraph.h:51</a></div></div>
|
|
223
225
|
<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>
|
|
224
226
|
<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>
|
|
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>
|
|
226
227
|
<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
228
|
<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>
|
|
228
229
|
<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>
|
|
@@ -233,11 +234,10 @@ $(function() {
|
|
|
233
234
|
<div class="ttc" id="classSVF_1_1VFG_html_ae1348fd6d196ee8a6bd8d98022464d50"><div class="ttname"><a href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">SVF::VFG::getIntraVFGEdge</a></div><div class="ttdeci">VFGEdge * getIntraVFGEdge(const VFGNode *src, const VFGNode *dst, VFGEdge::VFGEdgeK kind)</div><div class="ttdoc">Get a SVFG edge according to src and dst. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00773">VFG.cpp:773</a></div></div>
|
|
234
235
|
<div class="ttc" id="classSVF_1_1ICFG_html_ae3b8f1b45c75b5fc231da76d3a49ad57"><div class="ttname"><a href="classSVF_1_1ICFG.html#ae3b8f1b45c75b5fc231da76d3a49ad57">SVF::ICFG::getGlobalBlockNode</a></div><div class="ttdeci">GlobalBlockNode * getGlobalBlockNode() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00175">ICFG.h:175</a></div></div>
|
|
235
236
|
<div class="ttc" id="classSVF_1_1VFG_html_abd05b599b383c759455aff99963b7b41"><div class="ttname"><a href="classSVF_1_1VFG.html#abd05b599b383c759455aff99963b7b41">SVF::VFG::addInterEdgeFromFRToAR</a></div><div class="ttdeci">VFGEdge * addInterEdgeFromFRToAR(FormalRetVFGNode *src, ActualRetVFGNode *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#l00361">VFG.h:361</a></div></div>
|
|
236
|
-
<div class="ttc" id="classSVF_1_1SVFIR_html_a9c33009dc1aa3e16adfd34effd4471f6"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a9c33009dc1aa3e16adfd34effd4471f6">SVF::SVFIR::getPTAEdgeSet</a></div><div class="ttdeci">SVFStmt::PAGEdgeSetTy & getPTAEdgeSet(SVFStmt::PEDGEK kind)</div><div class="ttdoc">Get PTA edges set according to its kind. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00168">SVFIR.h:168</a></div></div>
|
|
237
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>
|
|
238
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>
|
|
239
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#
|
|
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#l00379">SVFStatements.h:379</a></div></div>
|
|
241
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>
|
|
242
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>
|
|
243
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>
|
|
@@ -248,8 +248,7 @@ $(function() {
|
|
|
248
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>
|
|
249
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>
|
|
250
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#
|
|
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>
|
|
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#l00596">SVFStatements.h:596</a></div></div>
|
|
253
252
|
<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>
|
|
254
253
|
<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>
|
|
255
254
|
<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>
|
|
@@ -260,7 +259,7 @@ $(function() {
|
|
|
260
259
|
<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>
|
|
261
260
|
<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>
|
|
262
261
|
<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#
|
|
262
|
+
<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#l00429">SVFStatements.h:429</a></div></div>
|
|
264
263
|
<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
264
|
<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
265
|
<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>
|
|
@@ -271,7 +270,7 @@ $(function() {
|
|
|
271
270
|
<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
271
|
<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>
|
|
273
272
|
<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>
|
|
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#
|
|
273
|
+
<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#l00132">SVFIR.h:132</a></div></div>
|
|
275
274
|
<div class="ttc" id="classSVF_1_1VFG_html_ac2e2f555975063da3fa1932ac35802c6"><div class="ttname"><a href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">SVF::VFG::VFGK</a></div><div class="ttdeci">VFGK</div><div class="ttdoc">VFG kind. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00055">VFG.h:55</a></div></div>
|
|
276
275
|
<div class="ttc" id="classSVF_1_1NullPtrVFGNode_html"><div class="ttname"><a href="classSVF_1_1NullPtrVFGNode.html">SVF::NullPtrVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01131">VFGNode.h:1131</a></div></div>
|
|
277
276
|
<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>
|
|
@@ -280,8 +279,9 @@ $(function() {
|
|
|
280
279
|
<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>
|
|
281
280
|
<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>
|
|
282
281
|
<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>
|
|
282
|
+
<div class="ttc" id="classSVF_1_1SVFIR_html_ae2006820c0d00482b85e7ae3adcb5744"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">SVF::SVFIR::getSVFStmtSet</a></div><div class="ttdeci">SVFStmt::SVFStmtSetTy & getSVFStmtSet(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#l00162">SVFIR.h:162</a></div></div>
|
|
283
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#
|
|
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#l00232">SVFStatements.h:232</a></div></div>
|
|
285
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>
|
|
286
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>
|
|
287
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>
|