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
package/lib/Graphs/VFG.cpp
CHANGED
|
@@ -336,56 +336,56 @@ void VFG::addVFGNodes()
|
|
|
336
336
|
addNullPtrVFGNode(pag->getGNode(pag->getNullPtr()));
|
|
337
337
|
|
|
338
338
|
// initialize address nodes
|
|
339
|
-
PAGEdge::
|
|
340
|
-
for (PAGEdge::
|
|
339
|
+
PAGEdge::SVFStmtSetTy& addrs = getPAGEdgeSet(PAGEdge::Addr);
|
|
340
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = addrs.begin(), eiter =
|
|
341
341
|
addrs.end(); iter != eiter; ++iter)
|
|
342
342
|
{
|
|
343
|
-
addAddrVFGNode(SVFUtil::cast<
|
|
343
|
+
addAddrVFGNode(SVFUtil::cast<AddrStmt>(*iter));
|
|
344
344
|
}
|
|
345
345
|
|
|
346
346
|
// initialize copy nodes
|
|
347
|
-
PAGEdge::
|
|
348
|
-
for (PAGEdge::
|
|
347
|
+
PAGEdge::SVFStmtSetTy& copys = getPAGEdgeSet(PAGEdge::Copy);
|
|
348
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = copys.begin(), eiter =
|
|
349
349
|
copys.end(); iter != eiter; ++iter)
|
|
350
350
|
{
|
|
351
|
-
const
|
|
351
|
+
const CopyStmt* edge = SVFUtil::cast<CopyStmt>(*iter);
|
|
352
352
|
assert(!isPhiCopyEdge(edge) && "Copy edges can not be a PhiNode (or from PhiNode)");
|
|
353
353
|
addCopyVFGNode(edge);
|
|
354
354
|
}
|
|
355
355
|
|
|
356
356
|
// initialize gep nodes
|
|
357
|
-
PAGEdge::
|
|
358
|
-
for (PAGEdge::
|
|
357
|
+
PAGEdge::SVFStmtSetTy& ngeps = getPAGEdgeSet(PAGEdge::NormalGep);
|
|
358
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = ngeps.begin(), eiter =
|
|
359
359
|
ngeps.end(); iter != eiter; ++iter)
|
|
360
360
|
{
|
|
361
|
-
addGepVFGNode(SVFUtil::cast<
|
|
361
|
+
addGepVFGNode(SVFUtil::cast<NormalGepStmt>(*iter));
|
|
362
362
|
}
|
|
363
363
|
|
|
364
|
-
PAGEdge::
|
|
365
|
-
for (PAGEdge::
|
|
364
|
+
PAGEdge::SVFStmtSetTy& vgeps = getPAGEdgeSet(PAGEdge::VariantGep);
|
|
365
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = vgeps.begin(), eiter =
|
|
366
366
|
vgeps.end(); iter != eiter; ++iter)
|
|
367
367
|
{
|
|
368
|
-
addGepVFGNode(SVFUtil::cast<
|
|
368
|
+
addGepVFGNode(SVFUtil::cast<VariantGepStmt>(*iter));
|
|
369
369
|
}
|
|
370
370
|
|
|
371
371
|
// initialize load nodes
|
|
372
|
-
PAGEdge::
|
|
373
|
-
for (PAGEdge::
|
|
372
|
+
PAGEdge::SVFStmtSetTy& loads = getPAGEdgeSet(PAGEdge::Load);
|
|
373
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = loads.begin(), eiter =
|
|
374
374
|
loads.end(); iter != eiter; ++iter)
|
|
375
375
|
{
|
|
376
|
-
addLoadVFGNode(SVFUtil::cast<
|
|
376
|
+
addLoadVFGNode(SVFUtil::cast<LoadStmt>(*iter));
|
|
377
377
|
}
|
|
378
378
|
|
|
379
379
|
// initialize store nodes
|
|
380
|
-
PAGEdge::
|
|
381
|
-
for (PAGEdge::
|
|
380
|
+
PAGEdge::SVFStmtSetTy& stores = getPAGEdgeSet(PAGEdge::Store);
|
|
381
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = stores.begin(), eiter =
|
|
382
382
|
stores.end(); iter != eiter; ++iter)
|
|
383
383
|
{
|
|
384
|
-
addStoreVFGNode(SVFUtil::cast<
|
|
384
|
+
addStoreVFGNode(SVFUtil::cast<StoreStmt>(*iter));
|
|
385
385
|
}
|
|
386
386
|
|
|
387
|
-
PAGEdge::
|
|
388
|
-
for (PAGEdge::
|
|
387
|
+
PAGEdge::SVFStmtSetTy& forks = getPAGEdgeSet(PAGEdge::ThreadFork);
|
|
388
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = forks.begin(), eiter =
|
|
389
389
|
forks.end(); iter != eiter; ++iter)
|
|
390
390
|
{
|
|
391
391
|
TDForkPE* forkedge = SVFUtil::cast<TDForkPE>(*iter);
|
|
@@ -396,7 +396,7 @@ void VFG::addVFGNodes()
|
|
|
396
396
|
for(SVFIR::CSToArgsListMap::iterator it = pag->getCallSiteArgsMap().begin(), eit = pag->getCallSiteArgsMap().end(); it !=eit; ++it)
|
|
397
397
|
{
|
|
398
398
|
|
|
399
|
-
for(SVFIR::
|
|
399
|
+
for(SVFIR::SVFVarList::iterator pit = it->second.begin(), epit = it->second.end(); pit!=epit; ++pit)
|
|
400
400
|
{
|
|
401
401
|
const PAGNode* pagNode = *pit;
|
|
402
402
|
if (isInterestedPAGNode(pagNode))
|
|
@@ -422,7 +422,7 @@ void VFG::addVFGNodes()
|
|
|
422
422
|
{
|
|
423
423
|
const SVFFunction* func = it->first;
|
|
424
424
|
|
|
425
|
-
for(SVFIR::
|
|
425
|
+
for(SVFIR::SVFVarList::iterator pit = it->second.begin(), epit = it->second.end(); pit!=epit; ++pit)
|
|
426
426
|
{
|
|
427
427
|
const PAGNode* param = *pit;
|
|
428
428
|
if (isInterestedPAGNode(param) == false || hasBlackHoleConstObjAddrAsDef(param))
|
|
@@ -431,7 +431,7 @@ void VFG::addVFGNodes()
|
|
|
431
431
|
CallPESet callPEs;
|
|
432
432
|
if (param->hasIncomingEdges(PAGEdge::Call))
|
|
433
433
|
{
|
|
434
|
-
for (PAGEdge::
|
|
434
|
+
for (PAGEdge::SVFStmtSetTy::const_iterator cit = param->getIncomingEdgesBegin(PAGEdge::Call), ecit =
|
|
435
435
|
param->getIncomingEdgesEnd(PAGEdge::Call); cit != ecit; ++cit)
|
|
436
436
|
{
|
|
437
437
|
CallPE* callPE = SVFUtil::cast<CallPE>(*cit);
|
|
@@ -451,7 +451,7 @@ void VFG::addVFGNodes()
|
|
|
451
451
|
CallPESet callPEs;
|
|
452
452
|
if (varParam->hasIncomingEdges(PAGEdge::Call))
|
|
453
453
|
{
|
|
454
|
-
for(PAGEdge::
|
|
454
|
+
for(PAGEdge::SVFStmtSetTy::const_iterator cit = varParam->getIncomingEdgesBegin(PAGEdge::Call),
|
|
455
455
|
ecit = varParam->getIncomingEdgesEnd(PAGEdge::Call); cit!=ecit; ++cit)
|
|
456
456
|
{
|
|
457
457
|
CallPE* callPE = SVFUtil::cast<CallPE>(*cit);
|
|
@@ -473,7 +473,7 @@ void VFG::addVFGNodes()
|
|
|
473
473
|
RetPESet retPEs;
|
|
474
474
|
if (uniqueFunRetNode->hasOutgoingEdges(PAGEdge::Ret))
|
|
475
475
|
{
|
|
476
|
-
for (PAGEdge::
|
|
476
|
+
for (PAGEdge::SVFStmtSetTy::const_iterator cit = uniqueFunRetNode->getOutgoingEdgesBegin(PAGEdge::Ret),
|
|
477
477
|
ecit = uniqueFunRetNode->getOutgoingEdgesEnd(PAGEdge::Ret);
|
|
478
478
|
cit != ecit; ++cit)
|
|
479
479
|
{
|
|
@@ -488,35 +488,35 @@ void VFG::addVFGNodes()
|
|
|
488
488
|
}
|
|
489
489
|
|
|
490
490
|
// initialize llvm phi nodes (phi of top level pointers)
|
|
491
|
-
PAGEdge::
|
|
492
|
-
for (PAGEdge::
|
|
491
|
+
PAGEdge::SVFStmtSetTy& phis = getPAGEdgeSet(PAGEdge::Phi);
|
|
492
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = phis.begin(), eiter =
|
|
493
493
|
phis.end(); iter != eiter; ++iter)
|
|
494
494
|
{
|
|
495
|
-
const
|
|
495
|
+
const PhiStmt* edge = SVFUtil::cast<PhiStmt>(*iter);
|
|
496
496
|
if(isInterestedPAGNode(edge->getRes()))
|
|
497
497
|
addIntraPHIVFGNode(edge);
|
|
498
498
|
}
|
|
499
499
|
// initialize llvm binary nodes (binary operators)
|
|
500
|
-
PAGEdge::
|
|
501
|
-
for (PAGEdge::
|
|
500
|
+
PAGEdge::SVFStmtSetTy& binaryops = getPAGEdgeSet(PAGEdge::BinaryOp);
|
|
501
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = binaryops.begin(), eiter =
|
|
502
502
|
binaryops.end(); iter != eiter; ++iter)
|
|
503
503
|
{
|
|
504
|
-
const
|
|
504
|
+
const BinaryOPStmt* edge = SVFUtil::cast<BinaryOPStmt>(*iter);
|
|
505
505
|
if(isInterestedPAGNode(edge->getRes()))
|
|
506
506
|
addBinaryOPVFGNode(edge);
|
|
507
507
|
}
|
|
508
508
|
// initialize llvm unary nodes (unary operators)
|
|
509
|
-
PAGEdge::
|
|
510
|
-
for (PAGEdge::
|
|
509
|
+
PAGEdge::SVFStmtSetTy& unaryops = getPAGEdgeSet(PAGEdge::UnaryOp);
|
|
510
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = unaryops.begin(), eiter =
|
|
511
511
|
unaryops.end(); iter != eiter; ++iter)
|
|
512
512
|
{
|
|
513
|
-
const
|
|
513
|
+
const UnaryOPStmt* edge = SVFUtil::cast<UnaryOPStmt>(*iter);
|
|
514
514
|
if(isInterestedPAGNode(edge->getRes()))
|
|
515
515
|
addUnaryOPVFGNode(edge);
|
|
516
516
|
}
|
|
517
517
|
// initialize llvm unary nodes (unary operators)
|
|
518
|
-
PAGEdge::
|
|
519
|
-
for (PAGEdge::
|
|
518
|
+
PAGEdge::SVFStmtSetTy& brs = getPAGEdgeSet(PAGEdge::Branch);
|
|
519
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = brs.begin(), eiter =
|
|
520
520
|
brs.end(); iter != eiter; ++iter)
|
|
521
521
|
{
|
|
522
522
|
const BranchStmt* edge = SVFUtil::cast<BranchStmt>(*iter);
|
|
@@ -524,11 +524,11 @@ void VFG::addVFGNodes()
|
|
|
524
524
|
addBranchVFGNode(edge);
|
|
525
525
|
}
|
|
526
526
|
// initialize llvm cmp nodes (comparision)
|
|
527
|
-
PAGEdge::
|
|
528
|
-
for (PAGEdge::
|
|
527
|
+
PAGEdge::SVFStmtSetTy& cmps = getPAGEdgeSet(PAGEdge::Cmp);
|
|
528
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = cmps.begin(), eiter =
|
|
529
529
|
cmps.end(); iter != eiter; ++iter)
|
|
530
530
|
{
|
|
531
|
-
const
|
|
531
|
+
const CmpStmt* edge = SVFUtil::cast<CmpStmt>(*iter);
|
|
532
532
|
if(isInterestedPAGNode(edge->getRes()))
|
|
533
533
|
addCmpVFGNode(edge);
|
|
534
534
|
}
|
|
@@ -692,8 +692,8 @@ void VFG::connectDirectVFGEdges()
|
|
|
692
692
|
/// connect direct value-flow edges (parameter passing) for thread fork/join
|
|
693
693
|
if(Options::EnableThreadCallGraph){
|
|
694
694
|
/// add fork edge
|
|
695
|
-
PAGEdge::
|
|
696
|
-
for (PAGEdge::
|
|
695
|
+
PAGEdge::SVFStmtSetTy& forks = getPAGEdgeSet(PAGEdge::ThreadFork);
|
|
696
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = forks.begin(), eiter =
|
|
697
697
|
forks.end(); iter != eiter; ++iter)
|
|
698
698
|
{
|
|
699
699
|
TDForkPE* forkedge = SVFUtil::cast<TDForkPE>(*iter);
|
|
@@ -702,8 +702,8 @@ void VFG::connectDirectVFGEdges()
|
|
|
702
702
|
addInterEdgeFromAPToFP(acutalParm,formalParm,getCallSiteID(forkedge->getCallSite(), formalParm->getFun()));
|
|
703
703
|
}
|
|
704
704
|
/// add join edge
|
|
705
|
-
PAGEdge::
|
|
706
|
-
for (PAGEdge::
|
|
705
|
+
PAGEdge::SVFStmtSetTy& joins = getPAGEdgeSet(PAGEdge::ThreadJoin);
|
|
706
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = joins.begin(), eiter =
|
|
707
707
|
joins.end(); iter != eiter; ++iter)
|
|
708
708
|
{
|
|
709
709
|
TDJoinPE* joinedge = SVFUtil::cast<TDJoinPE>(*iter);
|
|
@@ -824,10 +824,10 @@ void VFG::connectCallerAndCallee(const CallBlockNode* callBlockNode, const SVFFu
|
|
|
824
824
|
// connect actual and formal param
|
|
825
825
|
if (pag->hasCallSiteArgsMap(callBlockNode) && pag->hasFunArgsList(callee))
|
|
826
826
|
{
|
|
827
|
-
const SVFIR::
|
|
828
|
-
const SVFIR::
|
|
829
|
-
SVFIR::
|
|
830
|
-
SVFIR::
|
|
827
|
+
const SVFIR::SVFVarList& csArgList = pag->getCallSiteArgsList(callBlockNode);
|
|
828
|
+
const SVFIR::SVFVarList& funArgList = pag->getFunArgsList(callee);
|
|
829
|
+
SVFIR::SVFVarList::const_iterator csArgIt = csArgList.begin(), csArgEit = csArgList.end();
|
|
830
|
+
SVFIR::SVFVarList::const_iterator funArgIt = funArgList.begin(), funArgEit = funArgList.end();
|
|
831
831
|
for (; funArgIt != funArgEit && csArgIt != csArgEit; funArgIt++, csArgIt++)
|
|
832
832
|
{
|
|
833
833
|
const PAGNode *cs_arg = *csArgIt;
|
|
@@ -1081,11 +1081,11 @@ struct DOTGraphTraits<VFG*> : public DOTGraphTraits<SVFIR*>
|
|
|
1081
1081
|
if(StmtVFGNode* stmtNode = SVFUtil::dyn_cast<StmtVFGNode>(node))
|
|
1082
1082
|
{
|
|
1083
1083
|
const PAGEdge* edge = stmtNode->getPAGEdge();
|
|
1084
|
-
if (SVFUtil::isa<
|
|
1084
|
+
if (SVFUtil::isa<AddrStmt>(edge))
|
|
1085
1085
|
{
|
|
1086
1086
|
rawstr << "color=green";
|
|
1087
1087
|
}
|
|
1088
|
-
else if (SVFUtil::isa<
|
|
1088
|
+
else if (SVFUtil::isa<CopyStmt>(edge))
|
|
1089
1089
|
{
|
|
1090
1090
|
rawstr << "color=black";
|
|
1091
1091
|
}
|
|
@@ -1093,15 +1093,15 @@ struct DOTGraphTraits<VFG*> : public DOTGraphTraits<SVFIR*>
|
|
|
1093
1093
|
{
|
|
1094
1094
|
rawstr << "color=black,style=dotted";
|
|
1095
1095
|
}
|
|
1096
|
-
else if (SVFUtil::isa<
|
|
1096
|
+
else if (SVFUtil::isa<GepStmt>(edge))
|
|
1097
1097
|
{
|
|
1098
1098
|
rawstr << "color=purple";
|
|
1099
1099
|
}
|
|
1100
|
-
else if (SVFUtil::isa<
|
|
1100
|
+
else if (SVFUtil::isa<StoreStmt>(edge))
|
|
1101
1101
|
{
|
|
1102
1102
|
rawstr << "color=blue";
|
|
1103
1103
|
}
|
|
1104
|
-
else if (SVFUtil::isa<
|
|
1104
|
+
else if (SVFUtil::isa<LoadStmt>(edge))
|
|
1105
1105
|
{
|
|
1106
1106
|
rawstr << "color=red";
|
|
1107
1107
|
}
|
package/lib/MSSA/MemRegion.cpp
CHANGED
|
@@ -107,7 +107,7 @@ void MRGenerator::collectGlobals()
|
|
|
107
107
|
SVFIR* pag = pta->getPAG();
|
|
108
108
|
for (SVFIR::iterator nIter = pag->begin(); nIter != pag->end(); ++nIter)
|
|
109
109
|
{
|
|
110
|
-
if(
|
|
110
|
+
if(ObjVar* obj = SVFUtil::dyn_cast<ObjVar>(nIter->second))
|
|
111
111
|
{
|
|
112
112
|
if (obj->getMemObj()->isGlobalObj())
|
|
113
113
|
{
|
|
@@ -148,22 +148,22 @@ void MRGenerator::generateMRs()
|
|
|
148
148
|
updateAliasMRs();
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
bool MRGenerator::
|
|
151
|
+
bool MRGenerator::hasSVFStmtList(const Instruction* inst)
|
|
152
152
|
{
|
|
153
153
|
SVFIR* pag = pta->getPAG();
|
|
154
154
|
if (ptrOnlyMSSA)
|
|
155
|
-
return pag->
|
|
155
|
+
return pag->hasPTASVFStmtList(pag->getICFG()->getBlockICFGNode(inst));
|
|
156
156
|
else
|
|
157
|
-
return pag->
|
|
157
|
+
return pag->hasSVFStmtList(pag->getICFG()->getBlockICFGNode(inst));
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
-
SVFIR::
|
|
160
|
+
SVFIR::SVFStmtList& MRGenerator::getPAGEdgesFromInst(const Instruction* inst)
|
|
161
161
|
{
|
|
162
162
|
SVFIR* pag = pta->getPAG();
|
|
163
163
|
if (ptrOnlyMSSA)
|
|
164
|
-
return pag->
|
|
164
|
+
return pag->getPTASVFStmtList(pag->getICFG()->getBlockICFGNode(inst));
|
|
165
165
|
else
|
|
166
|
-
return pag->
|
|
166
|
+
return pag->getSVFStmtList(pag->getICFG()->getBlockICFGNode(inst));
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
/*!
|
|
@@ -190,13 +190,13 @@ void MRGenerator::collectModRefForLoadStore()
|
|
|
190
190
|
bit != ebit; ++bit)
|
|
191
191
|
{
|
|
192
192
|
const Instruction& inst = *bit;
|
|
193
|
-
|
|
194
|
-
for (
|
|
193
|
+
SVFStmtList& pagEdgeList = getPAGEdgesFromInst(&inst);
|
|
194
|
+
for (SVFStmtList::iterator bit = pagEdgeList.begin(), ebit =
|
|
195
195
|
pagEdgeList.end(); bit != ebit; ++bit)
|
|
196
196
|
{
|
|
197
197
|
const PAGEdge* inst = *bit;
|
|
198
198
|
pagEdgeToFunMap[inst] = &fun;
|
|
199
|
-
if (const
|
|
199
|
+
if (const StoreStmt *st = SVFUtil::dyn_cast<StoreStmt>(inst))
|
|
200
200
|
{
|
|
201
201
|
NodeBS cpts(pta->getPts(st->getDstID()).toNodeBS());
|
|
202
202
|
// TODO: change this assertion check later when we have conditional points-to set
|
|
@@ -206,7 +206,7 @@ void MRGenerator::collectModRefForLoadStore()
|
|
|
206
206
|
addCPtsToStore(cpts, st, &fun);
|
|
207
207
|
}
|
|
208
208
|
|
|
209
|
-
else if (const
|
|
209
|
+
else if (const LoadStmt *ld = SVFUtil::dyn_cast<LoadStmt>(inst))
|
|
210
210
|
{
|
|
211
211
|
NodeBS cpts(pta->getPts(ld->getSrcID()).toNodeBS());
|
|
212
212
|
// TODO: change this assertion check later when we have conditional points-to set
|
|
@@ -487,8 +487,8 @@ void MRGenerator::collectCallSitePts(const CallBlockNode* cs)
|
|
|
487
487
|
WorkList worklist;
|
|
488
488
|
if (pag->hasCallSiteArgsMap(callBlockNode))
|
|
489
489
|
{
|
|
490
|
-
const SVFIR::
|
|
491
|
-
for(SVFIR::
|
|
490
|
+
const SVFIR::SVFVarList& args = pta->getPAG()->getCallSiteArgsList(callBlockNode);
|
|
491
|
+
for(SVFIR::SVFVarList::const_iterator itA = args.begin(), ieA = args.end(); itA!=ieA; ++itA)
|
|
492
492
|
{
|
|
493
493
|
const PAGNode* node = *itA;
|
|
494
494
|
if(node->isPointer())
|
|
@@ -526,7 +526,7 @@ void MRGenerator::collectCallSitePts(const CallBlockNode* cs)
|
|
|
526
526
|
*/
|
|
527
527
|
NodeBS& MRGenerator::CollectPtsChain(NodeID id)
|
|
528
528
|
{
|
|
529
|
-
NodeID baseId = pta->getPAG()->
|
|
529
|
+
NodeID baseId = pta->getPAG()->getBaseObjVar(id);
|
|
530
530
|
NodeToPTSSMap::iterator it = cachedPtsChainMap.find(baseId);
|
|
531
531
|
if(it!=cachedPtsChainMap.end())
|
|
532
532
|
return it->second;
|
|
@@ -605,12 +605,12 @@ bool MRGenerator::handleCallsiteModRef(NodeBS& mod, NodeBS& ref, const CallBlock
|
|
|
605
605
|
/// if a callee is a heap allocator function, then its mod set of this callsite is the heap object.
|
|
606
606
|
if(isHeapAllocExtCall(cs->getCallSite()))
|
|
607
607
|
{
|
|
608
|
-
|
|
609
|
-
for (
|
|
608
|
+
SVFStmtList& pagEdgeList = getPAGEdgesFromInst(cs->getCallSite());
|
|
609
|
+
for (SVFStmtList::const_iterator bit = pagEdgeList.begin(),
|
|
610
610
|
ebit = pagEdgeList.end(); bit != ebit; ++bit)
|
|
611
611
|
{
|
|
612
612
|
const PAGEdge* edge = *bit;
|
|
613
|
-
if (const
|
|
613
|
+
if (const AddrStmt* addr = SVFUtil::dyn_cast<AddrStmt>(edge))
|
|
614
614
|
mod.set(addr->getSrcID());
|
|
615
615
|
}
|
|
616
616
|
}
|
|
@@ -671,13 +671,13 @@ NodeBS MRGenerator::getModInfoForCall(const CallBlockNode* cs)
|
|
|
671
671
|
{
|
|
672
672
|
if (isExtCall(cs->getCallSite()) && !isHeapAllocExtCall(cs->getCallSite()))
|
|
673
673
|
{
|
|
674
|
-
|
|
674
|
+
SVFStmtList& pagEdgeList = getPAGEdgesFromInst(cs->getCallSite());
|
|
675
675
|
NodeBS mods;
|
|
676
|
-
for (
|
|
676
|
+
for (SVFStmtList::const_iterator bit = pagEdgeList.begin(), ebit =
|
|
677
677
|
pagEdgeList.end(); bit != ebit; ++bit)
|
|
678
678
|
{
|
|
679
679
|
const PAGEdge* edge = *bit;
|
|
680
|
-
if (const
|
|
680
|
+
if (const StoreStmt* st = SVFUtil::dyn_cast<StoreStmt>(edge))
|
|
681
681
|
mods |= pta->getPts(st->getDstID()).toNodeBS();
|
|
682
682
|
}
|
|
683
683
|
return mods;
|
|
@@ -695,13 +695,13 @@ NodeBS MRGenerator::getRefInfoForCall(const CallBlockNode* cs)
|
|
|
695
695
|
{
|
|
696
696
|
if (isExtCall(cs->getCallSite()) && !isHeapAllocExtCall(cs->getCallSite()))
|
|
697
697
|
{
|
|
698
|
-
|
|
698
|
+
SVFStmtList& pagEdgeList = getPAGEdgesFromInst(cs->getCallSite());
|
|
699
699
|
NodeBS refs;
|
|
700
|
-
for (
|
|
700
|
+
for (SVFStmtList::const_iterator bit = pagEdgeList.begin(), ebit =
|
|
701
701
|
pagEdgeList.end(); bit != ebit; ++bit)
|
|
702
702
|
{
|
|
703
703
|
const PAGEdge* edge = *bit;
|
|
704
|
-
if (const
|
|
704
|
+
if (const LoadStmt* ld = SVFUtil::dyn_cast<LoadStmt>(edge))
|
|
705
705
|
refs |= pta->getPts(ld->getSrcID()).toNodeBS();
|
|
706
706
|
}
|
|
707
707
|
return refs;
|
package/lib/MSSA/MemSSA.cpp
CHANGED
|
@@ -159,16 +159,16 @@ void MemSSA::createMUCHI(const SVFFunction& fun)
|
|
|
159
159
|
it != eit; ++it)
|
|
160
160
|
{
|
|
161
161
|
const Instruction* inst = &*it;
|
|
162
|
-
if(mrGen->
|
|
162
|
+
if(mrGen->hasSVFStmtList(inst))
|
|
163
163
|
{
|
|
164
|
-
|
|
165
|
-
for (
|
|
164
|
+
SVFStmtList& pagEdgeList = mrGen->getPAGEdgesFromInst(inst);
|
|
165
|
+
for (SVFStmtList::const_iterator bit = pagEdgeList.begin(),
|
|
166
166
|
ebit = pagEdgeList.end(); bit != ebit; ++bit)
|
|
167
167
|
{
|
|
168
168
|
const PAGEdge* inst = *bit;
|
|
169
|
-
if (const
|
|
169
|
+
if (const LoadStmt* load = SVFUtil::dyn_cast<LoadStmt>(inst))
|
|
170
170
|
AddLoadMU(bb, load, mrGen->getLoadMRSet(load));
|
|
171
|
-
else if (const
|
|
171
|
+
else if (const StoreStmt* store = SVFUtil::dyn_cast<StoreStmt>(inst))
|
|
172
172
|
AddStoreCHI(bb, store, mrGen->getStoreMRSet(store));
|
|
173
173
|
}
|
|
174
174
|
}
|
|
@@ -301,17 +301,17 @@ void MemSSA::SSARenameBB(const BasicBlock& bb)
|
|
|
301
301
|
it != eit; ++it)
|
|
302
302
|
{
|
|
303
303
|
const Instruction* inst = &*it;
|
|
304
|
-
if(mrGen->
|
|
304
|
+
if(mrGen->hasSVFStmtList(inst))
|
|
305
305
|
{
|
|
306
|
-
|
|
307
|
-
for(
|
|
306
|
+
SVFStmtList& pagEdgeList = mrGen->getPAGEdgesFromInst(inst);
|
|
307
|
+
for(SVFStmtList::const_iterator bit = pagEdgeList.begin(), ebit= pagEdgeList.end();
|
|
308
308
|
bit!=ebit; ++bit)
|
|
309
309
|
{
|
|
310
310
|
const PAGEdge* inst = *bit;
|
|
311
|
-
if (const
|
|
311
|
+
if (const LoadStmt* load = SVFUtil::dyn_cast<LoadStmt>(inst))
|
|
312
312
|
RenameMuSet(getMUSet(load));
|
|
313
313
|
|
|
314
|
-
else if (const
|
|
314
|
+
else if (const StoreStmt* store = SVFUtil::dyn_cast<StoreStmt>(inst))
|
|
315
315
|
RenameChiSet(getCHISet(store),memRegs);
|
|
316
316
|
|
|
317
317
|
}
|
|
@@ -666,12 +666,12 @@ void MemSSA::dumpMSSA(raw_ostream& Out)
|
|
|
666
666
|
else
|
|
667
667
|
{
|
|
668
668
|
bool dump_preamble = false;
|
|
669
|
-
|
|
670
|
-
for(
|
|
669
|
+
SVFStmtList& pagEdgeList = mrGen->getPAGEdgesFromInst(&inst);
|
|
670
|
+
for(SVFStmtList::const_iterator bit = pagEdgeList.begin(), ebit= pagEdgeList.end();
|
|
671
671
|
bit!=ebit; ++bit)
|
|
672
672
|
{
|
|
673
673
|
const PAGEdge* edge = *bit;
|
|
674
|
-
if (const
|
|
674
|
+
if (const LoadStmt* load = SVFUtil::dyn_cast<LoadStmt>(edge))
|
|
675
675
|
{
|
|
676
676
|
MUSet& muSet = getMUSet(load);
|
|
677
677
|
for(MUSet::iterator it = muSet.begin(), eit = muSet.end(); it!=eit; ++it)
|
|
@@ -689,11 +689,11 @@ void MemSSA::dumpMSSA(raw_ostream& Out)
|
|
|
689
689
|
Out << inst << "\n";
|
|
690
690
|
|
|
691
691
|
bool has_chi = false;
|
|
692
|
-
for(
|
|
692
|
+
for(SVFStmtList::const_iterator bit = pagEdgeList.begin(), ebit= pagEdgeList.end();
|
|
693
693
|
bit!=ebit; ++bit)
|
|
694
694
|
{
|
|
695
695
|
const PAGEdge* edge = *bit;
|
|
696
|
-
if (const
|
|
696
|
+
if (const StoreStmt* store = SVFUtil::dyn_cast<StoreStmt>(edge))
|
|
697
697
|
{
|
|
698
698
|
CHISet& chiSet = getCHISet(store);
|
|
699
699
|
for(CHISet::iterator it = chiSet.begin(), eit = chiSet.end(); it!=eit; ++it)
|
package/lib/MTA/MTAAnnotator.cpp
CHANGED
|
@@ -122,8 +122,8 @@ void MTAAnnotator::pruneThreadLocal(PointerAnalysis* pta)
|
|
|
122
122
|
PointsTo worklist;
|
|
123
123
|
|
|
124
124
|
/// find fork arguments' objects
|
|
125
|
-
const PAGEdge::
|
|
126
|
-
for (PAGEdge::
|
|
125
|
+
const PAGEdge::SVFStmtSetTy& forkedges = pag->getPTASVFStmtSet(PAGEdge::ThreadFork);
|
|
126
|
+
for (PAGEdge::SVFStmtSetTy::const_iterator it = forkedges.begin(), eit = forkedges.end(); it != eit; ++it)
|
|
127
127
|
{
|
|
128
128
|
PAGEdge* edge = *it;
|
|
129
129
|
worklist |= pta->getPts(edge->getDstID());
|
|
@@ -131,8 +131,8 @@ void MTAAnnotator::pruneThreadLocal(PointerAnalysis* pta)
|
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
/// find global pointer-to objects
|
|
134
|
-
const SVFIR::
|
|
135
|
-
for (SVFIR::
|
|
134
|
+
const SVFIR::SVFStmtSet& globaledges = pag->getGlobalSVFStmtSet();
|
|
135
|
+
for (SVFIR::SVFStmtSet::const_iterator it = globaledges.begin(), eit = globaledges.end(); it != eit; ++it)
|
|
136
136
|
{
|
|
137
137
|
const PAGEdge* edge = *it;
|
|
138
138
|
if (edge->getEdgeKind() == PAGEdge::Addr)
|
|
@@ -153,7 +153,7 @@ void MTAAnnotator::pruneThreadLocal(PointerAnalysis* pta)
|
|
|
153
153
|
if (!nonlocalobjs.test(*pit))
|
|
154
154
|
worklist.set(*pit);
|
|
155
155
|
}
|
|
156
|
-
NodeBS fields = pag->
|
|
156
|
+
NodeBS fields = pag->getAllFieldsObjVars(obj);
|
|
157
157
|
for (NodeBS::iterator pit = fields.begin(), epit = fields.end(); pit != epit; ++pit)
|
|
158
158
|
{
|
|
159
159
|
if (!nonlocalobjs.test(*pit))
|
|
@@ -152,38 +152,38 @@ void PAGBuilderFromFile::addEdge(NodeID srcID, NodeID dstID,
|
|
|
152
152
|
PAGNode* dstNode = pag->getGNode(dstID);
|
|
153
153
|
|
|
154
154
|
/// sanity check for SVFIR from txt
|
|
155
|
-
assert(SVFUtil::isa<
|
|
155
|
+
assert(SVFUtil::isa<ValVar>(dstNode) && "dst not an value node?");
|
|
156
156
|
if(edge=="addr")
|
|
157
|
-
assert(SVFUtil::isa<
|
|
157
|
+
assert(SVFUtil::isa<ObjVar>(srcNode) && "src not an value node?");
|
|
158
158
|
else
|
|
159
|
-
assert(!SVFUtil::isa<
|
|
159
|
+
assert(!SVFUtil::isa<ObjVar>(srcNode) && "src not an object node?");
|
|
160
160
|
|
|
161
161
|
if (edge == "addr")
|
|
162
162
|
{
|
|
163
|
-
pag->
|
|
163
|
+
pag->addAddrStmt(srcID, dstID);
|
|
164
164
|
}
|
|
165
165
|
else if (edge == "copy")
|
|
166
|
-
pag->
|
|
166
|
+
pag->addCopyStmt(srcID, dstID);
|
|
167
167
|
else if (edge == "load")
|
|
168
|
-
pag->
|
|
168
|
+
pag->addLoadStmt(srcID, dstID);
|
|
169
169
|
else if (edge == "store")
|
|
170
|
-
pag->
|
|
170
|
+
pag->addStoreStmt(srcID, dstID, nullptr);
|
|
171
171
|
else if (edge == "gep")
|
|
172
|
-
pag->
|
|
172
|
+
pag->addNormalGepStmt(srcID, dstID, LocationSet(offsetOrCSId));
|
|
173
173
|
else if (edge == "variant-gep")
|
|
174
|
-
pag->
|
|
174
|
+
pag->addVariantGepStmt(srcID, dstID);
|
|
175
175
|
else if (edge == "call")
|
|
176
176
|
pag->addEdge(srcNode, dstNode, new CallPE(srcNode, dstNode, nullptr));
|
|
177
177
|
else if (edge == "ret")
|
|
178
178
|
pag->addEdge(srcNode, dstNode, new RetPE(srcNode, dstNode, nullptr));
|
|
179
179
|
else if (edge == "cmp")
|
|
180
|
-
pag->
|
|
180
|
+
pag->addCmpStmt(srcID, dstID, dstID, dstID);
|
|
181
181
|
else if (edge == "binary-op")
|
|
182
|
-
pag->
|
|
182
|
+
pag->addBinaryOPStmt(srcID, dstID, dstID, dstID);
|
|
183
183
|
else if (edge == "unary-op")
|
|
184
|
-
pag->
|
|
184
|
+
pag->addUnaryOPStmt(srcID, dstID, dstID);
|
|
185
185
|
else if (edge == "phi")
|
|
186
|
-
pag->
|
|
186
|
+
pag->addPhiStmt(srcID, dstID);
|
|
187
187
|
else if (edge == "branch"){
|
|
188
188
|
assert(false && "fix successors here!");
|
|
189
189
|
//pag->addBranchStmt(srcID, dstID, nullptr);
|
|
@@ -185,7 +185,7 @@ void PointerAnalysis::resetObjFieldSensitive()
|
|
|
185
185
|
{
|
|
186
186
|
for (SVFIR::iterator nIter = pag->begin(); nIter != pag->end(); ++nIter)
|
|
187
187
|
{
|
|
188
|
-
if(
|
|
188
|
+
if(ObjVar* node = SVFUtil::dyn_cast<ObjVar>(nIter->second))
|
|
189
189
|
const_cast<MemObj*>(node->getMemObj())->setFieldSensitive();
|
|
190
190
|
}
|
|
191
191
|
}
|
|
@@ -290,7 +290,7 @@ void PointerAnalysis::dumpAllTypes()
|
|
|
290
290
|
nIter != this->getAllValidPtrs().end(); ++nIter)
|
|
291
291
|
{
|
|
292
292
|
const PAGNode* node = getPAG()->getGNode(*nIter);
|
|
293
|
-
if (SVFUtil::isa<
|
|
293
|
+
if (SVFUtil::isa<DummyObjVar>(node) || SVFUtil::isa<DummyValVar>(node))
|
|
294
294
|
continue;
|
|
295
295
|
|
|
296
296
|
outs() << "##<" << node->getValue()->getName() << "> ";
|
|
@@ -305,18 +305,18 @@ void PointerAnalysis::dumpAllTypes()
|
|
|
305
305
|
}
|
|
306
306
|
|
|
307
307
|
/*!
|
|
308
|
-
* Dump points-to of top-level pointers (
|
|
308
|
+
* Dump points-to of top-level pointers (ValVar)
|
|
309
309
|
*/
|
|
310
310
|
void PointerAnalysis::dumpPts(NodeID ptr, const PointsTo& pts)
|
|
311
311
|
{
|
|
312
312
|
|
|
313
313
|
const PAGNode* node = pag->getGNode(ptr);
|
|
314
314
|
/// print the points-to set of node which has the maximum pts size.
|
|
315
|
-
if (SVFUtil::isa<
|
|
315
|
+
if (SVFUtil::isa<DummyObjVar> (node))
|
|
316
316
|
{
|
|
317
317
|
outs() << "##<Dummy Obj > id:" << node->getId();
|
|
318
318
|
}
|
|
319
|
-
else if (!SVFUtil::isa<
|
|
319
|
+
else if (!SVFUtil::isa<DummyValVar>(node) && !SVFModule::pagReadFromTXT()) {
|
|
320
320
|
if (node->hasValue()) {
|
|
321
321
|
outs() << "##<" << node->getValue()->getName() << "> ";
|
|
322
322
|
outs() << "Source Loc: " << getSourceLoc(node->getValue());
|
|
@@ -342,14 +342,14 @@ void PointerAnalysis::dumpPts(NodeID ptr, const PointsTo& pts)
|
|
|
342
342
|
for (PointsTo::iterator it = pts.begin(), eit = pts.end(); it != eit; ++it)
|
|
343
343
|
{
|
|
344
344
|
const PAGNode* node = pag->getGNode(*it);
|
|
345
|
-
if(SVFUtil::isa<
|
|
345
|
+
if(SVFUtil::isa<ObjVar>(node) == false)
|
|
346
346
|
continue;
|
|
347
347
|
NodeID ptd = node->getId();
|
|
348
348
|
outs() << "!!Target NodeID " << ptd << "\t [";
|
|
349
349
|
const PAGNode* pagNode = pag->getGNode(ptd);
|
|
350
|
-
if (SVFUtil::isa<
|
|
350
|
+
if (SVFUtil::isa<DummyValVar>(node))
|
|
351
351
|
outs() << "DummyVal\n";
|
|
352
|
-
else if (SVFUtil::isa<
|
|
352
|
+
else if (SVFUtil::isa<DummyObjVar>(node))
|
|
353
353
|
outs() << "Dummy Obj id: " << node->getId() << "]\n";
|
|
354
354
|
else {
|
|
355
355
|
if (!SVFModule::pagReadFromTXT()) {
|
|
@@ -445,7 +445,7 @@ void PointerAnalysis::resolveIndCalls(const CallBlockNode* cs, const PointsTo& t
|
|
|
445
445
|
return;
|
|
446
446
|
}
|
|
447
447
|
|
|
448
|
-
if(
|
|
448
|
+
if(ObjVar* objPN = SVFUtil::dyn_cast<ObjVar>(pag->getGNode(*ii)))
|
|
449
449
|
{
|
|
450
450
|
const MemObj* obj = pag->getObject(objPN);
|
|
451
451
|
|