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
|
@@ -40,14 +40,14 @@ namespace SVF
|
|
|
40
40
|
|
|
41
41
|
class SVFVar;
|
|
42
42
|
/*
|
|
43
|
-
* SVFIR
|
|
43
|
+
* SVFIR program variables (PAGNodes)
|
|
44
44
|
*/
|
|
45
45
|
typedef GenericNode<SVFVar,SVFStmt> GenericPAGNodeTy;
|
|
46
46
|
class SVFVar : public GenericPAGNodeTy
|
|
47
47
|
{
|
|
48
48
|
|
|
49
49
|
public:
|
|
50
|
-
/// Nine kinds of SVFIR
|
|
50
|
+
/// Nine kinds of SVFIR variables
|
|
51
51
|
/// ValNode: llvm pointer value
|
|
52
52
|
/// ObjNode: memory object
|
|
53
53
|
/// RetNode: unique return node
|
|
@@ -76,8 +76,8 @@ public:
|
|
|
76
76
|
|
|
77
77
|
protected:
|
|
78
78
|
const Value* value; ///< value of this SVFIR node
|
|
79
|
-
SVFStmt::
|
|
80
|
-
SVFStmt::
|
|
79
|
+
SVFStmt::KindToSVFStmtMapTy InEdgeKindToSetMap;
|
|
80
|
+
SVFStmt::KindToSVFStmtMapTy OutEdgeKindToSetMap;
|
|
81
81
|
bool isTLPointer; /// top-level pointer
|
|
82
82
|
bool isATPointer; /// address-taken pointer
|
|
83
83
|
|
|
@@ -157,22 +157,22 @@ public:
|
|
|
157
157
|
return nullptr;
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
-
/// Get incoming SVFIR edges
|
|
161
|
-
inline SVFStmt::
|
|
160
|
+
/// Get incoming SVFIR statements (edges)
|
|
161
|
+
inline SVFStmt::SVFStmtSetTy& getIncomingEdges(SVFStmt::PEDGEK kind)
|
|
162
162
|
{
|
|
163
163
|
return InEdgeKindToSetMap[kind];
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
-
/// Get outgoing SVFIR edges
|
|
167
|
-
inline SVFStmt::
|
|
166
|
+
/// Get outgoing SVFIR statements (edges)
|
|
167
|
+
inline SVFStmt::SVFStmtSetTy& getOutgoingEdges(SVFStmt::PEDGEK kind)
|
|
168
168
|
{
|
|
169
169
|
return OutEdgeKindToSetMap[kind];
|
|
170
170
|
}
|
|
171
171
|
|
|
172
|
-
/// Has incoming SVFIR edges
|
|
172
|
+
/// Has incoming SVFIR statements (edges)
|
|
173
173
|
inline bool hasIncomingEdges(SVFStmt::PEDGEK kind) const
|
|
174
174
|
{
|
|
175
|
-
SVFStmt::
|
|
175
|
+
SVFStmt::KindToSVFStmtMapTy::const_iterator it = InEdgeKindToSetMap.find(kind);
|
|
176
176
|
if (it != InEdgeKindToSetMap.end())
|
|
177
177
|
return (!it->second.empty());
|
|
178
178
|
else
|
|
@@ -182,7 +182,7 @@ public:
|
|
|
182
182
|
/// Has incoming VariantGepEdges
|
|
183
183
|
inline bool hasIncomingVariantGepEdge() const
|
|
184
184
|
{
|
|
185
|
-
SVFStmt::
|
|
185
|
+
SVFStmt::KindToSVFStmtMapTy::const_iterator it = InEdgeKindToSetMap.find(SVFStmt::VariantGep);
|
|
186
186
|
if (it != InEdgeKindToSetMap.end())
|
|
187
187
|
{
|
|
188
188
|
return (!it->second.empty());
|
|
@@ -191,25 +191,25 @@ public:
|
|
|
191
191
|
}
|
|
192
192
|
|
|
193
193
|
/// Get incoming SVFStmt iterator
|
|
194
|
-
inline SVFStmt::
|
|
194
|
+
inline SVFStmt::SVFStmtSetTy::iterator getIncomingEdgesBegin(SVFStmt::PEDGEK kind) const
|
|
195
195
|
{
|
|
196
|
-
SVFStmt::
|
|
196
|
+
SVFStmt::KindToSVFStmtMapTy::const_iterator it = InEdgeKindToSetMap.find(kind);
|
|
197
197
|
assert(it!=InEdgeKindToSetMap.end() && "The node does not have such kind of edge");
|
|
198
198
|
return it->second.begin();
|
|
199
199
|
}
|
|
200
200
|
|
|
201
201
|
/// Get incoming SVFStmt iterator
|
|
202
|
-
inline SVFStmt::
|
|
202
|
+
inline SVFStmt::SVFStmtSetTy::iterator getIncomingEdgesEnd(SVFStmt::PEDGEK kind) const
|
|
203
203
|
{
|
|
204
|
-
SVFStmt::
|
|
204
|
+
SVFStmt::KindToSVFStmtMapTy::const_iterator it = InEdgeKindToSetMap.find(kind);
|
|
205
205
|
assert(it!=InEdgeKindToSetMap.end() && "The node does not have such kind of edge");
|
|
206
206
|
return it->second.end();
|
|
207
207
|
}
|
|
208
208
|
|
|
209
|
-
/// Has outgoing SVFIR edges
|
|
209
|
+
/// Has outgoing SVFIR statements (edges)
|
|
210
210
|
inline bool hasOutgoingEdges(SVFStmt::PEDGEK kind) const
|
|
211
211
|
{
|
|
212
|
-
SVFStmt::
|
|
212
|
+
SVFStmt::KindToSVFStmtMapTy::const_iterator it = OutEdgeKindToSetMap.find(kind);
|
|
213
213
|
if (it != OutEdgeKindToSetMap.end())
|
|
214
214
|
return (!it->second.empty());
|
|
215
215
|
else
|
|
@@ -217,17 +217,17 @@ public:
|
|
|
217
217
|
}
|
|
218
218
|
|
|
219
219
|
/// Get outgoing SVFStmt iterator
|
|
220
|
-
inline SVFStmt::
|
|
220
|
+
inline SVFStmt::SVFStmtSetTy::iterator getOutgoingEdgesBegin(SVFStmt::PEDGEK kind) const
|
|
221
221
|
{
|
|
222
|
-
SVFStmt::
|
|
222
|
+
SVFStmt::KindToSVFStmtMapTy::const_iterator it = OutEdgeKindToSetMap.find(kind);
|
|
223
223
|
assert(it!=OutEdgeKindToSetMap.end() && "The node does not have such kind of edge");
|
|
224
224
|
return it->second.begin();
|
|
225
225
|
}
|
|
226
226
|
|
|
227
227
|
/// Get outgoing SVFStmt iterator
|
|
228
|
-
inline SVFStmt::
|
|
228
|
+
inline SVFStmt::SVFStmtSetTy::iterator getOutgoingEdgesEnd(SVFStmt::PEDGEK kind) const
|
|
229
229
|
{
|
|
230
|
-
SVFStmt::
|
|
230
|
+
SVFStmt::KindToSVFStmtMapTy::const_iterator it = OutEdgeKindToSetMap.find(kind);
|
|
231
231
|
assert(it!=OutEdgeKindToSetMap.end() && "The node does not have such kind of edge");
|
|
232
232
|
return it->second.end();
|
|
233
233
|
}
|
|
@@ -268,15 +268,15 @@ public:
|
|
|
268
268
|
|
|
269
269
|
|
|
270
270
|
/*
|
|
271
|
-
* Value(Pointer)
|
|
271
|
+
* Value (Pointer) variable
|
|
272
272
|
*/
|
|
273
|
-
class
|
|
273
|
+
class ValVar: public SVFVar
|
|
274
274
|
{
|
|
275
275
|
|
|
276
276
|
public:
|
|
277
277
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
278
278
|
//@{
|
|
279
|
-
static inline bool classof(const
|
|
279
|
+
static inline bool classof(const ValVar *)
|
|
280
280
|
{
|
|
281
281
|
return true;
|
|
282
282
|
}
|
|
@@ -295,7 +295,7 @@ public:
|
|
|
295
295
|
//@}
|
|
296
296
|
|
|
297
297
|
/// Constructor
|
|
298
|
-
|
|
298
|
+
ValVar(const Value* val, NodeID i, PNODEK ty = ValNode) :
|
|
299
299
|
SVFVar(val, i, ty)
|
|
300
300
|
{
|
|
301
301
|
}
|
|
@@ -312,22 +312,22 @@ public:
|
|
|
312
312
|
|
|
313
313
|
|
|
314
314
|
/*
|
|
315
|
-
* Memory Object
|
|
315
|
+
* Memory Object variable
|
|
316
316
|
*/
|
|
317
|
-
class
|
|
317
|
+
class ObjVar: public SVFVar
|
|
318
318
|
{
|
|
319
319
|
|
|
320
320
|
protected:
|
|
321
321
|
const MemObj* mem; ///< memory object
|
|
322
322
|
/// Constructor
|
|
323
|
-
|
|
323
|
+
ObjVar(const Value* val, NodeID i, const MemObj* m, PNODEK ty = ObjNode) :
|
|
324
324
|
SVFVar(val, i, ty), mem(m)
|
|
325
325
|
{
|
|
326
326
|
}
|
|
327
327
|
public:
|
|
328
328
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
329
329
|
//@{
|
|
330
|
-
static inline bool classof(const
|
|
330
|
+
static inline bool classof(const ObjVar *)
|
|
331
331
|
{
|
|
332
332
|
return true;
|
|
333
333
|
}
|
|
@@ -377,11 +377,11 @@ public:
|
|
|
377
377
|
|
|
378
378
|
|
|
379
379
|
/*
|
|
380
|
-
* Gep Value (Pointer)
|
|
381
|
-
* e.g. memcpy, temp gep value
|
|
382
|
-
* Each Gep Value
|
|
380
|
+
* Gep Value (Pointer) variable, this variable can be dynamic generated for field sensitive analysis
|
|
381
|
+
* e.g. memcpy, temp gep value variable needs to be created
|
|
382
|
+
* Each Gep Value variable is connected to base value variable via gep edge
|
|
383
383
|
*/
|
|
384
|
-
class
|
|
384
|
+
class GepValVar: public ValVar
|
|
385
385
|
{
|
|
386
386
|
|
|
387
387
|
private:
|
|
@@ -392,11 +392,11 @@ private:
|
|
|
392
392
|
public:
|
|
393
393
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
394
394
|
//@{
|
|
395
|
-
static inline bool classof(const
|
|
395
|
+
static inline bool classof(const GepValVar *)
|
|
396
396
|
{
|
|
397
397
|
return true;
|
|
398
398
|
}
|
|
399
|
-
static inline bool classof(const
|
|
399
|
+
static inline bool classof(const ValVar * node)
|
|
400
400
|
{
|
|
401
401
|
return node->getNodeKind() == SVFVar::GepValNode;
|
|
402
402
|
}
|
|
@@ -411,12 +411,12 @@ public:
|
|
|
411
411
|
//@}
|
|
412
412
|
|
|
413
413
|
/// Constructor
|
|
414
|
-
|
|
415
|
-
|
|
414
|
+
GepValVar(const Value* val, NodeID i, const LocationSet& l, const Type *ty, u32_t idx) :
|
|
415
|
+
ValVar(val, i, GepValNode), ls(l), gepValType(ty), fieldIdx(idx)
|
|
416
416
|
{
|
|
417
417
|
}
|
|
418
418
|
|
|
419
|
-
/// offset of the base value
|
|
419
|
+
/// offset of the base value variable
|
|
420
420
|
inline u32_t getOffset() const
|
|
421
421
|
{
|
|
422
422
|
return ls.getOffset();
|
|
@@ -445,10 +445,10 @@ public:
|
|
|
445
445
|
|
|
446
446
|
|
|
447
447
|
/*
|
|
448
|
-
* Gep Obj
|
|
449
|
-
* Each gep obj
|
|
448
|
+
* Gep Obj variable, this is dynamic generated for field sensitive analysis
|
|
449
|
+
* Each gep obj variable is one field of a MemObj (base)
|
|
450
450
|
*/
|
|
451
|
-
class GepObjPN: public
|
|
451
|
+
class GepObjPN: public ObjVar
|
|
452
452
|
{
|
|
453
453
|
private:
|
|
454
454
|
LocationSet ls;
|
|
@@ -461,7 +461,7 @@ public:
|
|
|
461
461
|
{
|
|
462
462
|
return true;
|
|
463
463
|
}
|
|
464
|
-
static inline bool classof(const
|
|
464
|
+
static inline bool classof(const ObjVar * node)
|
|
465
465
|
{
|
|
466
466
|
return node->getNodeKind() == SVFVar::GepObjNode
|
|
467
467
|
|| node->getNodeKind() == SVFVar::CloneGepObjNode;
|
|
@@ -480,7 +480,7 @@ public:
|
|
|
480
480
|
|
|
481
481
|
/// Constructor
|
|
482
482
|
GepObjPN(const MemObj* mem, NodeID i, const LocationSet& l, PNODEK ty = GepObjNode) :
|
|
483
|
-
|
|
483
|
+
ObjVar(mem->getValue(), i, mem, ty), ls(l)
|
|
484
484
|
{
|
|
485
485
|
base = mem->getId();
|
|
486
486
|
}
|
|
@@ -521,20 +521,20 @@ public:
|
|
|
521
521
|
};
|
|
522
522
|
|
|
523
523
|
/*
|
|
524
|
-
* Field-insensitive Gep Obj
|
|
524
|
+
* Field-insensitive Gep Obj variable, this is dynamic generated for field sensitive analysis
|
|
525
525
|
* Each field-insensitive gep obj node represents all fields of a MemObj (base)
|
|
526
526
|
*/
|
|
527
|
-
class
|
|
527
|
+
class FIObjVar: public ObjVar
|
|
528
528
|
{
|
|
529
529
|
public:
|
|
530
530
|
|
|
531
531
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
532
532
|
//@{
|
|
533
|
-
static inline bool classof(const
|
|
533
|
+
static inline bool classof(const FIObjVar *)
|
|
534
534
|
{
|
|
535
535
|
return true;
|
|
536
536
|
}
|
|
537
|
-
static inline bool classof(const
|
|
537
|
+
static inline bool classof(const ObjVar * node)
|
|
538
538
|
{
|
|
539
539
|
return node->getNodeKind() == SVFVar::FIObjNode
|
|
540
540
|
|| node->getNodeKind() == SVFVar::CloneFIObjNode;
|
|
@@ -552,8 +552,8 @@ public:
|
|
|
552
552
|
//@}
|
|
553
553
|
|
|
554
554
|
/// Constructor
|
|
555
|
-
|
|
556
|
-
|
|
555
|
+
FIObjVar(const Value* val, NodeID i, const MemObj* mem, PNODEK ty = FIObjNode) :
|
|
556
|
+
ObjVar(val, i, mem, ty)
|
|
557
557
|
{
|
|
558
558
|
}
|
|
559
559
|
|
|
@@ -649,15 +649,15 @@ public:
|
|
|
649
649
|
|
|
650
650
|
|
|
651
651
|
/*
|
|
652
|
-
* Dummy
|
|
652
|
+
* Dummy variable without any LLVM value
|
|
653
653
|
*/
|
|
654
|
-
class
|
|
654
|
+
class DummyValVar: public ValVar
|
|
655
655
|
{
|
|
656
656
|
|
|
657
657
|
public:
|
|
658
658
|
|
|
659
659
|
//@{ Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
660
|
-
static inline bool classof(const
|
|
660
|
+
static inline bool classof(const DummyValVar *)
|
|
661
661
|
{
|
|
662
662
|
return true;
|
|
663
663
|
}
|
|
@@ -672,7 +672,7 @@ public:
|
|
|
672
672
|
//@}
|
|
673
673
|
|
|
674
674
|
/// Constructor
|
|
675
|
-
|
|
675
|
+
DummyValVar(NodeID i) : ValVar(nullptr, i, DummyValNode)
|
|
676
676
|
{
|
|
677
677
|
}
|
|
678
678
|
|
|
@@ -688,15 +688,15 @@ public:
|
|
|
688
688
|
|
|
689
689
|
|
|
690
690
|
/*
|
|
691
|
-
* Dummy
|
|
691
|
+
* Dummy object variable
|
|
692
692
|
*/
|
|
693
|
-
class
|
|
693
|
+
class DummyObjVar: public ObjVar
|
|
694
694
|
{
|
|
695
695
|
|
|
696
696
|
public:
|
|
697
697
|
|
|
698
698
|
//@{ Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
699
|
-
static inline bool classof(const
|
|
699
|
+
static inline bool classof(const DummyObjVar *)
|
|
700
700
|
{
|
|
701
701
|
return true;
|
|
702
702
|
}
|
|
@@ -713,8 +713,8 @@ public:
|
|
|
713
713
|
//@}
|
|
714
714
|
|
|
715
715
|
/// Constructor
|
|
716
|
-
|
|
717
|
-
:
|
|
716
|
+
DummyObjVar(NodeID i,const MemObj* m, PNODEK ty = DummyObjNode)
|
|
717
|
+
: ObjVar(nullptr, i, m, ty)
|
|
718
718
|
{
|
|
719
719
|
}
|
|
720
720
|
|
|
@@ -730,11 +730,11 @@ public:
|
|
|
730
730
|
/*
|
|
731
731
|
* Clone object node for dummy objects.
|
|
732
732
|
*/
|
|
733
|
-
class
|
|
733
|
+
class CloneDummyObjVar: public DummyObjVar
|
|
734
734
|
{
|
|
735
735
|
public:
|
|
736
736
|
//@{ Methods to support type inquiry through isa, cast, and dyn_cast:
|
|
737
|
-
static inline bool classof(const
|
|
737
|
+
static inline bool classof(const CloneDummyObjVar *)
|
|
738
738
|
{
|
|
739
739
|
return true;
|
|
740
740
|
}
|
|
@@ -749,15 +749,15 @@ public:
|
|
|
749
749
|
//@}
|
|
750
750
|
|
|
751
751
|
/// Constructor
|
|
752
|
-
|
|
753
|
-
:
|
|
752
|
+
CloneDummyObjVar(NodeID i, const MemObj* m, PNODEK ty = CloneDummyObjNode)
|
|
753
|
+
: DummyObjVar(i, m, ty)
|
|
754
754
|
{
|
|
755
755
|
}
|
|
756
756
|
|
|
757
757
|
/// Return name of this node
|
|
758
758
|
inline const std::string getValueName() const
|
|
759
759
|
{
|
|
760
|
-
return "clone of " +
|
|
760
|
+
return "clone of " + ObjVar::getValueName();
|
|
761
761
|
}
|
|
762
762
|
|
|
763
763
|
virtual const std::string toString() const;
|
|
@@ -766,11 +766,11 @@ public:
|
|
|
766
766
|
/*
|
|
767
767
|
* Clone object for GEP objects.
|
|
768
768
|
*/
|
|
769
|
-
class
|
|
769
|
+
class CloneGepObjVar : public GepObjPN
|
|
770
770
|
{
|
|
771
771
|
public:
|
|
772
772
|
//@{ Methods to support type inquiry through isa, cast, and dyn_cast:
|
|
773
|
-
static inline bool classof(const
|
|
773
|
+
static inline bool classof(const CloneGepObjVar *)
|
|
774
774
|
{
|
|
775
775
|
return true;
|
|
776
776
|
}
|
|
@@ -785,7 +785,7 @@ public:
|
|
|
785
785
|
//@}
|
|
786
786
|
|
|
787
787
|
/// Constructor
|
|
788
|
-
|
|
788
|
+
CloneGepObjVar(const MemObj* mem, NodeID i, const LocationSet& l, PNODEK ty = CloneGepObjNode) :
|
|
789
789
|
GepObjPN(mem, i, l, ty)
|
|
790
790
|
{
|
|
791
791
|
}
|
|
@@ -802,11 +802,11 @@ public:
|
|
|
802
802
|
/*
|
|
803
803
|
* Clone object for FI objects.
|
|
804
804
|
*/
|
|
805
|
-
class
|
|
805
|
+
class CloneFIObjVar : public FIObjVar
|
|
806
806
|
{
|
|
807
807
|
public:
|
|
808
808
|
//@{ Methods to support type inquiry through isa, cast, and dyn_cast:
|
|
809
|
-
static inline bool classof(const
|
|
809
|
+
static inline bool classof(const CloneFIObjVar *)
|
|
810
810
|
{
|
|
811
811
|
return true;
|
|
812
812
|
}
|
|
@@ -821,15 +821,15 @@ public:
|
|
|
821
821
|
//@}
|
|
822
822
|
|
|
823
823
|
/// Constructor
|
|
824
|
-
|
|
825
|
-
|
|
824
|
+
CloneFIObjVar(const Value* val, NodeID i, const MemObj* mem, PNODEK ty = CloneFIObjNode) :
|
|
825
|
+
FIObjVar(val, i, mem, ty)
|
|
826
826
|
{
|
|
827
827
|
}
|
|
828
828
|
|
|
829
829
|
/// Return name of this node
|
|
830
830
|
inline const std::string getValueName() const
|
|
831
831
|
{
|
|
832
|
-
return "clone (FI) of " +
|
|
832
|
+
return "clone (FI) of " + FIObjVar::getValueName();
|
|
833
833
|
}
|
|
834
834
|
|
|
835
835
|
virtual const std::string toString() const;
|
|
@@ -269,56 +269,56 @@ public:
|
|
|
269
269
|
|
|
270
270
|
public:
|
|
271
271
|
|
|
272
|
-
NodeID
|
|
272
|
+
NodeID getGepValVar(const Value* val, const LocationSet& ls, const Type *baseType, u32_t fieldidx);
|
|
273
273
|
|
|
274
274
|
void setCurrentBBAndValueForPAGEdge(PAGEdge* edge);
|
|
275
275
|
|
|
276
276
|
inline PAGEdge* addBlackHoleAddrEdge(NodeID node)
|
|
277
277
|
{
|
|
278
|
-
PAGEdge *edge = pag->
|
|
278
|
+
PAGEdge *edge = pag->addBlackHoleAddrStmt(node);
|
|
279
279
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
280
280
|
return edge;
|
|
281
281
|
}
|
|
282
282
|
|
|
283
283
|
/// Add Address edge
|
|
284
|
-
inline
|
|
284
|
+
inline AddrStmt* addAddrEdge(NodeID src, NodeID dst)
|
|
285
285
|
{
|
|
286
|
-
|
|
286
|
+
AddrStmt *edge = pag->addAddrStmt(src, dst);
|
|
287
287
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
288
288
|
return edge;
|
|
289
289
|
}
|
|
290
290
|
/// Add Copy edge
|
|
291
|
-
inline
|
|
291
|
+
inline CopyStmt* addCopyEdge(NodeID src, NodeID dst)
|
|
292
292
|
{
|
|
293
|
-
|
|
293
|
+
CopyStmt *edge = pag->addCopyStmt(src, dst);
|
|
294
294
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
295
295
|
return edge;
|
|
296
296
|
}
|
|
297
297
|
/// Add Copy edge
|
|
298
|
-
inline
|
|
298
|
+
inline PhiStmt* addPhiStmt(NodeID res, NodeID opnd)
|
|
299
299
|
{
|
|
300
|
-
|
|
300
|
+
PhiStmt *edge = pag->addPhiStmt(res,opnd);
|
|
301
301
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
302
302
|
return edge;
|
|
303
303
|
}
|
|
304
304
|
/// Add Copy edge
|
|
305
|
-
inline
|
|
305
|
+
inline CmpStmt* addCmpEdge(NodeID op1, NodeID op2, NodeID dst, u32_t predict)
|
|
306
306
|
{
|
|
307
|
-
|
|
307
|
+
CmpStmt *edge = pag->addCmpStmt(op1, op2, dst, predict);
|
|
308
308
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
309
309
|
return edge;
|
|
310
310
|
}
|
|
311
311
|
/// Add Copy edge
|
|
312
|
-
inline
|
|
312
|
+
inline BinaryOPStmt* addBinaryOPEdge(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)
|
|
313
313
|
{
|
|
314
|
-
|
|
314
|
+
BinaryOPStmt *edge = pag->addBinaryOPStmt(op1, op2, dst, opcode);
|
|
315
315
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
316
316
|
return edge;
|
|
317
317
|
}
|
|
318
318
|
/// Add Unary edge
|
|
319
|
-
inline
|
|
319
|
+
inline UnaryOPStmt* addUnaryOPEdge(NodeID src, NodeID dst, u32_t opcode)
|
|
320
320
|
{
|
|
321
|
-
|
|
321
|
+
UnaryOPStmt *edge = pag->addUnaryOPStmt(src, dst, opcode);
|
|
322
322
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
323
323
|
return edge;
|
|
324
324
|
}
|
|
@@ -329,21 +329,21 @@ public:
|
|
|
329
329
|
return edge;
|
|
330
330
|
}
|
|
331
331
|
/// Add Load edge
|
|
332
|
-
inline
|
|
332
|
+
inline LoadStmt* addLoadEdge(NodeID src, NodeID dst)
|
|
333
333
|
{
|
|
334
|
-
|
|
334
|
+
LoadStmt *edge = pag->addLoadStmt(src, dst);
|
|
335
335
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
336
336
|
return edge;
|
|
337
337
|
}
|
|
338
338
|
/// Add Store edge
|
|
339
|
-
inline
|
|
339
|
+
inline StoreStmt* addStoreEdge(NodeID src, NodeID dst)
|
|
340
340
|
{
|
|
341
341
|
IntraBlockNode* node;
|
|
342
342
|
if(const Instruction* inst = SVFUtil::dyn_cast<Instruction>(curVal))
|
|
343
343
|
node = pag->getICFG()->getIntraBlockNode(inst);
|
|
344
344
|
else
|
|
345
345
|
node = nullptr;
|
|
346
|
-
|
|
346
|
+
StoreStmt *edge = pag->addStoreStmt(src, dst, node);
|
|
347
347
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
348
348
|
return edge;
|
|
349
349
|
}
|
|
@@ -362,23 +362,23 @@ public:
|
|
|
362
362
|
return edge;
|
|
363
363
|
}
|
|
364
364
|
/// Add Gep edge
|
|
365
|
-
inline
|
|
365
|
+
inline GepStmt* addGepEdge(NodeID src, NodeID dst, const LocationSet& ls, bool constGep)
|
|
366
366
|
{
|
|
367
|
-
|
|
367
|
+
GepStmt *edge = pag->addGepStmt(src, dst, ls, constGep);
|
|
368
368
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
369
369
|
return edge;
|
|
370
370
|
}
|
|
371
371
|
/// Add Offset(Gep) edge
|
|
372
|
-
inline
|
|
372
|
+
inline NormalGepStmt* addNormalGepEdge(NodeID src, NodeID dst, const LocationSet& ls)
|
|
373
373
|
{
|
|
374
|
-
|
|
374
|
+
NormalGepStmt *edge = pag->addNormalGepStmt(src, dst, ls);
|
|
375
375
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
376
376
|
return edge;
|
|
377
377
|
}
|
|
378
378
|
/// Add Variant(Gep) edge
|
|
379
|
-
inline
|
|
379
|
+
inline VariantGepStmt* addVariantGepEdge(NodeID src, NodeID dst)
|
|
380
380
|
{
|
|
381
|
-
|
|
381
|
+
VariantGepStmt *edge = pag->addVariantGepStmt(src, dst);
|
|
382
382
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
383
383
|
return edge;
|
|
384
384
|
}
|
|
@@ -99,7 +99,7 @@ private:
|
|
|
99
99
|
SVF::Size_t locationSetOffset = std::stoi(llvm::cast<llvm::MDString>(mdNode->getOperand(1))->getString().str());
|
|
100
100
|
|
|
101
101
|
LocationSet locationSet = LocationSet(locationSetOffset);
|
|
102
|
-
SVF::NodeID gepnodeId = pag->
|
|
102
|
+
SVF::NodeID gepnodeId = pag->getGepObjVar(baseNodeId, locationSet);
|
|
103
103
|
|
|
104
104
|
assert(nodeId == gepnodeId && "nodeId != gepnodeId");
|
|
105
105
|
}
|
package/include/Util/Options.h
CHANGED
|
@@ -243,13 +243,15 @@ public:
|
|
|
243
243
|
// TypeAnalysis.cpp
|
|
244
244
|
static const llvm::cl::opt<bool> GenICFG;
|
|
245
245
|
|
|
246
|
-
//WPAPass.cpp
|
|
246
|
+
// WPAPass.cpp
|
|
247
247
|
static const llvm::cl::opt<bool> AnderSVFG;
|
|
248
248
|
static const llvm::cl::opt<bool> SABERFULLSVFG;
|
|
249
249
|
static const llvm::cl::opt<bool> PrintAliases;
|
|
250
250
|
static llvm::cl::bits<PointerAnalysis::PTATY> PASelected;
|
|
251
251
|
static llvm::cl::bits<WPAPass::AliasCheckRule> AliasRule;
|
|
252
252
|
|
|
253
|
+
// DOTGraphTraits
|
|
254
|
+
static const llvm::cl::opt<bool> ShowHiddenNode;
|
|
253
255
|
};
|
|
254
256
|
} // namespace SVF
|
|
255
257
|
|
|
@@ -97,8 +97,8 @@ protected:
|
|
|
97
97
|
const NodeBS &getGepObjs(NodeID base);
|
|
98
98
|
|
|
99
99
|
/// Returns the GEP object node(s) of base for ls. This may include clones.
|
|
100
|
-
/// If there are no GEP objects, then
|
|
101
|
-
/// (through base's
|
|
100
|
+
/// If there are no GEP objects, then getGepObjVar is called on the SVFIR
|
|
101
|
+
/// (through base's getGepObjVar) which will create one.
|
|
102
102
|
const NodeBS getGepObjClones(NodeID base, unsigned offset);
|
|
103
103
|
|
|
104
104
|
/// Initialise the pointees of p at loc (which is type tildet *). reuse indicates
|
package/include/WPA/Andersen.h
CHANGED
|
@@ -73,7 +73,7 @@ public:
|
|
|
73
73
|
virtual bool processPhi(const PHISVFGNode* phi) override;
|
|
74
74
|
virtual bool processCopy(const CopySVFGNode* copy) override;
|
|
75
75
|
|
|
76
|
-
virtual inline const NodeBS&
|
|
76
|
+
virtual inline const NodeBS& getAllFieldsObjVars(NodeID id) override;
|
|
77
77
|
|
|
78
78
|
virtual inline bool updateInFromIn(const SVFGNode* srcStmt, NodeID srcVar, const SVFGNode* dstStmt, NodeID dstVar) override;
|
|
79
79
|
virtual inline bool updateInFromOut(const SVFGNode* srcStmt, NodeID srcVar, const SVFGNode* dstStmt, NodeID dstVar) override;
|
package/lib/DDA/ContextDDA.cpp
CHANGED
|
@@ -140,15 +140,15 @@ CxtPtSet ContextDDA::processGepPts(const GepSVFGNode* gep, const CxtPtSet& srcPt
|
|
|
140
140
|
tmpDstPts.set(ptd);
|
|
141
141
|
else
|
|
142
142
|
{
|
|
143
|
-
if (SVFUtil::isa<
|
|
143
|
+
if (SVFUtil::isa<VariantGepStmt>(gep->getPAGEdge()))
|
|
144
144
|
{
|
|
145
145
|
setObjFieldInsensitive(ptd.get_id());
|
|
146
|
-
CxtVar var(ptd.get_cond(),
|
|
146
|
+
CxtVar var(ptd.get_cond(),getFIObjVar(ptd.get_id()));
|
|
147
147
|
tmpDstPts.set(var);
|
|
148
148
|
}
|
|
149
|
-
else if (const
|
|
149
|
+
else if (const NormalGepStmt* normalGep = SVFUtil::dyn_cast<NormalGepStmt>(gep->getPAGEdge()))
|
|
150
150
|
{
|
|
151
|
-
CxtVar var(ptd.get_cond(),
|
|
151
|
+
CxtVar var(ptd.get_cond(),getGepObjVar(ptd.get_id(),normalGep->getLocationSet()));
|
|
152
152
|
tmpDstPts.set(var);
|
|
153
153
|
}
|
|
154
154
|
else
|
|
@@ -319,10 +319,10 @@ bool ContextDDA::isHeapCondMemObj(const CxtVar& var, const StoreSVFGNode*)
|
|
|
319
319
|
if (!mem->getValue()) {
|
|
320
320
|
PAGNode *pnode = _pag->getGNode(getPtrNodeID(var));
|
|
321
321
|
if(GepObjPN* gepobj = SVFUtil::dyn_cast<GepObjPN>(pnode)){
|
|
322
|
-
assert(SVFUtil::isa<
|
|
322
|
+
assert(SVFUtil::isa<DummyObjVar>(_pag->getGNode(gepobj->getBaseNode())) && "emtpy refVal in a gep object whose base is a non-dummy object");
|
|
323
323
|
}
|
|
324
324
|
else{
|
|
325
|
-
assert((SVFUtil::isa<
|
|
325
|
+
assert((SVFUtil::isa<DummyObjVar>(pnode) || SVFUtil::isa<DummyValVar>(pnode)) && "empty refVal in non-dummy object");
|
|
326
326
|
}
|
|
327
327
|
return true;
|
|
328
328
|
}
|