svf-tools 1.0.321 → 1.0.325
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/ConsGNode_8h_source.html +5 -5
- 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/FSMPTA_8h_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 +6 -6
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +9 -9
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +24 -24
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +13 -13
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +13 -13
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
- 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 +8 -8
- 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 +8 -8
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +17 -17
- 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 +63 -61
- 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 +42 -42
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +61 -61
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +153 -154
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +22 -22
- package/SVF-doxygen/html/html/SVFStatements_8h.html +11 -11
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +133 -132
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/SVFVariables_8h.html +9 -9
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +78 -78
- 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 +3 -3
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +17 -17
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +48 -48
- package/SVF-doxygen/html/html/VFG_8h_source.html +35 -35
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +5 -5
- 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/annotated.html +21 -21
- 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 +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +137 -0
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +500 -0
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_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 +9 -9
- 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 +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +155 -0
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +756 -0
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.png +0 -0
- 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 +169 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +537 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +169 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +547 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +172 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +556 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +75 -22
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +479 -93
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +11 -11
- 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_1ConstraintNode-members.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +57 -21
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +253 -89
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_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 +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +167 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +531 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +165 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +502 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +167 -0
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +577 -0
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +8 -8
- 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 +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +26 -26
- 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_1GenericEdge.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +61 -61
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +57 -22
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +259 -118
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +170 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +752 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_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 +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +27 -27
- 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 +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +27 -27
- 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 +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1LoadMU-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LoadMU.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +57 -21
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +253 -89
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +147 -147
- 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 +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +102 -102
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +24 -23
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +36 -34
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt-members.html +142 -0
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +649 -0
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +165 -0
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +644 -0
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_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 +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +74 -22
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +447 -98
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +55 -55
- 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 +56 -56
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +103 -103
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +68 -68
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +45 -45
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +132 -133
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +759 -777
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +180 -180
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +57 -39
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +82 -82
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +11 -11
- 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_1StoreCHI-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +57 -21
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +260 -89
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_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 +3 -3
- 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 +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +147 -0
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +794 -0
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +42 -42
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +145 -145
- package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +163 -0
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +521 -0
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_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 +139 -0
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +544 -0
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +3 -3
- package/SVF-doxygen/html/html/classes.html +18 -18
- package/SVF-doxygen/html/html/functions_a.html +55 -55
- package/SVF-doxygen/html/html/functions_b.html +2 -2
- package/SVF-doxygen/html/html/functions_c.html +54 -59
- package/SVF-doxygen/html/html/functions_d.html +4 -4
- package/SVF-doxygen/html/html/functions_f.html +5 -5
- package/SVF-doxygen/html/html/functions_func.html +54 -54
- package/SVF-doxygen/html/html/functions_func_b.html +2 -2
- package/SVF-doxygen/html/html/functions_func_c.html +30 -30
- package/SVF-doxygen/html/html/functions_func_d.html +4 -4
- package/SVF-doxygen/html/html/functions_func_f.html +2 -2
- package/SVF-doxygen/html/html/functions_func_g.html +107 -105
- package/SVF-doxygen/html/html/functions_func_h.html +6 -6
- package/SVF-doxygen/html/html/functions_func_l.html +3 -3
- package/SVF-doxygen/html/html/functions_func_n.html +2 -2
- package/SVF-doxygen/html/html/functions_func_o.html +15 -15
- package/SVF-doxygen/html/html/functions_func_p.html +2 -2
- package/SVF-doxygen/html/html/functions_func_s.html +4 -4
- package/SVF-doxygen/html/html/functions_func_t.html +20 -20
- package/SVF-doxygen/html/html/functions_func_u.html +2 -2
- package/SVF-doxygen/html/html/functions_func_v.html +5 -5
- package/SVF-doxygen/html/html/functions_g.html +123 -121
- package/SVF-doxygen/html/html/functions_h.html +6 -6
- package/SVF-doxygen/html/html/functions_i.html +15 -15
- package/SVF-doxygen/html/html/functions_k.html +9 -0
- package/SVF-doxygen/html/html/functions_l.html +12 -12
- package/SVF-doxygen/html/html/functions_m.html +1 -1
- package/SVF-doxygen/html/html/functions_n.html +6 -6
- package/SVF-doxygen/html/html/functions_o.html +32 -35
- package/SVF-doxygen/html/html/functions_p.html +32 -49
- package/SVF-doxygen/html/html/functions_r.html +1 -1
- package/SVF-doxygen/html/html/functions_s.html +33 -14
- package/SVF-doxygen/html/html/functions_t.html +24 -24
- 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_l.html +3 -3
- package/SVF-doxygen/html/html/functions_type_p.html +3 -19
- package/SVF-doxygen/html/html/functions_type_s.html +19 -3
- package/SVF-doxygen/html/html/functions_type_v.html +1 -1
- package/SVF-doxygen/html/html/functions_u.html +2 -2
- package/SVF-doxygen/html/html/functions_v.html +8 -8
- package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_g.html +8 -8
- package/SVF-doxygen/html/html/functions_vars_i.html +9 -9
- package/SVF-doxygen/html/html/functions_vars_k.html +6 -0
- package/SVF-doxygen/html/html/functions_vars_l.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_o.html +3 -4
- 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 +5 -9
- package/SVF-doxygen/html/html/hierarchy.html +65 -65
- package/SVF-doxygen/html/html/namespaceSVF.html +24 -24
- package/SVF-doxygen/html/html/search/all_1.js +39 -39
- package/SVF-doxygen/html/html/search/all_10.js +12 -17
- package/SVF-doxygen/html/html/search/all_12.js +1 -1
- package/SVF-doxygen/html/html/search/all_13.js +17 -12
- package/SVF-doxygen/html/html/search/all_14.js +5 -5
- package/SVF-doxygen/html/html/search/all_15.js +2 -2
- package/SVF-doxygen/html/html/search/all_16.js +5 -5
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_2.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +9 -10
- package/SVF-doxygen/html/html/search/all_4.js +2 -2
- package/SVF-doxygen/html/html/search/all_6.js +4 -4
- package/SVF-doxygen/html/html/search/all_7.js +54 -53
- package/SVF-doxygen/html/html/search/all_8.js +2 -2
- package/SVF-doxygen/html/html/search/all_9.js +4 -4
- package/SVF-doxygen/html/html/search/all_b.js +3 -0
- package/SVF-doxygen/html/html/search/all_c.js +7 -7
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +5 -5
- package/SVF-doxygen/html/html/search/all_f.js +5 -5
- package/SVF-doxygen/html/html/search/classes_0.js +1 -1
- package/SVF-doxygen/html/html/search/classes_1.js +1 -1
- package/SVF-doxygen/html/html/search/classes_11.js +1 -1
- package/SVF-doxygen/html/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/html/search/classes_2.js +5 -5
- package/SVF-doxygen/html/html/search/classes_3.js +2 -2
- package/SVF-doxygen/html/html/search/classes_5.js +1 -1
- package/SVF-doxygen/html/html/search/classes_6.js +2 -2
- package/SVF-doxygen/html/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/html/search/classes_b.js +1 -1
- package/SVF-doxygen/html/html/search/classes_c.js +1 -1
- package/SVF-doxygen/html/html/search/classes_d.js +1 -1
- package/SVF-doxygen/html/html/search/classes_f.js +1 -1
- package/SVF-doxygen/html/html/search/functions_0.js +39 -39
- package/SVF-doxygen/html/html/search/functions_1.js +1 -1
- package/SVF-doxygen/html/html/search/functions_10.js +4 -4
- package/SVF-doxygen/html/html/search/functions_11.js +1 -1
- package/SVF-doxygen/html/html/search/functions_12.js +1 -1
- package/SVF-doxygen/html/html/search/functions_13.js +2 -2
- package/SVF-doxygen/html/html/search/functions_2.js +7 -7
- package/SVF-doxygen/html/html/search/functions_3.js +2 -2
- package/SVF-doxygen/html/html/search/functions_5.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +49 -48
- package/SVF-doxygen/html/html/search/functions_7.js +2 -2
- package/SVF-doxygen/html/html/search/functions_a.js +3 -3
- package/SVF-doxygen/html/html/search/functions_c.js +1 -1
- package/SVF-doxygen/html/html/search/functions_d.js +2 -2
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +7 -3
- 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_b.js +3 -3
- package/SVF-doxygen/html/html/search/typedefs_f.js +3 -7
- 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 +3 -3
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_6.js +1 -1
- package/SVF-doxygen/html/html/search/variables_7.js +4 -4
- package/SVF-doxygen/html/html/search/variables_9.js +4 -4
- package/SVF-doxygen/html/html/search/variables_b.js +3 -1
- package/SVF-doxygen/html/html/search/variables_c.js +1 -1
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +3 -3
- 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_01OfflineConsG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +20 -20
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +1 -1
- 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 +4 -4
- package/include/Graphs/IRGraph.h +7 -7
- package/include/Graphs/VFG.h +13 -13
- package/include/Graphs/VFGNode.h +6 -6
- package/include/MSSA/MSSAMuChi.h +6 -6
- package/include/MSSA/MemRegion.h +11 -11
- package/include/MSSA/MemSSA.h +11 -11
- package/include/MemoryModel/PointerAnalysis.h +9 -9
- package/include/MemoryModel/PointerAnalysisImpl.h +4 -4
- package/include/MemoryModel/SVFIR.h +82 -83
- package/include/MemoryModel/SVFStatements.h +97 -92
- package/include/MemoryModel/SVFVariables.h +71 -71
- package/include/SVF-FE/SVFIRBuilder.h +24 -24
- 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 +6 -6
- package/lib/DDA/DDAClient.cpp +6 -6
- package/lib/DDA/DDAStat.cpp +2 -2
- package/lib/DDA/FlowDDA.cpp +4 -4
- package/lib/Graphs/ConsG.cpp +37 -36
- package/lib/Graphs/ICFG.cpp +4 -4
- package/lib/Graphs/IRGraph.cpp +27 -24
- package/lib/Graphs/OfflineConsG.cpp +8 -8
- package/lib/Graphs/SVFG.cpp +18 -16
- package/lib/Graphs/ThreadCallGraph.cpp +2 -2
- package/lib/Graphs/VFG.cpp +52 -52
- package/lib/MSSA/MemRegion.cpp +23 -23
- package/lib/MSSA/MemSSA.cpp +15 -15
- package/lib/MTA/MTAAnnotator.cpp +5 -5
- package/lib/MemoryModel/PAGBuilderFromFile.cpp +13 -13
- package/lib/MemoryModel/PointerAnalysis.cpp +9 -9
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +14 -14
- package/lib/MemoryModel/SVFIR.cpp +95 -95
- package/lib/MemoryModel/SVFStatements.cpp +24 -24
- package/lib/MemoryModel/SVFVariables.cpp +19 -19
- package/lib/SABER/LeakChecker.cpp +2 -2
- package/lib/SABER/SaberSVFGBuilder.cpp +5 -5
- package/lib/SVF-FE/Graph2Json.cpp +3 -3
- package/lib/SVF-FE/SVFIRBuilder.cpp +22 -22
- package/lib/Util/Options.cpp +6 -0
- package/lib/Util/PTAStat.cpp +8 -8
- package/lib/Util/TypeBasedHeapCloning.cpp +22 -22
- package/lib/WPA/Andersen.cpp +13 -13
- package/lib/WPA/AndersenSFR.cpp +2 -2
- package/lib/WPA/AndersenStat.cpp +6 -6
- package/lib/WPA/FlowSensitive.cpp +8 -8
- package/lib/WPA/FlowSensitiveStat.cpp +4 -4
- package/lib/WPA/FlowSensitiveTBHC.cpp +9 -9
- package/lib/WPA/VersionedFlowSensitive.cpp +2 -2
- package/lib/WPA/VersionedFlowSensitiveStat.cpp +1 -1
- package/package.json +1 -1
|
@@ -66,8 +66,8 @@ $(function() {
|
|
|
66
66
|
<div class="title">VFG.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="VFG_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- VFG.h ----------------------------------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2018> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * VFG.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: 18 Sep. 2018</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifndef INCLUDE_UTIL_VFG_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define INCLUDE_UTIL_VFG_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="SVFIR_8h.html">MemoryModel/SVFIR.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="PTACallGraph_8h.html">Graphs/PTACallGraph.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="VFGNode_8h.html">Graphs/VFGNode.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "<a class="code" href="VFGEdge_8h.html">Graphs/VFGEdge.h</a>"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>PointerAnalysis;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">class </span>VFGStat;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ab4f1d8a6715e791c94970e6f87b18f8f"> 44</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericGraph.html">GenericGraph<VFGNode,VFGEdge></a> <a class="code" href="namespaceSVF.html#ab4f1d8a6715e791c94970e6f87b18f8f">GenericVFGTy</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html"> 50</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1VFG.html">VFG</a> : <span class="keyword">public</span> GenericVFGTy</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6"> 55</a></span>  <span class="keyword">enum</span> <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a8ed0b9aea88fbbbe91f33301bea0c9dd"> 57</a></span>  <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a5a28e6fd51e73e076091d4b6f4e61eaa">FULLSVFG</a>, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6ada8562b20e8d888a4b421c200957294d">PTRONLYSVFG</a>, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6aab1abd6be4a29fe8fb03a82f85e568a0">FULLSVFG_OPT</a>, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a8ed0b9aea88fbbbe91f33301bea0c9dd">PTRONLYSVFG_OPT</a></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab2abe2ba4ac9e3e1d326d042d35acbc0"> 60</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, VFGNode *></a> <a class="code" href="classSVF_1_1VFG.html#ab2abe2ba4ac9e3e1d326d042d35acbc0">VFGNodeIDToNodeMapTy</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a03d388eec513f713f5e0d06f920168db"> 61</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<VFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a03d388eec513f713f5e0d06f920168db">VFGNodeSet</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab9381c54f2339b3738348ae8b0d6659f"> 62</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, NodeID></a> <a class="code" href="classSVF_1_1VFG.html#ab9381c54f2339b3738348ae8b0d6659f">PAGNodeToDefMapTy</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#abec730a1ec61532cd164f3d42aa107b0"> 63</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<std::pair<NodeID,const CallBlockNode*></a>, <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a> *> <a class="code" href="classSVF_1_1VFG.html#abec730a1ec61532cd164f3d42aa107b0">PAGNodeToActualParmMapTy</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a999654aa377639db5c1e40f603e655a7"> 64</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, ActualRetVFGNode *></a> <a class="code" href="classSVF_1_1VFG.html#a999654aa377639db5c1e40f603e655a7">PAGNodeToActualRetMapTy</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6eb72d2fe080def018d09604fe3affcf"> 65</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, FormalParmVFGNode *></a> <a class="code" href="classSVF_1_1VFG.html#a6eb72d2fe080def018d09604fe3affcf">PAGNodeToFormalParmMapTy</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a52dac90d700a2377b657ec34d3ad2241"> 66</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, FormalRetVFGNode *></a> <a class="code" href="classSVF_1_1VFG.html#a52dac90d700a2377b657ec34d3ad2241">PAGNodeToFormalRetMapTy</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab37b067a59b52c472a284eabbeba43ff"> 67</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGEdge*, StmtVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#ab37b067a59b52c472a284eabbeba43ff">PAGEdgeToStmtVFGNodeMapTy</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aeed3eca629b10554f40b1d2b478580d4"> 68</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, IntraPHIVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#aeed3eca629b10554f40b1d2b478580d4">PAGNodeToPHIVFGNodeMapTy</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a7cefa553955e208d6eb4fcd01ed3c383"> 69</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, BinaryOPVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a7cefa553955e208d6eb4fcd01ed3c383">PAGNodeToBinaryOPVFGNodeMapTy</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#acfcd84ac6bedde4e7e74abdeb9233474"> 70</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, UnaryOPVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#acfcd84ac6bedde4e7e74abdeb9233474">PAGNodeToUnaryOPVFGNodeMapTy</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6ec1a8b02ece25aa165699e10fac7991"> 71</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, BranchVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a6ec1a8b02ece25aa165699e10fac7991">PAGNodeToBranchVFGNodeMapTy</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a9c2446f54d3738b6c0e65632a1200ba0"> 72</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, CmpVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a9c2446f54d3738b6c0e65632a1200ba0">PAGNodeToCmpVFGNodeMapTy</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ad63218978f65ab91ae21bc24c882a716"> 73</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFFunction*, VFGNodeSet ></a> <a class="code" href="classSVF_1_1VFG.html#ad63218978f65ab91ae21bc24c882a716">FunToVFGNodesMapTy</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ade3f735b3c7b1a53cab3d67cd9f7b874"> 75</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGNode.html#a43b6b3dc747d310f793ca1b3bfa9d05f">FormalParmVFGNode::CallPESet</a> <a class="code" href="classSVF_1_1VFG.html#ade3f735b3c7b1a53cab3d67cd9f7b874">CallPESet</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#abf966182c28f0521dcd161aa299e453d"> 76</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGNode.html#a367413b90de8a382190ffa9f0c742e01">FormalRetVFGNode::RetPESet</a> <a class="code" href="classSVF_1_1VFG.html#abf966182c28f0521dcd161aa299e453d">RetPESet</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0bdac7337a393ad2e21a33ec1978ca3f"> 77</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGEdge.html#a54e8b1d339da481222292e3b62d1e765">VFGEdge::VFGEdgeSetTy</a> <a class="code" href="classSVF_1_1VFG.html#a0bdac7337a393ad2e21a33ec1978ca3f">VFGEdgeSetTy</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694"> 78</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGEdge.html#a557334ef75bb5479b045f68c27b38701">VFGEdge::SVFGEdgeSetTy</a> <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a3037ca34a555ebdb4fbf0e86291dc4ea"> 79</a></span>  <span class="keyword">typedef</span> VFGEdge::VFGEdgeSetTy::iterator <a class="code" href="classSVF_1_1VFG.html#a3037ca34a555ebdb4fbf0e86291dc4ea">VFGNodeIter</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c"> 80</a></span>  <span class="keyword">typedef</span> VFGNodeIDToNodeMapTy::iterator <a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">iterator</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a225a91c04afac6a8fe198e9860890a52"> 81</a></span>  <span class="keyword">typedef</span> VFGNodeIDToNodeMapTy::const_iterator <a class="code" href="classSVF_1_1VFG.html#a225a91c04afac6a8fe198e9860890a52">const_iterator</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aa22b76d96c028055cb0cc14d7dd0ed2e"> 82</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1IRGraph.html#ae9547730a27575194977b240647e8ce2">SVFIR::PAGEdgeSet</a> <a class="code" href="classSVF_1_1VFG.html#aa22b76d96c028055cb0cc14d7dd0ed2e">PAGEdgeSet</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a113185086912213257b04daa4590bf13"> 83</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const VFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a113185086912213257b04daa4590bf13">GlobalVFGNodeSet</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab12de81e2912f06551ca7a6693f5046b"> 84</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const PAGNode*></a> <a class="code" href="classSVF_1_1VFG.html#ab12de81e2912f06551ca7a6693f5046b">PAGNodeSet</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8"> 88</a></span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac89b3917ed73ac70aac6205af8f7a4fe"> 89</a></span>  PAGNodeToDefMapTy <a class="code" href="classSVF_1_1VFG.html#ac89b3917ed73ac70aac6205af8f7a4fe">PAGNodeToDefMap</a>; </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a8b256a40e690f31b7a56308d55bad45a"> 90</a></span>  PAGNodeToActualParmMapTy <a class="code" href="classSVF_1_1VFG.html#a8b256a40e690f31b7a56308d55bad45a">PAGNodeToActualParmMap</a>; </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a28c5f7e331a437e09682b972769acf66"> 91</a></span>  PAGNodeToActualRetMapTy <a class="code" href="classSVF_1_1VFG.html#a28c5f7e331a437e09682b972769acf66">PAGNodeToActualRetMap</a>; </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ad014bc47ceba578c368da19e2d86b8f8"> 92</a></span>  PAGNodeToFormalParmMapTy <a class="code" href="classSVF_1_1VFG.html#ad014bc47ceba578c368da19e2d86b8f8">PAGNodeToFormalParmMap</a>; </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a190a59a119215dbb2556735ba3213a2a"> 93</a></span>  PAGNodeToFormalRetMapTy <a class="code" href="classSVF_1_1VFG.html#a190a59a119215dbb2556735ba3213a2a">PAGNodeToFormalRetMap</a>; </div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a598bc7a6863a6eccc3e089b63e9add17"> 94</a></span>  PAGNodeToPHIVFGNodeMapTy <a class="code" href="classSVF_1_1VFG.html#a598bc7a6863a6eccc3e089b63e9add17">PAGNodeToIntraPHIVFGNodeMap</a>; </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0f554fd778b338cbd7e4272eaefc96f6"> 95</a></span>  PAGNodeToBinaryOPVFGNodeMapTy <a class="code" href="classSVF_1_1VFG.html#a0f554fd778b338cbd7e4272eaefc96f6">PAGNodeToBinaryOPVFGNodeMap</a>; </div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac7083aa233d8e3820d6eb8e922f0c051"> 96</a></span>  PAGNodeToUnaryOPVFGNodeMapTy <a class="code" href="classSVF_1_1VFG.html#ac7083aa233d8e3820d6eb8e922f0c051">PAGNodeToUnaryOPVFGNodeMap</a>; </div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#af8c8d0eb778a2a94a33c0b97ee3704c1"> 97</a></span>  PAGNodeToBranchVFGNodeMapTy <a class="code" href="classSVF_1_1VFG.html#af8c8d0eb778a2a94a33c0b97ee3704c1">PAGNodeToBranchVFGNodeMap</a>; </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a9a16c7a7b0df273c1dcbe6ba3aef8fde"> 98</a></span>  PAGNodeToCmpVFGNodeMapTy <a class="code" href="classSVF_1_1VFG.html#a9a16c7a7b0df273c1dcbe6ba3aef8fde">PAGNodeToCmpVFGNodeMap</a>; </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a462fe6eefc55a436f90f91adeb34726f"> 99</a></span>  PAGEdgeToStmtVFGNodeMapTy <a class="code" href="classSVF_1_1VFG.html#a462fe6eefc55a436f90f91adeb34726f">PAGEdgeToStmtVFGNodeMap</a>; </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a9a99ae86d16ffe69bff9d52de769d049"> 100</a></span>  FunToVFGNodesMapTy <a class="code" href="classSVF_1_1VFG.html#a9a99ae86d16ffe69bff9d52de769d049">funToVFGNodesMap</a>; </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3"> 102</a></span>  GlobalVFGNodeSet <a class="code" href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3">globalVFGNodes</a>; </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0c8cf98b652b5eb97d22e2636576f92f"> 103</a></span>  <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1VFG.html#a0c8cf98b652b5eb97d22e2636576f92f">callgraph</a>;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a"> 104</a></span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f"> 105</a></span>  <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a> <a class="code" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f">kind</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#af5005136743913d760d7402bbd308c69">destroy</a>();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="classSVF_1_1VFG.html#a8ba98bb3d888ec5ff40f511da14b37bc">VFG</a>(<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* callgraph, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a> k = <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a5a28e6fd51e73e076091d4b6f4e61eaa">FULLSVFG</a>);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a66f439ffebda7a81925514b77199154b"> 115</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1VFG.html#a66f439ffebda7a81925514b77199154b">~VFG</a>()</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classSVF_1_1VFG.html#af5005136743913d760d7402bbd308c69">destroy</a>();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ad63c3c11162ba107a6338fb24f9018d7"> 121</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a> <a class="code" href="classSVF_1_1VFG.html#ad63c3c11162ba107a6338fb24f9018d7">getKind</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a3867c591a231bad0aa2e6ab7c095a42f">kind</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a268ec1495cbe4adb51fa50d28a4cba3d"> 127</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a268ec1495cbe4adb51fa50d28a4cba3d">isPtrOnlySVFG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> (kind == <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6ada8562b20e8d888a4b421c200957294d">PTRONLYSVFG</a>) || (kind == <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a8ed0b9aea88fbbbe91f33301bea0c9dd">PTRONLYSVFG_OPT</a>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a7622e381fbc1601b3f9a8384df2751bd"> 133</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1VFG.html#a7622e381fbc1601b3f9a8384df2751bd">getPAG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a1693ccdb6c1b57418316c29cde05cad2"> 139</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1VFG.html#a1693ccdb6c1b57418316c29cde05cad2">getCallGraph</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a0c8cf98b652b5eb97d22e2636576f92f">callgraph</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc"> 145</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a30eb9d717ad5bc8a9109a7bdef38f4a1"> 151</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a30eb9d717ad5bc8a9109a7bdef38f4a1">hasVFGNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericGraph.html#a6885064afa211958af7b73f0233284e5">hasGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aff291586a4b0c28a6939577d39de5d0a"> 156</a></span>  <span class="keyword">inline</span> GlobalVFGNodeSet& <a class="code" href="classSVF_1_1VFG.html#aff291586a4b0c28a6939577d39de5d0a">getGlobalVFGNodes</a>()</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3">globalVFGNodes</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">getIntraVFGEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> kind);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aee3d0c4ed32bde425f33281f248b7dd2">dump</a>(<span class="keyword">const</span> std::string& file, <span class="keywordtype">bool</span> simple = <span class="keyword">false</span>);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ae4350f68e960bfef87f44587628b1929">view</a>();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a0c0a7c8f0bd27bc9e88ce54c0809b11b">updateCallGraph</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aa1e09df7b3724bf18e450b16735998ab">connectCallerAndCallee</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, VFGEdgeSetTy& edges);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728"> 178</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1VFG.html#a9bc8e7ee74b652ed7708e95c16a63728">getCallSiteID</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)<span class="keyword"> const</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">return</span> callgraph-><a class="code" href="classSVF_1_1PTACallGraph.html#afb2daec804e81f0beb72fbc805d1c82a">getCallSiteID</a>(cs, func);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#af04068b6f6beff961f815cc6eae7f5b0"> 182</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* <a class="code" href="classSVF_1_1VFG.html#af04068b6f6beff961f815cc6eae7f5b0">getCallSite</a>(<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> callgraph-><a class="code" href="classSVF_1_1PTACallGraph.html#a2c8b1674f1f942a3b5aa77b7abccb229">getCallSite</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ad28caacede7ab7f3a6676e37655ee84e"> 189</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#ad28caacede7ab7f3a6676e37655ee84e">getDefVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(pagNode));</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">// Given an VFG node, return its left hand side top level pointer (PAGnode)</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a1fff5a365e5aa2d99f07f7f64cc35fac">getLHSTopLevPtr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* node) <span class="keyword">const</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a32b1586d326fbe47080bd1fa2d3270e6"> 199</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a32b1586d326fbe47080bd1fa2d3270e6">getStmtVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* pagEdge)<span class="keyword"> const</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  PAGEdgeToStmtVFGNodeMapTy::const_iterator it = PAGEdgeToStmtVFGNodeMap.find(pagEdge);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != PAGEdgeToStmtVFGNodeMap.end() && <span class="stringliteral">"StmtVFGNode can not be found??"</span>);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a688c0cc4a67c7cd9afbef2f0c264c85b"> 205</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1IntraPHIVFGNode.html">IntraPHIVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a688c0cc4a67c7cd9afbef2f0c264c85b">getIntraPHIVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  PAGNodeToPHIVFGNodeMapTy::const_iterator it = PAGNodeToIntraPHIVFGNodeMap.find(pagNode);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != PAGNodeToIntraPHIVFGNodeMap.end() && <span class="stringliteral">"PHIVFGNode can not be found??"</span>);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a27bd4d5ba75d65056d77882869b0c64d"> 211</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a27bd4d5ba75d65056d77882869b0c64d">getBinaryOPVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  PAGNodeToBinaryOPVFGNodeMapTy::const_iterator it = PAGNodeToBinaryOPVFGNodeMap.find(pagNode);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != PAGNodeToBinaryOPVFGNodeMap.end() && <span class="stringliteral">"BinaryOPVFGNode can not be found??"</span>);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a1ba67eb17437a1a47c230614c1e3d9fd"> 217</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a1ba67eb17437a1a47c230614c1e3d9fd">getUnaryOPVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  PAGNodeToUnaryOPVFGNodeMapTy::const_iterator it = PAGNodeToUnaryOPVFGNodeMap.find(pagNode);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != PAGNodeToUnaryOPVFGNodeMap.end() && <span class="stringliteral">"UnaryOPVFGNode can not be found??"</span>);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a47609382fcd9ef36706e1d0f0531a843"> 223</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1BranchVFGNode.html">BranchVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a47609382fcd9ef36706e1d0f0531a843">getBranchVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  PAGNodeToBranchVFGNodeMapTy::const_iterator it = PAGNodeToBranchVFGNodeMap.find(pagNode);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != PAGNodeToBranchVFGNodeMap.end() && <span class="stringliteral">"BranchVFGNode can not be found??"</span>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a9215c1d7f1152967f0731057a085e793"> 229</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a9215c1d7f1152967f0731057a085e793">getCmpVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  PAGNodeToCmpVFGNodeMapTy::const_iterator it = PAGNodeToCmpVFGNodeMap.find(pagNode);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != PAGNodeToCmpVFGNodeMap.end() && <span class="stringliteral">"CmpVFGNode can not be found??"</span>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a01b8694a5ab7acf8df0213225550791b"> 235</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a01b8694a5ab7acf8df0213225550791b">getActualParmVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* aparm,<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  PAGNodeToActualParmMapTy::const_iterator it = PAGNodeToActualParmMap.find(std::make_pair(aparm-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),cs));</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=PAGNodeToActualParmMap.end() && <span class="stringliteral">"actual parameter VFG node can not be found??"</span>);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0b072e8e45899b89da0a466140563c38"> 241</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a0b072e8e45899b89da0a466140563c38">getActualRetVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* aret)<span class="keyword"> const</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  PAGNodeToActualRetMapTy::const_iterator it = PAGNodeToActualRetMap.find(aret);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=PAGNodeToActualRetMap.end() && <span class="stringliteral">"actual return VFG node can not be found??"</span>);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a75eb519e4f89a116db98fccb263af4d6"> 247</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#a75eb519e4f89a116db98fccb263af4d6">getFormalParmVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fparm)<span class="keyword"> const</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  PAGNodeToFormalParmMapTy::const_iterator it = PAGNodeToFormalParmMap.find(fparm);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=PAGNodeToFormalParmMap.end() && <span class="stringliteral">"formal parameter VFG node can not be found??"</span>);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab7ba9d179504165f277d347a7cb9f5d8"> 253</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>* <a class="code" href="classSVF_1_1VFG.html#ab7ba9d179504165f277d347a7cb9f5d8">getFormalRetVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fret)<span class="keyword"> const</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  PAGNodeToFormalRetMapTy::const_iterator it = PAGNodeToFormalRetMap.find(fret);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=PAGNodeToFormalRetMap.end() && <span class="stringliteral">"formal return VFG node can not be found??"</span>);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1VFG.html#a8994194bca2edfd9528880390de795ab">isFunEntryVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* node) <span class="keyword">const</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a88f6468b9b43bbb06ef757d884580a50"> 265</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a88f6468b9b43bbb06ef757d884580a50">hasBlackHoleConstObjAddrAsDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4">hasDef</a>(pagNode))</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* defNode = <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(pagNode));</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrVFGNode.html">AddrVFGNode</a>* addr = SVFUtil::dyn_cast<AddrVFGNode>(defNode))</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()->isBlkObjOrConstantObj(addr->getPAGEdge()->getSrcID()))</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyVFGNode.html">CopyVFGNode</a>* copy = SVFUtil::dyn_cast<CopyVFGNode>(defNode))</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-><a class="code" href="classSVF_1_1SVFIR.html#a18ca66c199b910b15f1bfa77dcc98c30">isNullPtr</a>(copy->getPAGEdge()->getSrcID()))</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a18ec674e8ab0285ec086df87e5c591c9"> 286</a></span>  <span class="keyword">inline</span> VFGNodeSet& <a class="code" href="classSVF_1_1VFG.html#a18ec674e8ab0285ec086df87e5c591c9">getVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun) {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">return</span> funToVFGNodesMap[fun];</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a76af43e28630eb56a1aa5971f516d43d"> 289</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a76af43e28630eb56a1aa5971f516d43d">hasVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun)<span class="keyword"> const </span>{</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">return</span> funToVFGNodesMap.find(fun) != funToVFGNodesMap.end();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a43f4002b0beb00ed2026f7edd9ebbb1c"> 292</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a43f4002b0beb00ed2026f7edd9ebbb1c">VFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun)<span class="keyword"> const </span>{</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">return</span> funToVFGNodesMap.find(fun) != funToVFGNodesMap.end();</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a5166be2c1231a93c9b9ce5f272797b94"> 295</a></span>  <span class="keyword">inline</span> VFGNodeSet::const_iterator <a class="code" href="classSVF_1_1VFG.html#a5166be2c1231a93c9b9ce5f272797b94">getVFGNodeBegin</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun)<span class="keyword"> const </span>{</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  FunToVFGNodesMapTy::const_iterator it = funToVFGNodesMap.find(fun);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != funToVFGNodesMap.end() && <span class="stringliteral">"this function does not have any VFGNode"</span>);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">return</span> it->second.begin();</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a28f2bdcbbc0bab00e93df62ea11647a2"> 300</a></span>  <span class="keyword">inline</span> VFGNodeSet::const_iterator <a class="code" href="classSVF_1_1VFG.html#a28f2bdcbbc0bab00e93df62ea11647a2">getVFGNodeEnd</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun)<span class="keyword"> const </span>{</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  FunToVFGNodesMapTy::const_iterator it = funToVFGNodesMap.find(fun);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != funToVFGNodesMap.end() && <span class="stringliteral">"this function does not have any VFGNode"</span>);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">return</span> it->second.end();</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#aa01f63b17acdd52122a7f1ade329ccea">addCallEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2">addRetEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aeb24b155fe31813b2e6dc0564f55738a"> 314</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aeb24b155fe31813b2e6dc0564f55738a">removeVFGEdge</a>(<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->removeIncomingEdge(edge);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->removeOutgoingEdge(edge);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keyword">delete</span> edge;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  }</div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a122aa5ad874170ef644cee8705f1ef3e"> 321</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a122aa5ad874170ef644cee8705f1ef3e">removeVFGNode</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* node)</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <a class="code" href="classSVF_1_1GenericGraph.html#a1817b65e76052f11e36a67d6b9efd915">removeGNode</a>(node);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#ac34c4529229404617c346f81cc6c141f">hasIntraVFGEdge</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> kind);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> kind, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#aead3b463d9aa2fae5845d97896bd18ba">hasThreadVFGEdge</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* src, <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* dst, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5">VFGEdge::VFGEdgeK</a> kind);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a84cf5facb15e1d598c2527fba0c7634d"> 334</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a84cf5facb15e1d598c2527fba0c7634d">addVFGEdge</a>(<a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge)</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordtype">bool</span> added1 = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->addIncomingEdge(edge);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordtype">bool</span> added2 = edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->addOutgoingEdge(edge);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(added1 && added2 && <span class="stringliteral">"edge not added??"</span>);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a43b0c126c2e32cb3d286a78b14e09a96"> 345</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a43b0c126c2e32cb3d286a78b14e09a96">checkIntraEdgeParents</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a> *srcNode, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a> *dstNode)</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *srcfun = srcNode-><a class="code" href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">getFun</a>();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *dstfun = dstNode-><a class="code" href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">getFun</a>();</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">if</span>(srcfun != <span class="keyword">nullptr</span> && dstfun != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((srcfun == dstfun) && <span class="stringliteral">"src and dst nodes of an intra VFG edge are not in the same function?"</span>);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6fd24c001a6daedf591974ba27140461"> 356</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a6fd24c001a6daedf591974ba27140461">addInterEdgeFromAPToFP</a>(<a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* src, <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* dst, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId)</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#aa01f63b17acdd52122a7f1ade329ccea">addCallEdge</a>(src-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dst-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),csId);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  }</div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#abd05b599b383c759455aff99963b7b41"> 361</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#abd05b599b383c759455aff99963b7b41">addInterEdgeFromFRToAR</a>(<a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>* src, <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* dst, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId)</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2">addRetEdge</a>(src-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dst-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),csId);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a185ed4079babc0e0f72c4bf223342ee2"> 367</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a185ed4079babc0e0f72c4bf223342ee2">addInterEdgeFromAPToFP</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId)</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#aa01f63b17acdd52122a7f1ade329ccea">addCallEdge</a>(src,dst,csId);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  }</div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a4ac1cd5f79c9e33ae599f7eb942a6e01"> 372</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* <a class="code" href="classSVF_1_1VFG.html#a4ac1cd5f79c9e33ae599f7eb942a6e01">addInterEdgeFromFRToAR</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId)</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a27ac8d60de7be75e831b4a28f8f8f1d2">addRetEdge</a>(src,dst,csId);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#acbc1f5ae3b9016b1ce97314a2b8b54c0">connectAParamAndFParam</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* csArg, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* funArg, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cbn, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, VFGEdgeSetTy& edges)</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> actualParam = <a class="code" href="classSVF_1_1VFG.html#a01b8694a5ab7acf8df0213225550791b">getActualParmVFGNode</a>(csArg, cbn)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> formalParam = <a class="code" href="classSVF_1_1VFG.html#a75eb519e4f89a116db98fccb263af4d6">getFormalParmVFGNode</a>(funArg)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#a6fd24c001a6daedf591974ba27140461">addInterEdgeFromAPToFP</a>(actualParam, formalParam,csId);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  edges.insert(edge);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }</div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab4e8ab307ad6beb46812a60ebd31ae3b"> 389</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ab4e8ab307ad6beb46812a60ebd31ae3b">connectFRetAndARet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* funReturn, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* csReturn, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, VFGEdgeSetTy& edges)</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> formalRet = <a class="code" href="classSVF_1_1VFG.html#ab7ba9d179504165f277d347a7cb9f5d8">getFormalRetVFGNode</a>(funReturn)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> actualRet = <a class="code" href="classSVF_1_1VFG.html#a0b072e8e45899b89da0a466140563c38">getActualRetVFGNode</a>(csReturn)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#abd05b599b383c759455aff99963b7b41">addInterEdgeFromFRToAR</a>(formalRet, actualRet,csId);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  edges.insert(edge);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> </div><div class="line"><a name="l00401"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660"> 401</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* node)</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  PAGNodeToDefMapTy::iterator it = PAGNodeToDefMap.find(pagNode);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">if</span>(it == PAGNodeToDefMap.end())</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  PAGNodeToDefMap[pagNode] = node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1VFG.html#a30eb9d717ad5bc8a9109a7bdef38f4a1">hasVFGNode</a>(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) && <span class="stringliteral">"not in the map!!"</span>);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((it->second == node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) && <span class="stringliteral">"a SVFIR node can only have unique definition "</span>);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  }</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  }</div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650"> 414</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">getDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  PAGNodeToDefMapTy::const_iterator it = PAGNodeToDefMap.find(pagNode);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=PAGNodeToDefMap.end() && <span class="stringliteral">"SVFIR node does not have a definition??"</span>);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  }</div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4"> 420</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4">hasDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">return</span> (PAGNodeToDefMap.find(pagNode) != PAGNodeToDefMap.end());</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a3544cc0380964f238c964a0e7b417862">addVFGNodes</a>();</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> </div><div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682"> 430</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">PAGEdge::PAGEdgeSetTy</a>& <a class="code" href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">PAGEdge::PEDGEK</a> kind)</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a268ec1495cbe4adb51fa50d28a4cba3d">isPtrOnlySVFG</a>())</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">return</span> pag-><a class="code" href="classSVF_1_1SVFIR.html#a9c33009dc1aa3e16adfd34effd4471f6">getPTAEdgeSet</a>(kind);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">return</span> pag-><a class="code" href="classSVF_1_1SVFIR.html#ac2dff0e76e4ee879dc023255e7e6a63e">getEdgeSet</a>(kind);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  }</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div><div class="line"><a name="l00438"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a"> 438</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a0b71873131a63eb6ee47ed2f66e3154a">isInterestedPAGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a268ec1495cbe4adb51fa50d28a4cba3d">isPtrOnlySVFG</a>())</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>();</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#adedaba0713164e10ce6273b2947535e0">connectDirectVFGEdges</a>();</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> </div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ab1f4c2765af027e903634d5262aea80b">addVFGInterEdges</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> </div><div class="line"><a name="l00452"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a8ddf15d89a1b11a7f7720b671f4f0295"> 452</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VFG.html#a8ddf15d89a1b11a7f7720b671f4f0295">isPhiCopyEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* copy)<span class="keyword"> const</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordflow">return</span> pag-><a class="code" href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff">isPhiNode</a>(copy-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>());</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383"> 458</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(<a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* vfgNode, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode)</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <a class="code" href="classSVF_1_1GenericGraph.html#a0a8831a5429005ff9d71adbd6bf3994f">addGNode</a>(vfgNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), vfgNode);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  vfgNode-><a class="code" href="classSVF_1_1VFGNode.html#a9c95dd4f0e70ccc4a03282cdddba95de">setICFGNode</a>(icfgNode);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  icfgNode-><a class="code" href="classSVF_1_1ICFGNode.html#aff18898b9bbd85d08b00d64d48eea6a5">addVFGNode</a>(vfgNode);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = icfgNode-><a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>())</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  funToVFGNodesMap[fun].insert(vfgNode);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  globalVFGNodes.insert(vfgNode);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  }</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> </div><div class="line"><a name="l00471"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927"> 471</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">addStmtVFGNode</a>(<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* node, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* pagEdge)</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(PAGEdgeToStmtVFGNodeMap.find(pagEdge)==PAGEdgeToStmtVFGNodeMap.end() && <span class="stringliteral">"should not insert twice!"</span>);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  PAGEdgeToStmtVFGNodeMap[pagEdge] = node;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(node, pagEdge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  }</div><div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a59bc855eb8591d88e0898e14d4f4b607"> 479</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a59bc855eb8591d88e0898e14d4f4b607">addNullPtrVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="classSVF_1_1NullPtrVFGNode.html">NullPtrVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1NullPtrVFGNode.html">NullPtrVFGNode</a>(totalVFGNode++,pagNode);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode, pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#ae3b8f1b45c75b5fc231da76d3a49ad57">getGlobalBlockNode</a>());</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(pagNode,sNode);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  }</div><div class="line"><a name="l00486"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a7b0d533f3ccce8fc64deae6077f3d959"> 486</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a7b0d533f3ccce8fc64deae6077f3d959">addAddrVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrPE.html">AddrPE</a>* addr)</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <a class="code" href="classSVF_1_1AddrVFGNode.html">AddrVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AddrVFGNode.html">AddrVFGNode</a>(totalVFGNode++,addr);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <a class="code" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">addStmtVFGNode</a>(sNode, addr);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(addr-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(),sNode);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  }</div><div class="line"><a name="l00493"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#afd664fad8aec173f4ed6c4aa588e5c46"> 493</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#afd664fad8aec173f4ed6c4aa588e5c46">addCopyVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyPE.html">CopyPE</a>* copy)</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <a class="code" href="classSVF_1_1CopyVFGNode.html">CopyVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CopyVFGNode.html">CopyVFGNode</a>(totalVFGNode++,copy);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <a class="code" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">addStmtVFGNode</a>(sNode, copy);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(copy-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(),sNode);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  }</div><div class="line"><a name="l00500"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a51b3b232ddda0656bfe0c7d9527b4a84"> 500</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a51b3b232ddda0656bfe0c7d9527b4a84">addGepVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepPE.html">GepPE</a>* gep)</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  {</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <a class="code" href="classSVF_1_1GepVFGNode.html">GepVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GepVFGNode.html">GepVFGNode</a>(totalVFGNode++,gep);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <a class="code" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">addStmtVFGNode</a>(sNode, gep);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(gep-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(),sNode);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  }</div><div class="line"><a name="l00507"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#adbd7966d18ab50da5a485ba6e043ba61"> 507</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#adbd7966d18ab50da5a485ba6e043ba61">addLoadVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadPE.html">LoadPE</a>* load)</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadVFGNode</a>(totalVFGNode++,load);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <a class="code" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">addStmtVFGNode</a>(sNode, load);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(load-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>(),sNode);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  }</div><div class="line"><a name="l00515"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aa21ad616306c111b77fb3ec8f16b19be"> 515</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aa21ad616306c111b77fb3ec8f16b19be">addStoreVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StorePE.html">StorePE</a>* store)</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  {</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreVFGNode</a>(totalVFGNode++,store);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <a class="code" href="classSVF_1_1VFG.html#a6d2a20830533ee40a5757e58e127f927">addStmtVFGNode</a>(sNode, store);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  }</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div><div class="line"><a name="l00524"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0fabca3c0f9bebe23f66a914dbb99e39"> 524</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a0fabca3c0f9bebe23f66a914dbb99e39">addActualParmVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* aparm, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>(totalVFGNode++,aparm,cs);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode, pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">getCallBlockNode</a>(cs-><a class="code" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">getCallSite</a>()));</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  PAGNodeToActualParmMap[std::make_pair(aparm-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),cs)] = sNode;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div><div class="line"><a name="l00532"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#afdb1560eecf692fb646d412dc760088d"> 532</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#afdb1560eecf692fb646d412dc760088d">addFormalParmVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fparm, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, CallPESet& callPEs)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>(totalVFGNode++,fparm,fun);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode, pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#ae1ef14cdda27a2062c4c454750444108">getFunEntryBlockNode</a>(fun));</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">for</span>(CallPESet::const_iterator it = callPEs.begin(), eit=callPEs.end();</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  it!=eit; ++it)</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  sNode-><a class="code" href="classSVF_1_1FormalParmVFGNode.html#af0dfc7f8b58d5bc0e47c6ad17216cc1e">addCallPE</a>(*it);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(fparm,sNode);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  PAGNodeToFormalParmMap[fparm] = sNode;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  }</div><div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aae3bddc73e39d96fcc97d56ea3dec373"> 546</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aae3bddc73e39d96fcc97d56ea3dec373">addFormalRetVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* uniqueFunRet, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, RetPESet& retPEs)</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a> *sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>(totalVFGNode++, uniqueFunRet, fun);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode, pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#aa33426d57dc150956902945a17a29bcb">getFunExitBlockNode</a>(fun));</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">for</span> (RetPESet::const_iterator it = retPEs.begin(), eit = retPEs.end(); it != eit; ++it)</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  sNode-><a class="code" href="classSVF_1_1FormalRetVFGNode.html#a051f7dc0da465d7ce0dc733d9a8fae6a">addRetPE</a>(*it);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> </div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  PAGNodeToFormalRetMap[uniqueFunRet] = sNode;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">if</span> (!pag-><a class="code" href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff">isPhiNode</a>(uniqueFunRet)){</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  std::string warn = fun-><a class="code" href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">getName</a>().str();</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVFUtil::writeWrnMsg</a>(warn + <span class="stringliteral">" does not have any ret instruction!"</span>);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(uniqueFunRet, sNode);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  }</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  }</div><div class="line"><a name="l00564"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a71022c8953e89e21b017936286f12251"> 564</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a71022c8953e89e21b017936286f12251">addActualRetVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* ret,<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>(totalVFGNode++,ret,cs);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode, pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a6d66c83cb1656d0f8ec8b8b65a9e9c41">getRetBlockNode</a>(cs-><a class="code" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">getCallSite</a>()));</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(ret,sNode);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  PAGNodeToActualRetMap[ret] = sNode;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  }</div><div class="line"><a name="l00572"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aba0389fbcac1efab08339b53d149bf84"> 572</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#aba0389fbcac1efab08339b53d149bf84">addIntraPHIVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiPE.html">PhiPE</a>* edge)</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <a class="code" href="classSVF_1_1IntraPHIVFGNode.html">IntraPHIVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraPHIVFGNode.html">IntraPHIVFGNode</a>(totalVFGNode++,edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>());</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = 0;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> var : edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>())</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  sNode-><a class="code" href="classSVF_1_1IntraPHIVFGNode.html#a7e5fd83393224ece808de83cbf496882">setOpVerAndBB</a>(pos, var, edge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  pos++;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  }</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode,edge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>(),sNode);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  PAGNodeToIntraPHIVFGNodeMap[edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()] = sNode;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  }</div><div class="line"><a name="l00586"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab4166804d4612c1cf194d1d8710c09a6"> 586</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ab4166804d4612c1cf194d1d8710c09a6">addCmpVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpPE.html">CmpPE</a>* edge)</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>(totalVFGNode++, edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>());</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = 0;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> var : edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>())</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  {</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  sNode-><a class="code" href="classSVF_1_1CmpVFGNode.html#a41bcdd6b46a31c8d15533342478dc236">setOpVer</a>(pos, var);</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  pos++;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  }</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode,edge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>(),sNode);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  PAGNodeToCmpVFGNodeMap[edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()] = sNode;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  }</div><div class="line"><a name="l00600"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#afb440e02353766c2a2541005dd29fb24"> 600</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#afb440e02353766c2a2541005dd29fb24">addBinaryOPVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPPE.html">BinaryOPPE</a>* edge)</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>(totalVFGNode++, edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>());</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = 0;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> var : edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>())</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  sNode-><a class="code" href="classSVF_1_1BinaryOPVFGNode.html#a76c67d31ffb67c4ef102471898ae2709">setOpVer</a>(pos, var);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  pos++;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode,edge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>(),sNode);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  PAGNodeToBinaryOPVFGNodeMap[edge-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a00a14ad8f49912b876fd9d729fea4601">getRes</a>()] = sNode;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  }</div><div class="line"><a name="l00614"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ae746db691e5c96dff1d590b109bffb7f"> 614</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#ae746db691e5c96dff1d590b109bffb7f">addUnaryOPVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPPE.html">UnaryOPPE</a>* edge)</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>(totalVFGNode++, edge-><a class="code" href="classSVF_1_1UnaryOPPE.html#a80eb6a6681caf7407d7e16b36d7cb658">getRes</a>());</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  sNode-><a class="code" href="classSVF_1_1UnaryOPVFGNode.html#a3b082eef98b8393499908f6c430b8d6c">setOpVer</a>(0, edge-><a class="code" href="classSVF_1_1UnaryOPPE.html#a9e1afd73d1cd1f03e6e4e46cce5f1a64">getOpVar</a>());</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode,edge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(edge-><a class="code" href="classSVF_1_1UnaryOPPE.html#a80eb6a6681caf7407d7e16b36d7cb658">getRes</a>(),sNode);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  PAGNodeToUnaryOPVFGNodeMap[edge-><a class="code" href="classSVF_1_1UnaryOPPE.html#a80eb6a6681caf7407d7e16b36d7cb658">getRes</a>()] = sNode;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  }</div><div class="line"><a name="l00623"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a18afc4baf33eb700e0510928016019f5"> 623</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1VFG.html#a18afc4baf33eb700e0510928016019f5">addBranchVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>* edge)</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <a class="code" href="classSVF_1_1BranchVFGNode.html">BranchVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BranchVFGNode.html">BranchVFGNode</a>(totalVFGNode++, edge);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(sNode,edge-><a class="code" href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">getICFGNode</a>());</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">setDef</a>(edge-><a class="code" href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b">getBranchInst</a>(),sNode);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  PAGNodeToBranchVFGNodeMap[edge-><a class="code" href="classSVF_1_1BranchStmt.html#a2c6fe09027838f9e0ad9ab8193ce8e9b">getBranchInst</a>()] = sNode;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  }</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> };</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span> </div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> </div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="keyword">namespace </span><a class="code" href="namespacellvm.html">llvm</a></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> {</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="comment">/* !</span></div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="comment"> * GraphTraits specializations for generic graph algorithms.</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> <span class="comment"> * Provide graph traits for traversing from a constraint node using standard graph traversals.</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="comment"> */</span></div><div class="line"><a name="l00640"></a><span class="lineno"><a class="line" href="structllvm_1_1GraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.html"> 640</a></span> <span class="keyword">template</span><> <span class="keyword">struct </span>GraphTraits<<a class="code" href="namespaceSVF.html">SVF</a>::VFGNode*> : <span class="keyword">public</span> GraphTraits<SVF::GenericNode<SVF::VFGNode,SVF::VFGEdge>* ></div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> };</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> </div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> <span class="keyword">template</span><></div><div class="line"><a name="l00646"></a><span class="lineno"><a class="line" href="structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.html"> 646</a></span> <span class="keyword">struct </span>GraphTraits<Inverse<SVF::VFGNode *> > : <span class="keyword">public</span> GraphTraits<Inverse<SVF::GenericNode<SVF::VFGNode,SVF::VFGEdge>* > ></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> {</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> };</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> </div><div class="line"><a name="l00650"></a><span class="lineno"><a class="line" href="structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4.html"> 650</a></span> <span class="keyword">template</span><> <span class="keyword">struct </span>GraphTraits<SVF::<a class="code" href="classSVF_1_1VFG.html#a8ba98bb3d888ec5ff40f511da14b37bc">VFG</a>*> : <span class="keyword">public</span> GraphTraits<SVF::GenericGraph<SVF::VFGNode,SVF::VFGEdge>* ></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span> {</div><div class="line"><a name="l00652"></a><span class="lineno"><a class="line" href="structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4.html#a0c6c42e5f1f75e34d71c39996f50e5b2"> 652</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGNode.html">SVF::VFGNode</a> *<a class="code" href="structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4.html#a0c6c42e5f1f75e34d71c39996f50e5b2">NodeRef</a>;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span> };</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> </div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> } <span class="comment">// End namespace llvm</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> </div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="preprocessor">#endif </span><span class="comment">/* INCLUDE_UTIL_VFG_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1VFG_html_a8b256a40e690f31b7a56308d55bad45a"><div class="ttname"><a href="classSVF_1_1VFG.html#a8b256a40e690f31b7a56308d55bad45a">SVF::VFG::PAGNodeToActualParmMap</a></div><div class="ttdeci">PAGNodeToActualParmMapTy PAGNodeToActualParmMap</div><div class="ttdoc">map a PAGNode to an actual parameter </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00090">VFG.h:90</a></div></div>
|
|
70
|
-
<div class="ttc" id="
|
|
69
|
+
<a href="VFG_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- VFG.h ----------------------------------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2018> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * VFG.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: 18 Sep. 2018</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifndef INCLUDE_UTIL_VFG_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define INCLUDE_UTIL_VFG_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="SVFIR_8h.html">MemoryModel/SVFIR.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="PTACallGraph_8h.html">Graphs/PTACallGraph.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="VFGNode_8h.html">Graphs/VFGNode.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "<a class="code" href="VFGEdge_8h.html">Graphs/VFGEdge.h</a>"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>PointerAnalysis;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">class </span>VFGStat;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ab4f1d8a6715e791c94970e6f87b18f8f"> 44</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericGraph.html">GenericGraph<VFGNode,VFGEdge></a> <a class="code" href="namespaceSVF.html#ab4f1d8a6715e791c94970e6f87b18f8f">GenericVFGTy</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html"> 50</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1VFG.html">VFG</a> : <span class="keyword">public</span> GenericVFGTy</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6"> 55</a></span>  <span class="keyword">enum</span> <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a8ed0b9aea88fbbbe91f33301bea0c9dd"> 57</a></span>  <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a5a28e6fd51e73e076091d4b6f4e61eaa">FULLSVFG</a>, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6ada8562b20e8d888a4b421c200957294d">PTRONLYSVFG</a>, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6aab1abd6be4a29fe8fb03a82f85e568a0">FULLSVFG_OPT</a>, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a8ed0b9aea88fbbbe91f33301bea0c9dd">PTRONLYSVFG_OPT</a></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab2abe2ba4ac9e3e1d326d042d35acbc0"> 60</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, VFGNode *></a> <a class="code" href="classSVF_1_1VFG.html#ab2abe2ba4ac9e3e1d326d042d35acbc0">VFGNodeIDToNodeMapTy</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a03d388eec513f713f5e0d06f920168db"> 61</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<VFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a03d388eec513f713f5e0d06f920168db">VFGNodeSet</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab9381c54f2339b3738348ae8b0d6659f"> 62</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, NodeID></a> <a class="code" href="classSVF_1_1VFG.html#ab9381c54f2339b3738348ae8b0d6659f">PAGNodeToDefMapTy</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#abec730a1ec61532cd164f3d42aa107b0"> 63</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<std::pair<NodeID,const CallBlockNode*></a>, <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a> *> <a class="code" href="classSVF_1_1VFG.html#abec730a1ec61532cd164f3d42aa107b0">PAGNodeToActualParmMapTy</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a999654aa377639db5c1e40f603e655a7"> 64</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, ActualRetVFGNode *></a> <a class="code" href="classSVF_1_1VFG.html#a999654aa377639db5c1e40f603e655a7">PAGNodeToActualRetMapTy</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6eb72d2fe080def018d09604fe3affcf"> 65</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, FormalParmVFGNode *></a> <a class="code" href="classSVF_1_1VFG.html#a6eb72d2fe080def018d09604fe3affcf">PAGNodeToFormalParmMapTy</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a52dac90d700a2377b657ec34d3ad2241"> 66</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, FormalRetVFGNode *></a> <a class="code" href="classSVF_1_1VFG.html#a52dac90d700a2377b657ec34d3ad2241">PAGNodeToFormalRetMapTy</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ab37b067a59b52c472a284eabbeba43ff"> 67</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGEdge*, StmtVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#ab37b067a59b52c472a284eabbeba43ff">PAGEdgeToStmtVFGNodeMapTy</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#aeed3eca629b10554f40b1d2b478580d4"> 68</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, IntraPHIVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#aeed3eca629b10554f40b1d2b478580d4">PAGNodeToPHIVFGNodeMapTy</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a7cefa553955e208d6eb4fcd01ed3c383"> 69</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, BinaryOPVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a7cefa553955e208d6eb4fcd01ed3c383">PAGNodeToBinaryOPVFGNodeMapTy</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#acfcd84ac6bedde4e7e74abdeb9233474"> 70</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, UnaryOPVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#acfcd84ac6bedde4e7e74abdeb9233474">PAGNodeToUnaryOPVFGNodeMapTy</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a6ec1a8b02ece25aa165699e10fac7991"> 71</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, BranchVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a6ec1a8b02ece25aa165699e10fac7991">PAGNodeToBranchVFGNodeMapTy</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a9c2446f54d3738b6c0e65632a1200ba0"> 72</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, CmpVFGNode*></a> <a class="code" href="classSVF_1_1VFG.html#a9c2446f54d3738b6c0e65632a1200ba0">PAGNodeToCmpVFGNodeMapTy</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ad63218978f65ab91ae21bc24c882a716"> 73</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFFunction*, VFGNodeSet ></a> <a class="code" href="classSVF_1_1VFG.html#ad63218978f65ab91ae21bc24c882a716">FunToVFGNodesMapTy</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ade3f735b3c7b1a53cab3d67cd9f7b874"> 75</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGNode.html#a43b6b3dc747d310f793ca1b3bfa9d05f">FormalParmVFGNode::CallPESet</a> <a class="code" href="classSVF_1_1VFG.html#ade3f735b3c7b1a53cab3d67cd9f7b874">CallPESet</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#abf966182c28f0521dcd161aa299e453d"> 76</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGNode.html#a367413b90de8a382190ffa9f0c742e01">FormalRetVFGNode::RetPESet</a> <a class="code" href="classSVF_1_1VFG.html#abf966182c28f0521dcd161aa299e453d">RetPESet</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a0bdac7337a393ad2e21a33ec1978ca3f"> 77</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGEdge.html#a54e8b1d339da481222292e3b62d1e765">VFGEdge::VFGEdgeSetTy</a> <a class="code" href="classSVF_1_1VFG.html#a0bdac7337a393ad2e21a33ec1978ca3f">VFGEdgeSetTy</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694"> 78</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGEdge.html#a557334ef75bb5479b045f68c27b38701">VFGEdge::SVFGEdgeSetTy</a> <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a3037ca34a555ebdb4fbf0e86291dc4ea"> 79</a></span>  <span class="keyword">typedef</span> VFGEdge::VFGEdgeSetTy::iterator <a class="code" href="classSVF_1_1VFG.html#a3037ca34a555ebdb4fbf0e86291dc4ea">VFGNodeIter</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c"> 80</a></span>  <span class="keyword">typedef</span> VFGNodeIDToNodeMapTy::iterator <a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">iterator</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#a225a91c04afac6a8fe198e9860890a52"> 81</a></span>  <span class="keyword">typedef</span> VFGNodeIDToNodeMapTy::const_iterator <a class="code" href="classSVF_1_1VFG.html#a225a91c04afac6a8fe198e9860890a52">const_iterator</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1VFG.html#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>
|
|
@@ -98,27 +97,26 @@ $(function() {
|
|
|
98
97
|
<div class="ttc" id="PTACallGraph_8h_html"><div class="ttname"><a href="PTACallGraph_8h.html">PTACallGraph.h</a></div></div>
|
|
99
98
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_aa809a57c8cdaaa35dfc3cc0f3b33b52b"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b">SVF::SVFStmt::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00132">SVFStatements.h:132</a></div></div>
|
|
100
99
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVF::SVFStmt::PEDGEK</a></div><div class="ttdeci">PEDGEK</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00054">SVFStatements.h:54</a></div></div>
|
|
101
|
-
<div class="ttc" id="classSVF_1_1VFG_html_aba0389fbcac1efab08339b53d149bf84"><div class="ttname"><a href="classSVF_1_1VFG.html#aba0389fbcac1efab08339b53d149bf84">SVF::VFG::addIntraPHIVFGNode</a></div><div class="ttdeci">void addIntraPHIVFGNode(const PhiPE *edge)</div><div class="ttdoc">Add an llvm PHI VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00572">VFG.h:572</a></div></div>
|
|
102
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>
|
|
103
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>
|
|
104
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>
|
|
105
|
-
<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>
|
|
106
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>
|
|
107
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>
|
|
108
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
107
|
<div class="ttc" id="classSVF_1_1VFG_html_a3037ca34a555ebdb4fbf0e86291dc4ea"><div class="ttname"><a href="classSVF_1_1VFG.html#a3037ca34a555ebdb4fbf0e86291dc4ea">SVF::VFG::VFGNodeIter</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy::iterator VFGNodeIter</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00079">VFG.h:79</a></div></div>
|
|
110
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>
|
|
111
|
-
<div class="ttc" id="classSVF_1_1UnaryOPPE_html"><div class="ttname"><a href="classSVF_1_1UnaryOPPE.html">SVF::UnaryOPPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00474">SVFStatements.h:474</a></div></div>
|
|
112
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>
|
|
113
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>
|
|
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>
|
|
114
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>
|
|
115
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>
|
|
116
|
-
<div class="ttc" id="classSVF_1_1VFG_html_a7b0d533f3ccce8fc64deae6077f3d959"><div class="ttname"><a href="classSVF_1_1VFG.html#a7b0d533f3ccce8fc64deae6077f3d959">SVF::VFG::addAddrVFGNode</a></div><div class="ttdeci">void addAddrVFGNode(const AddrPE *addr)</div><div class="ttdoc">Add an Address VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00486">VFG.h:486</a></div></div>
|
|
117
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>
|
|
118
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>
|
|
119
117
|
<div class="ttc" id="classSVF_1_1VFG_html_a268ec1495cbe4adb51fa50d28a4cba3d"><div class="ttname"><a href="classSVF_1_1VFG.html#a268ec1495cbe4adb51fa50d28a4cba3d">SVF::VFG::isPtrOnlySVFG</a></div><div class="ttdeci">bool isPtrOnlySVFG() const</div><div class="ttdoc">Return true if this VFG only contains pointer related SVFGNodes for pointer analysis. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00127">VFG.h:127</a></div></div>
|
|
120
118
|
<div class="ttc" id="classSVF_1_1CopyVFGNode_html"><div class="ttname"><a href="classSVF_1_1CopyVFGNode.html">SVF::CopyVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00274">VFGNode.h:274</a></div></div>
|
|
121
|
-
<div class="ttc" id="
|
|
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>
|
|
122
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>
|
|
123
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>
|
|
124
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>
|
|
@@ -130,17 +128,15 @@ $(function() {
|
|
|
130
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>
|
|
131
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>
|
|
132
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>
|
|
133
|
-
<div class="ttc" id="
|
|
134
|
-
<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#
|
|
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>
|
|
135
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>
|
|
136
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>
|
|
137
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>
|
|
138
|
-
<div class="ttc" id="
|
|
136
|
+
<div class="ttc" id="classSVF_1_1VFG_html_a6a1435f8ac7f74cc81608839fa3da3df"><div class="ttname"><a href="classSVF_1_1VFG.html#a6a1435f8ac7f74cc81608839fa3da3df">SVF::VFG::addIntraPHIVFGNode</a></div><div class="ttdeci">void addIntraPHIVFGNode(const PhiStmt *edge)</div><div class="ttdoc">Add an llvm PHI VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00572">VFG.h:572</a></div></div>
|
|
139
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>
|
|
140
138
|
<div class="ttc" id="SVFIR_8h_html"><div class="ttname"><a href="SVFIR_8h.html">SVFIR.h</a></div></div>
|
|
141
|
-
<div class="ttc" id="classSVF_1_1VFG_html_ae746db691e5c96dff1d590b109bffb7f"><div class="ttname"><a href="classSVF_1_1VFG.html#ae746db691e5c96dff1d590b109bffb7f">SVF::VFG::addUnaryOPVFGNode</a></div><div class="ttdeci">void addUnaryOPVFGNode(const UnaryOPPE *edge)</div><div class="ttdoc">Add a UnaryOperator VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00614">VFG.h:614</a></div></div>
|
|
142
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>
|
|
143
|
-
<div class="ttc" id="classSVF_1_1VFG_html_a37239391028cd313eab7110626444682"><div class="ttname"><a href="classSVF_1_1VFG.html#a37239391028cd313eab7110626444682">SVF::VFG::getPAGEdgeSet</a></div><div class="ttdeci">virtual PAGEdge::PAGEdgeSetTy & getPAGEdgeSet(PAGEdge::PEDGEK kind)</div><div class="ttdoc">Get PAGEdge set. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00430">VFG.h:430</a></div></div>
|
|
144
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>
|
|
145
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>
|
|
146
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>
|
|
@@ -150,33 +146,34 @@ $(function() {
|
|
|
150
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>
|
|
151
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>
|
|
152
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>
|
|
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>
|
|
153
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>
|
|
154
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>
|
|
155
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>
|
|
156
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>
|
|
157
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>
|
|
158
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>
|
|
159
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>
|
|
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>
|
|
160
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>
|
|
161
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>
|
|
162
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>
|
|
163
162
|
<div class="ttc" id="classSVF_1_1VFG_html_a0c0a7c8f0bd27bc9e88ce54c0809b11b"><div class="ttname"><a href="classSVF_1_1VFG.html#a0c0a7c8f0bd27bc9e88ce54c0809b11b">SVF::VFG::updateCallGraph</a></div><div class="ttdeci">void updateCallGraph(PointerAnalysis *pta)</div><div class="ttdoc">Update VFG based on pointer analysis results. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00796">VFG.cpp:796</a></div></div>
|
|
164
163
|
<div class="ttc" id="classSVF_1_1VFG_html_a6c3daf2777cc5f76ce07241f803720f3"><div class="ttname"><a href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3">SVF::VFG::globalVFGNodes</a></div><div class="ttdeci">GlobalVFGNodeSet globalVFGNodes</div><div class="ttdoc">set of global store VFG nodes </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00102">VFG.h:102</a></div></div>
|
|
165
164
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_afb2daec804e81f0beb72fbc805d1c82a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#afb2daec804e81f0beb72fbc805d1c82a">SVF::PTACallGraph::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallBlockNode *cs, const SVFFunction *callee) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00344">PTACallGraph.h:344</a></div></div>
|
|
166
|
-
<div class="ttc" id="classSVF_1_1VFG_html_ab4166804d4612c1cf194d1d8710c09a6"><div class="ttname"><a href="classSVF_1_1VFG.html#ab4166804d4612c1cf194d1d8710c09a6">SVF::VFG::addCmpVFGNode</a></div><div class="ttdeci">void addCmpVFGNode(const CmpPE *edge)</div><div class="ttdoc">Add a Compare VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00586">VFG.h:586</a></div></div>
|
|
167
165
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a6885064afa211958af7b73f0233284e5"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a6885064afa211958af7b73f0233284e5">SVF::GenericGraph::hasGNode</a></div><div class="ttdeci">bool hasGNode(NodeID id) const</div><div class="ttdoc">Has a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00395">GenericGraph.h:395</a></div></div>
|
|
168
|
-
<div class="ttc" id="classSVF_1_1VFG_html_aa21ad616306c111b77fb3ec8f16b19be"><div class="ttname"><a href="classSVF_1_1VFG.html#aa21ad616306c111b77fb3ec8f16b19be">SVF::VFG::addStoreVFGNode</a></div><div class="ttdeci">void addStoreVFGNode(const StorePE *store)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00515">VFG.h:515</a></div></div>
|
|
169
166
|
<div class="ttc" id="classSVF_1_1VFG_html_a241d0489bf0315460e2b07db87e7847c"><div class="ttname"><a href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVF::VFG::iterator</a></div><div class="ttdeci">VFGNodeIDToNodeMapTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00080">VFG.h:80</a></div></div>
|
|
170
167
|
<div class="ttc" id="classSVF_1_1VFG_html_a0f554fd778b338cbd7e4272eaefc96f6"><div class="ttname"><a href="classSVF_1_1VFG.html#a0f554fd778b338cbd7e4272eaefc96f6">SVF::VFG::PAGNodeToBinaryOPVFGNodeMap</a></div><div class="ttdeci">PAGNodeToBinaryOPVFGNodeMapTy PAGNodeToBinaryOPVFGNodeMap</div><div class="ttdoc">map a PAGNode to its BinaryOPVFGNode </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00095">VFG.h:95</a></div></div>
|
|
171
|
-
<div class="ttc" id="classSVF_1_1VFG_html_afb440e02353766c2a2541005dd29fb24"><div class="ttname"><a href="classSVF_1_1VFG.html#afb440e02353766c2a2541005dd29fb24">SVF::VFG::addBinaryOPVFGNode</a></div><div class="ttdeci">void addBinaryOPVFGNode(const BinaryOPPE *edge)</div><div class="ttdoc">Add a BinaryOperator VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00600">VFG.h:600</a></div></div>
|
|
172
168
|
<div class="ttc" id="classSVF_1_1VFG_html_af5005136743913d760d7402bbd308c69"><div class="ttname"><a href="classSVF_1_1VFG.html#af5005136743913d760d7402bbd308c69">SVF::VFG::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Clean up memory. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00321">VFG.cpp:321</a></div></div>
|
|
169
|
+
<div class="ttc" id="classSVF_1_1VFG_html_ac79516fc4d9136241d708f9df5c73262"><div class="ttname"><a href="classSVF_1_1VFG.html#ac79516fc4d9136241d708f9df5c73262">SVF::VFG::addBinaryOPVFGNode</a></div><div class="ttdeci">void addBinaryOPVFGNode(const BinaryOPStmt *edge)</div><div class="ttdoc">Add a BinaryOperator VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00600">VFG.h:600</a></div></div>
|
|
173
170
|
<div class="ttc" id="classSVF_1_1VFG_html_a9c2446f54d3738b6c0e65632a1200ba0"><div class="ttname"><a href="classSVF_1_1VFG.html#a9c2446f54d3738b6c0e65632a1200ba0">SVF::VFG::PAGNodeToCmpVFGNodeMapTy</a></div><div class="ttdeci">Map< const PAGNode *, CmpVFGNode * > PAGNodeToCmpVFGNodeMapTy</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00072">VFG.h:72</a></div></div>
|
|
174
171
|
<div class="ttc" id="classSVF_1_1VFG_html_a9a16c7a7b0df273c1dcbe6ba3aef8fde"><div class="ttname"><a href="classSVF_1_1VFG.html#a9a16c7a7b0df273c1dcbe6ba3aef8fde">SVF::VFG::PAGNodeToCmpVFGNodeMap</a></div><div class="ttdeci">PAGNodeToCmpVFGNodeMapTy PAGNodeToCmpVFGNodeMap</div><div class="ttdoc">map a PAGNode to its CmpVFGNode </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00098">VFG.h:98</a></div></div>
|
|
175
172
|
<div class="ttc" id="classSVF_1_1VFG_html_ab12de81e2912f06551ca7a6693f5046b"><div class="ttname"><a href="classSVF_1_1VFG.html#ab12de81e2912f06551ca7a6693f5046b">SVF::VFG::PAGNodeSet</a></div><div class="ttdeci">Set< const PAGNode * > PAGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00084">VFG.h:84</a></div></div>
|
|
176
|
-
<div class="ttc" id="classSVF_1_1UnaryOPPE_html_a80eb6a6681caf7407d7e16b36d7cb658"><div class="ttname"><a href="classSVF_1_1UnaryOPPE.html#a80eb6a6681caf7407d7e16b36d7cb658">SVF::UnaryOPPE::getRes</a></div><div class="ttdeci">const SVFVar * getRes() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00515">SVFStatements.h:515</a></div></div>
|
|
177
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>
|
|
178
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>
|
|
179
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>
|
|
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>
|
|
180
177
|
<div class="ttc" id="VFGNode_8h_html"><div class="ttname"><a href="VFGNode_8h.html">VFGNode.h</a></div></div>
|
|
181
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>
|
|
182
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>
|
|
@@ -185,16 +182,18 @@ $(function() {
|
|
|
185
182
|
<div class="ttc" id="classSVF_1_1VFG_html_a28c5f7e331a437e09682b972769acf66"><div class="ttname"><a href="classSVF_1_1VFG.html#a28c5f7e331a437e09682b972769acf66">SVF::VFG::PAGNodeToActualRetMap</a></div><div class="ttdeci">PAGNodeToActualRetMapTy PAGNodeToActualRetMap</div><div class="ttdoc">map a PAGNode to an actual return </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00091">VFG.h:91</a></div></div>
|
|
186
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>
|
|
187
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>
|
|
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>
|
|
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>
|
|
188
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>
|
|
189
|
-
<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>
|
|
190
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>
|
|
191
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>
|
|
192
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>
|
|
193
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>
|
|
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>
|
|
194
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>
|
|
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#
|
|
196
|
-
<div class="ttc" id="
|
|
197
|
-
<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>
|
|
198
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>
|
|
199
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>
|
|
200
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>
|
|
@@ -203,11 +202,11 @@ $(function() {
|
|
|
203
202
|
<div class="ttc" id="classSVF_1_1VFG_html_a01b8694a5ab7acf8df0213225550791b"><div class="ttname"><a href="classSVF_1_1VFG.html#a01b8694a5ab7acf8df0213225550791b">SVF::VFG::getActualParmVFGNode</a></div><div class="ttdeci">ActualParmVFGNode * getActualParmVFGNode(const PAGNode *aparm, const CallBlockNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00235">VFG.h:235</a></div></div>
|
|
204
203
|
<div class="ttc" id="classSVF_1_1ICFGNode_html_aff18898b9bbd85d08b00d64d48eea6a5"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#aff18898b9bbd85d08b00d64d48eea6a5">SVF::ICFGNode::addVFGNode</a></div><div class="ttdeci">void addVFGNode(const VFGNode *vfgNode)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00103">ICFGNode.h:103</a></div></div>
|
|
205
204
|
<div class="ttc" id="classSVF_1_1VFG_html_a88f6468b9b43bbb06ef757d884580a50"><div class="ttname"><a href="classSVF_1_1VFG.html#a88f6468b9b43bbb06ef757d884580a50">SVF::VFG::hasBlackHoleConstObjAddrAsDef</a></div><div class="ttdeci">bool hasBlackHoleConstObjAddrAsDef(const PAGNode *pagNode) const</div><div class="ttdoc">Whether a PAGNode has a blackhole or const object as its definition. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00265">VFG.h:265</a></div></div>
|
|
206
|
-
<div class="ttc" id="classSVF_1_1GepPE_html"><div class="ttname"><a href="classSVF_1_1GepPE.html">SVF::GepPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00664">SVFStatements.h:664</a></div></div>
|
|
207
205
|
<div class="ttc" id="classSVF_1_1VFG_html_a1e0b8c7df55e05739775e8a1c50cf660"><div class="ttname"><a href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">SVF::VFG::setDef</a></div><div class="ttdeci">void setDef(const PAGNode *pagNode, const VFGNode *node)</div><div class="ttdoc">Given a PAGNode, set/get its def VFG node (definition of top level pointers) </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00401">VFG.h:401</a></div></div>
|
|
208
206
|
<div class="ttc" id="classSVF_1_1VFG_html_a25c2bbbc2e966e2aaa59a5b83363557a"><div class="ttname"><a href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">SVF::VFG::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00104">VFG.h:104</a></div></div>
|
|
209
207
|
<div class="ttc" id="classSVF_1_1FormalParmVFGNode_html_af0dfc7f8b58d5bc0e47c6ad17216cc1e"><div class="ttname"><a href="classSVF_1_1FormalParmVFGNode.html#af0dfc7f8b58d5bc0e47c6ad17216cc1e">SVF::FormalParmVFGNode::addCallPE</a></div><div class="ttdeci">void addCallPE(const CallPE *call)</div><div class="ttdoc">Return call edge. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00906">VFGNode.h:906</a></div></div>
|
|
210
|
-
<div class="ttc" id="
|
|
208
|
+
<div class="ttc" id="classSVF_1_1VFG_html_a49d35213a281859ca64398760c485a85"><div class="ttname"><a href="classSVF_1_1VFG.html#a49d35213a281859ca64398760c485a85">SVF::VFG::addCopyVFGNode</a></div><div class="ttdeci">void addCopyVFGNode(const CopyStmt *copy)</div><div class="ttdoc">Add a Copy VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00493">VFG.h:493</a></div></div>
|
|
209
|
+
<div class="ttc" id="classSVF_1_1VFG_html_a4fb321fb0ff2a06c1065506552b862aa"><div class="ttname"><a href="classSVF_1_1VFG.html#a4fb321fb0ff2a06c1065506552b862aa">SVF::VFG::addGepVFGNode</a></div><div class="ttdeci">void addGepVFGNode(const GepStmt *gep)</div><div class="ttdoc">Add a Gep VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00500">VFG.h:500</a></div></div>
|
|
211
210
|
<div class="ttc" id="classSVF_1_1LoadVFGNode_html"><div class="ttname"><a href="classSVF_1_1LoadVFGNode.html">SVF::LoadVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00196">VFGNode.h:196</a></div></div>
|
|
212
211
|
<div class="ttc" id="classSVF_1_1VFGNode_html_a9c95dd4f0e70ccc4a03282cdddba95de"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a9c95dd4f0e70ccc4a03282cdddba95de">SVF::VFGNode::setICFGNode</a></div><div class="ttdeci">virtual void setICFGNode(const ICFGNode *node)</div><div class="ttdoc">Set corresponding ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00078">VFGNode.h:78</a></div></div>
|
|
213
212
|
<div class="ttc" id="classSVF_1_1VFG_html_a18ec674e8ab0285ec086df87e5c591c9"><div class="ttname"><a href="classSVF_1_1VFG.html#a18ec674e8ab0285ec086df87e5c591c9">SVF::VFG::getVFGNodes</a></div><div class="ttdeci">VFGNodeSet & getVFGNodes(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00286">VFG.h:286</a></div></div>
|
|
@@ -216,18 +215,17 @@ $(function() {
|
|
|
216
215
|
<div class="ttc" id="classSVF_1_1VFG_html_a9a99ae86d16ffe69bff9d52de769d049"><div class="ttname"><a href="classSVF_1_1VFG.html#a9a99ae86d16ffe69bff9d52de769d049">SVF::VFG::funToVFGNodesMap</a></div><div class="ttdeci">FunToVFGNodesMapTy funToVFGNodesMap</div><div class="ttdoc">map a function to its VFGNodes; </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00100">VFG.h:100</a></div></div>
|
|
217
216
|
<div class="ttc" id="classSVF_1_1VFG_html_a6fd24c001a6daedf591974ba27140461"><div class="ttname"><a href="classSVF_1_1VFG.html#a6fd24c001a6daedf591974ba27140461">SVF::VFG::addInterEdgeFromAPToFP</a></div><div class="ttdeci">VFGEdge * addInterEdgeFromAPToFP(ActualParmVFGNode *src, FormalParmVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from actual to formal parameters. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00356">VFG.h:356</a></div></div>
|
|
218
217
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a0a8831a5429005ff9d71adbd6bf3994f"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0a8831a5429005ff9d71adbd6bf3994f">SVF::GenericGraph::addGNode</a></div><div class="ttdeci">void addGNode(NodeID id, NodeType *node)</div><div class="ttdoc">Add a Node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00380">GenericGraph.h:380</a></div></div>
|
|
219
|
-
<div class="ttc" id="classSVF_1_1VFG_html_adbd7966d18ab50da5a485ba6e043ba61"><div class="ttname"><a href="classSVF_1_1VFG.html#adbd7966d18ab50da5a485ba6e043ba61">SVF::VFG::addLoadVFGNode</a></div><div class="ttdeci">void addLoadVFGNode(const LoadPE *load)</div><div class="ttdoc">Add a Load VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00507">VFG.h:507</a></div></div>
|
|
220
218
|
<div class="ttc" id="classSVF_1_1VFG_html_a598bc7a6863a6eccc3e089b63e9add17"><div class="ttname"><a href="classSVF_1_1VFG.html#a598bc7a6863a6eccc3e089b63e9add17">SVF::VFG::PAGNodeToIntraPHIVFGNodeMap</a></div><div class="ttdeci">PAGNodeToPHIVFGNodeMapTy PAGNodeToIntraPHIVFGNodeMap</div><div class="ttdoc">map a PAGNode to its PHIVFGNode </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00094">VFG.h:94</a></div></div>
|
|
221
219
|
<div class="ttc" id="classSVF_1_1VFG_html_a6ec1a8b02ece25aa165699e10fac7991"><div class="ttname"><a href="classSVF_1_1VFG.html#a6ec1a8b02ece25aa165699e10fac7991">SVF::VFG::PAGNodeToBranchVFGNodeMapTy</a></div><div class="ttdeci">Map< const PAGNode *, BranchVFGNode * > PAGNodeToBranchVFGNodeMapTy</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00071">VFG.h:71</a></div></div>
|
|
222
220
|
<div class="ttc" id="classSVF_1_1ActualRetVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualRetVFGNode.html">SVF::ActualRetVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00948">VFGNode.h:948</a></div></div>
|
|
223
221
|
<div class="ttc" id="VFGEdge_8h_html"><div class="ttname"><a href="VFGEdge_8h.html">VFGEdge.h</a></div></div>
|
|
224
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>
|
|
225
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>
|
|
226
|
-
<div class="ttc" id="
|
|
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>
|
|
227
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>
|
|
228
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>
|
|
229
|
-
<div class="ttc" id="classSVF_1_1VFG_html_aa22b76d96c028055cb0cc14d7dd0ed2e"><div class="ttname"><a href="classSVF_1_1VFG.html#aa22b76d96c028055cb0cc14d7dd0ed2e">SVF::VFG::PAGEdgeSet</a></div><div class="ttdeci">SVFIR::PAGEdgeSet PAGEdgeSet</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00082">VFG.h:82</a></div></div>
|
|
230
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>
|
|
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>
|
|
231
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>
|
|
232
230
|
<div class="ttc" id="classSVF_1_1VFG_html_a185ed4079babc0e0f72c4bf223342ee2"><div class="ttname"><a href="classSVF_1_1VFG.html#a185ed4079babc0e0f72c4bf223342ee2">SVF::VFG::addInterEdgeFromAPToFP</a></div><div class="ttdeci">VFGEdge * addInterEdgeFromAPToFP(NodeID src, NodeID dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from actual to formal parameters. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00367">VFG.h:367</a></div></div>
|
|
233
231
|
<div class="ttc" id="classSVF_1_1VFG_html_a3544cc0380964f238c964a0e7b417862"><div class="ttname"><a href="classSVF_1_1VFG.html#a3544cc0380964f238c964a0e7b417862">SVF::VFG::addVFGNodes</a></div><div class="ttdeci">void addVFGNodes()</div><div class="ttdoc">Create VFG nodes. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00330">VFG.cpp:330</a></div></div>
|
|
@@ -236,31 +234,32 @@ $(function() {
|
|
|
236
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>
|
|
237
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>
|
|
238
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>
|
|
239
|
-
<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>
|
|
240
237
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_a2c8b1674f1f942a3b5aa77b7abccb229"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a2c8b1674f1f942a3b5aa77b7abccb229">SVF::PTACallGraph::getCallSite</a></div><div class="ttdeci">const CallBlockNode * getCallSite(CallSiteID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00363">PTACallGraph.h:363</a></div></div>
|
|
241
238
|
<div class="ttc" id="classSVF_1_1VFG_html_a47609382fcd9ef36706e1d0f0531a843"><div class="ttname"><a href="classSVF_1_1VFG.html#a47609382fcd9ef36706e1d0f0531a843">SVF::VFG::getBranchVFGNode</a></div><div class="ttdeci">BranchVFGNode * getBranchVFGNode(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00223">VFG.h:223</a></div></div>
|
|
242
239
|
<div class="ttc" id="classSVF_1_1VFG_html_a8ba98bb3d888ec5ff40f511da14b37bc"><div class="ttname"><a href="classSVF_1_1VFG.html#a8ba98bb3d888ec5ff40f511da14b37bc">SVF::VFG::VFG</a></div><div class="ttdeci">VFG(PTACallGraph *callgraph, VFGK k=FULLSVFG)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00308">VFG.cpp:308</a></div></div>
|
|
240
|
+
<div class="ttc" id="classSVF_1_1CmpStmt_html"><div class="ttname"><a href="classSVF_1_1CmpStmt.html">SVF::CmpStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00379">SVFStatements.h:379</a></div></div>
|
|
241
|
+
<div class="ttc" id="classSVF_1_1VFG_html_aca2b1493bd712bdc6618de995a81e5af"><div class="ttname"><a href="classSVF_1_1VFG.html#aca2b1493bd712bdc6618de995a81e5af">SVF::VFG::addAddrVFGNode</a></div><div class="ttdeci">void addAddrVFGNode(const AddrStmt *addr)</div><div class="ttdoc">Add an Address VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00486">VFG.h:486</a></div></div>
|
|
243
242
|
<div class="ttc" id="classSVF_1_1CallBlockNode_html_ad3d50024efcfa94b1246c982b43aff2f"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">SVF::CallBlockNode::getCallSite</a></div><div class="ttdeci">const Instruction * getCallSite() const</div><div class="ttdoc">Return callsite. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00381">ICFGNode.h:381</a></div></div>
|
|
244
243
|
<div class="ttc" id="classSVF_1_1VFG_html_aa01f63b17acdd52122a7f1ade329ccea"><div class="ttname"><a href="classSVF_1_1VFG.html#aa01f63b17acdd52122a7f1ade329ccea">SVF::VFG::addCallEdge</a></div><div class="ttdeci">VFGEdge * addCallEdge(NodeID srcId, NodeID dstId, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00564">VFG.cpp:564</a></div></div>
|
|
245
244
|
<div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
|
|
246
245
|
<div class="ttc" id="classSVF_1_1ICFG_html_a6d66c83cb1656d0f8ec8b8b65a9e9c41"><div class="ttname"><a href="classSVF_1_1ICFG.html#a6d66c83cb1656d0f8ec8b8b65a9e9c41">SVF::ICFG::getRetBlockNode</a></div><div class="ttdeci">RetBlockNode * getRetBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00210">ICFG.cpp:210</a></div></div>
|
|
247
|
-
<div class="ttc" id="classSVF_1_1BinaryOPPE_html"><div class="ttname"><a href="classSVF_1_1BinaryOPPE.html">SVF::BinaryOPPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00424">SVFStatements.h:424</a></div></div>
|
|
248
246
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00165">GenericGraph.h:165</a></div></div>
|
|
249
247
|
<div class="ttc" id="classSVF_1_1ICFG_html_ae1ef14cdda27a2062c4c454750444108"><div class="ttname"><a href="classSVF_1_1ICFG.html#ae1ef14cdda27a2062c4c454750444108">SVF::ICFG::getFunEntryBlockNode</a></div><div class="ttdeci">FunEntryBlockNode * getFunEntryBlockNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function entry node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00230">ICFG.cpp:230</a></div></div>
|
|
250
248
|
<div class="ttc" id="classSVF_1_1VFG_html_ac34c4529229404617c346f81cc6c141f"><div class="ttname"><a href="classSVF_1_1VFG.html#ac34c4529229404617c346f81cc6c141f">SVF::VFG::hasIntraVFGEdge</a></div><div class="ttdeci">VFGEdge * hasIntraVFGEdge(VFGNode *src, VFGNode *dst, VFGEdge::VFGEdgeK kind)</div><div class="ttdoc">Whether we has a SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00720">VFG.cpp:720</a></div></div>
|
|
251
|
-
<div class="ttc" id="classSVF_1_1AddrPE_html"><div class="ttname"><a href="classSVF_1_1AddrPE.html">SVF::AddrPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00196">SVFStatements.h:196</a></div></div>
|
|
252
249
|
<div class="ttc" id="classSVF_1_1VFG_html_a7343f970332391634f79b2023bba6650"><div class="ttname"><a href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">SVF::VFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00414">VFG.h:414</a></div></div>
|
|
253
250
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html">SVF::StmtVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00113">VFGNode.h:113</a></div></div>
|
|
254
|
-
<div class="ttc" id="
|
|
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>
|
|
255
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>
|
|
256
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>
|
|
257
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>
|
|
258
255
|
<div class="ttc" id="classSVF_1_1GenericGraph_html"><div class="ttname"><a href="classSVF_1_1GenericGraph.html">SVF::GenericGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00327">GenericGraph.h:327</a></div></div>
|
|
259
256
|
<div class="ttc" id="classSVF_1_1FormalParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalParmVFGNode.html">SVF::FormalParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00881">VFGNode.h:881</a></div></div>
|
|
257
|
+
<div class="ttc" id="classSVF_1_1VFG_html_a65c88a6c20380b715ac8b6c31e68afed"><div class="ttname"><a href="classSVF_1_1VFG.html#a65c88a6c20380b715ac8b6c31e68afed">SVF::VFG::addUnaryOPVFGNode</a></div><div class="ttdeci">void addUnaryOPVFGNode(const UnaryOPStmt *edge)</div><div class="ttdoc">Add a UnaryOperator VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00614">VFG.h:614</a></div></div>
|
|
260
258
|
<div class="ttc" id="classSVF_1_1VFG_html_a915fa50effaeea10716b86528b15c6dc"><div class="ttname"><a href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">SVF::VFG::getVFGNode</a></div><div class="ttdeci">VFGNode * getVFGNode(NodeID id) const</div><div class="ttdoc">Get a VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00145">VFG.h:145</a></div></div>
|
|
261
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>
|
|
262
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>
|
|
263
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>
|
|
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>
|
|
@@ -269,23 +268,24 @@ $(function() {
|
|
|
269
268
|
<div class="ttc" id="classSVF_1_1FormalRetVFGNode_html_a051f7dc0da465d7ce0dc733d9a8fae6a"><div class="ttname"><a href="classSVF_1_1FormalRetVFGNode.html#a051f7dc0da465d7ce0dc733d9a8fae6a">SVF::FormalRetVFGNode::addRetPE</a></div><div class="ttdeci">void addRetPE(const RetPE *retPE)</div><div class="ttdoc">RetPE. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01029">VFGNode.h:1029</a></div></div>
|
|
270
269
|
<div class="ttc" id="classSVF_1_1CallBlockNode_html"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html">SVF::CallBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00364">ICFGNode.h:364</a></div></div>
|
|
271
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
|
-
<div class="ttc" id="classSVF_1_1CopyPE_html"><div class="ttname"><a href="classSVF_1_1CopyPE.html">SVF::CopyPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00231">SVFStatements.h:231</a></div></div>
|
|
273
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>
|
|
274
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>
|
|
275
|
-
<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>
|
|
276
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>
|
|
277
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>
|
|
278
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>
|
|
279
277
|
<div class="ttc" id="classSVF_1_1VFG_html_a75eb519e4f89a116db98fccb263af4d6"><div class="ttname"><a href="classSVF_1_1VFG.html#a75eb519e4f89a116db98fccb263af4d6">SVF::VFG::getFormalParmVFGNode</a></div><div class="ttdeci">FormalParmVFGNode * getFormalParmVFGNode(const PAGNode *fparm) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00247">VFG.h:247</a></div></div>
|
|
280
278
|
<div class="ttc" id="classSVF_1_1VFGNode_html_a43b6b3dc747d310f793ca1b3bfa9d05f"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a43b6b3dc747d310f793ca1b3bfa9d05f">SVF::VFGNode::CallPESet</a></div><div class="ttdeci">Set< const CallPE * > CallPESet</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00061">VFGNode.h:61</a></div></div>
|
|
281
|
-
<div class="ttc" id="classSVF_1_1PhiPE_html"><div class="ttname"><a href="classSVF_1_1PhiPE.html">SVF::PhiPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00328">SVFStatements.h:328</a></div></div>
|
|
282
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>
|
|
283
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>
|
|
284
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>
|
|
285
283
|
<div class="ttc" id="classSVF_1_1VFG_html_ab1f4c2765af027e903634d5262aea80b"><div class="ttname"><a href="classSVF_1_1VFG.html#ab1f4c2765af027e903634d5262aea80b">SVF::VFG::addVFGInterEdges</a></div><div class="ttdeci">void addVFGInterEdges(const CallBlockNode *cs, const SVFFunction *callee)</div><div class="ttdoc">Create edges between VFG nodes across functions. </div></div>
|
|
284
|
+
<div class="ttc" id="classSVF_1_1CopyStmt_html"><div class="ttname"><a href="classSVF_1_1CopyStmt.html">SVF::CopyStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00232">SVFStatements.h:232</a></div></div>
|
|
286
285
|
<div class="ttc" id="classSVF_1_1IntraPHIVFGNode_html_a7e5fd83393224ece808de83cbf496882"><div class="ttname"><a href="classSVF_1_1IntraPHIVFGNode.html#a7e5fd83393224ece808de83cbf496882">SVF::IntraPHIVFGNode::setOpVerAndBB</a></div><div class="ttdeci">void setOpVerAndBB(u32_t pos, const PAGNode *node, const ICFGNode *bb)</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00717">VFGNode.h:717</a></div></div>
|
|
287
286
|
<div class="ttc" id="classSVF_1_1VFG_html_ae4350f68e960bfef87f44587628b1929"><div class="ttname"><a href="classSVF_1_1VFG.html#ae4350f68e960bfef87f44587628b1929">SVF::VFG::view</a></div><div class="ttdeci">void view()</div><div class="ttdoc">Dump graph into dot file. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00790">VFG.cpp:790</a></div></div>
|
|
288
287
|
<div class="ttc" id="classSVF_1_1SVFStmt_html"><div class="ttname"><a href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00047">SVFStatements.h:47</a></div></div>
|
|
288
|
+
<div class="ttc" id="classSVF_1_1VFG_html_a13f7caf44741db3b0e8a44b13d8931f5"><div class="ttname"><a href="classSVF_1_1VFG.html#a13f7caf44741db3b0e8a44b13d8931f5">SVF::VFG::addStoreVFGNode</a></div><div class="ttdeci">void addStoreVFGNode(const StoreStmt *store)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00515">VFG.h:515</a></div></div>
|
|
289
289
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html">SVF::PointerAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00057">PointerAnalysis.h:57</a></div></div>
|
|
290
290
|
<div class="ttc" id="classSVF_1_1VFG_html_ab7ba9d179504165f277d347a7cb9f5d8"><div class="ttname"><a href="classSVF_1_1VFG.html#ab7ba9d179504165f277d347a7cb9f5d8">SVF::VFG::getFormalRetVFGNode</a></div><div class="ttdeci">FormalRetVFGNode * getFormalRetVFGNode(const PAGNode *fret) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00253">VFG.h:253</a></div></div>
|
|
291
291
|
<div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
|