svf-tools 1.0.321 → 1.0.322
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +9 -9
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +11 -11
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +11 -11
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +33 -33
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +31 -31
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +32 -32
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/SVFStatements_8h.html +11 -11
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +72 -72
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/SVFVariables_8h.html +9 -9
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +66 -66
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +11 -11
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/VFG_8h_source.html +21 -21
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/annotated.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +136 -0
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +498 -0
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +154 -0
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +754 -0
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +169 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +537 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +169 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +547 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +172 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +556 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +74 -22
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +477 -93
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +56 -21
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +251 -89
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +167 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +531 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +165 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +502 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +167 -0
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +577 -0
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +37 -37
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +56 -22
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +257 -118
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +170 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +752 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1LoadMU-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LoadMU.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +56 -21
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +251 -89
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +63 -63
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +71 -71
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt-members.html +141 -0
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +647 -0
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +165 -0
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +644 -0
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +73 -22
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +445 -98
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +142 -142
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +137 -137
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreCHI-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +56 -21
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +258 -89
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +146 -0
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +792 -0
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +69 -69
- package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +163 -0
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +521 -0
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt-members.html +138 -0
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +542 -0
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
- package/SVF-doxygen/html/html/classes.html +18 -18
- package/SVF-doxygen/html/html/functions_a.html +39 -39
- package/SVF-doxygen/html/html/functions_b.html +2 -2
- package/SVF-doxygen/html/html/functions_c.html +34 -34
- package/SVF-doxygen/html/html/functions_d.html +4 -4
- package/SVF-doxygen/html/html/functions_f.html +3 -3
- package/SVF-doxygen/html/html/functions_func.html +38 -38
- package/SVF-doxygen/html/html/functions_func_b.html +2 -2
- package/SVF-doxygen/html/html/functions_func_c.html +30 -30
- package/SVF-doxygen/html/html/functions_func_d.html +4 -4
- package/SVF-doxygen/html/html/functions_func_f.html +2 -2
- package/SVF-doxygen/html/html/functions_func_g.html +49 -49
- package/SVF-doxygen/html/html/functions_func_l.html +3 -3
- package/SVF-doxygen/html/html/functions_func_n.html +2 -2
- package/SVF-doxygen/html/html/functions_func_o.html +15 -15
- package/SVF-doxygen/html/html/functions_func_p.html +2 -2
- package/SVF-doxygen/html/html/functions_func_s.html +4 -4
- package/SVF-doxygen/html/html/functions_func_t.html +20 -20
- package/SVF-doxygen/html/html/functions_func_u.html +2 -2
- package/SVF-doxygen/html/html/functions_func_v.html +5 -5
- package/SVF-doxygen/html/html/functions_g.html +52 -52
- package/SVF-doxygen/html/html/functions_i.html +2 -2
- package/SVF-doxygen/html/html/functions_l.html +9 -9
- package/SVF-doxygen/html/html/functions_m.html +1 -1
- package/SVF-doxygen/html/html/functions_n.html +2 -2
- package/SVF-doxygen/html/html/functions_o.html +17 -17
- package/SVF-doxygen/html/html/functions_p.html +4 -4
- package/SVF-doxygen/html/html/functions_s.html +7 -7
- package/SVF-doxygen/html/html/functions_t.html +20 -20
- package/SVF-doxygen/html/html/functions_type_c.html +1 -1
- package/SVF-doxygen/html/html/functions_type_l.html +3 -3
- package/SVF-doxygen/html/html/functions_type_p.html +1 -1
- package/SVF-doxygen/html/html/functions_type_s.html +3 -3
- package/SVF-doxygen/html/html/functions_u.html +2 -2
- package/SVF-doxygen/html/html/functions_v.html +5 -5
- package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_g.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_i.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_l.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_o.html +3 -3
- package/SVF-doxygen/html/html/functions_w.html +5 -9
- package/SVF-doxygen/html/html/hierarchy.html +65 -65
- package/SVF-doxygen/html/html/namespaceSVF.html +23 -23
- package/SVF-doxygen/html/html/search/all_1.js +37 -37
- package/SVF-doxygen/html/html/search/all_10.js +2 -2
- package/SVF-doxygen/html/html/search/all_13.js +6 -6
- package/SVF-doxygen/html/html/search/all_14.js +1 -1
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_2.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +8 -8
- package/SVF-doxygen/html/html/search/all_4.js +2 -2
- package/SVF-doxygen/html/html/search/all_6.js +2 -2
- package/SVF-doxygen/html/html/search/all_7.js +26 -26
- package/SVF-doxygen/html/html/search/all_9.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +7 -7
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +1 -1
- package/SVF-doxygen/html/html/search/all_f.js +3 -3
- package/SVF-doxygen/html/html/search/classes_0.js +1 -1
- package/SVF-doxygen/html/html/search/classes_1.js +1 -1
- package/SVF-doxygen/html/html/search/classes_11.js +1 -1
- package/SVF-doxygen/html/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/html/search/classes_2.js +5 -5
- package/SVF-doxygen/html/html/search/classes_3.js +2 -2
- package/SVF-doxygen/html/html/search/classes_5.js +1 -1
- package/SVF-doxygen/html/html/search/classes_6.js +2 -2
- package/SVF-doxygen/html/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/html/search/classes_b.js +1 -1
- package/SVF-doxygen/html/html/search/classes_c.js +1 -1
- package/SVF-doxygen/html/html/search/classes_d.js +1 -1
- package/SVF-doxygen/html/html/search/classes_f.js +1 -1
- package/SVF-doxygen/html/html/search/functions_0.js +37 -37
- package/SVF-doxygen/html/html/search/functions_1.js +1 -1
- package/SVF-doxygen/html/html/search/functions_10.js +3 -3
- package/SVF-doxygen/html/html/search/functions_11.js +1 -1
- package/SVF-doxygen/html/html/search/functions_12.js +1 -1
- package/SVF-doxygen/html/html/search/functions_13.js +2 -2
- package/SVF-doxygen/html/html/search/functions_2.js +7 -7
- package/SVF-doxygen/html/html/search/functions_3.js +2 -2
- package/SVF-doxygen/html/html/search/functions_5.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +25 -25
- package/SVF-doxygen/html/html/search/functions_a.js +3 -3
- package/SVF-doxygen/html/html/search/functions_c.js +1 -1
- package/SVF-doxygen/html/html/search/functions_d.js +2 -2
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +3 -3
- package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_b.js +3 -3
- package/SVF-doxygen/html/html/search/typedefs_f.js +1 -1
- package/SVF-doxygen/html/html/search/variables_6.js +1 -1
- package/SVF-doxygen/html/html/search/variables_7.js +1 -1
- package/SVF-doxygen/html/html/search/variables_9.js +1 -1
- package/SVF-doxygen/html/html/search/variables_c.js +1 -1
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_f.js +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +1 -1
- package/include/Graphs/ICFGNode.h +1 -1
- package/include/Graphs/VFG.h +9 -9
- package/include/Graphs/VFGNode.h +6 -6
- package/include/MSSA/MSSAMuChi.h +6 -6
- package/include/MSSA/MemRegion.h +8 -8
- package/include/MSSA/MemSSA.h +10 -10
- package/include/MemoryModel/PointerAnalysis.h +1 -1
- package/include/MemoryModel/PointerAnalysisImpl.h +2 -2
- package/include/MemoryModel/SVFIR.h +28 -28
- package/include/MemoryModel/SVFStatements.h +68 -68
- package/include/MemoryModel/SVFVariables.h +39 -39
- package/include/SVF-FE/SVFIRBuilder.h +22 -22
- package/lib/DDA/ContextDDA.cpp +4 -4
- package/lib/DDA/DDAStat.cpp +1 -1
- package/lib/DDA/FlowDDA.cpp +2 -2
- package/lib/Graphs/ConsG.cpp +12 -12
- package/lib/Graphs/IRGraph.cpp +15 -15
- package/lib/Graphs/OfflineConsG.cpp +8 -8
- package/lib/Graphs/SVFG.cpp +8 -8
- package/lib/Graphs/ThreadCallGraph.cpp +2 -2
- package/lib/Graphs/VFG.cpp +15 -15
- package/lib/MSSA/MemRegion.cpp +6 -6
- package/lib/MSSA/MemSSA.cpp +6 -6
- package/lib/MemoryModel/PAGBuilderFromFile.cpp +3 -3
- package/lib/MemoryModel/PointerAnalysis.cpp +9 -9
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +2 -2
- package/lib/MemoryModel/SVFIR.cpp +44 -44
- package/lib/MemoryModel/SVFStatements.cpp +24 -24
- package/lib/MemoryModel/SVFVariables.cpp +19 -19
- package/lib/SABER/SaberSVFGBuilder.cpp +2 -2
- package/lib/SVF-FE/Graph2Json.cpp +1 -1
- package/lib/SVF-FE/SVFIRBuilder.cpp +5 -5
- package/lib/Util/PTAStat.cpp +1 -1
- package/lib/Util/TypeBasedHeapCloning.cpp +19 -19
- package/lib/WPA/AndersenSFR.cpp +1 -1
- package/lib/WPA/AndersenStat.cpp +3 -3
- package/lib/WPA/FlowSensitive.cpp +2 -2
- package/lib/WPA/FlowSensitiveStat.cpp +2 -2
- package/lib/WPA/FlowSensitiveTBHC.cpp +4 -4
- package/lib/WPA/VersionedFlowSensitive.cpp +1 -1
- package/lib/WPA/VersionedFlowSensitiveStat.cpp +1 -1
- package/package.json +1 -1
|
@@ -281,44 +281,44 @@ public:
|
|
|
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->addAddrPE(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->addCopyPE(src, dst);
|
|
294
294
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
295
295
|
return edge;
|
|
296
296
|
}
|
|
297
297
|
/// Add Copy edge
|
|
298
|
-
inline
|
|
298
|
+
inline PhiStmt* addPhiNode(NodeID res, NodeID opnd)
|
|
299
299
|
{
|
|
300
|
-
|
|
300
|
+
PhiStmt *edge = pag->addPhiNode(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 opcode)
|
|
306
306
|
{
|
|
307
|
-
|
|
307
|
+
CmpStmt *edge = pag->addCmpPE(op1, op2, dst, opcode);
|
|
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->addBinaryOPPE(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->addUnaryOPPE(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->addLoadPE(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->addStorePE(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->addGepPE(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->addNormalGepPE(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->addVariantGepPE(src, dst);
|
|
382
382
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
383
383
|
return edge;
|
|
384
384
|
}
|
package/lib/DDA/ContextDDA.cpp
CHANGED
|
@@ -140,13 +140,13 @@ 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
146
|
CxtVar var(ptd.get_cond(),getFIObjNode(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
151
|
CxtVar var(ptd.get_cond(),getGepObjNode(ptd.get_id(),normalGep->getLocationSet()));
|
|
152
152
|
tmpDstPts.set(var);
|
|
@@ -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
|
}
|
package/lib/DDA/DDAStat.cpp
CHANGED
|
@@ -208,7 +208,7 @@ void DDAStat::performStat()
|
|
|
208
208
|
for (SVFIR::const_iterator nodeIt = SVFIR::getPAG()->begin(), nodeEit = SVFIR::getPAG()->end(); nodeIt != nodeEit; nodeIt++)
|
|
209
209
|
{
|
|
210
210
|
PAGNode* pagNode = nodeIt->second;
|
|
211
|
-
if(SVFUtil::isa<
|
|
211
|
+
if(SVFUtil::isa<ObjVar>(pagNode))
|
|
212
212
|
{
|
|
213
213
|
if(getPTA()->isLocalVarInRecursiveFun(nodeIt->first))
|
|
214
214
|
{
|
package/lib/DDA/FlowDDA.cpp
CHANGED
|
@@ -126,12 +126,12 @@ PointsTo FlowDDA::processGepPts(const GepSVFGNode* gep, const PointsTo& srcPts)
|
|
|
126
126
|
tmpDstPts.set(ptd);
|
|
127
127
|
else
|
|
128
128
|
{
|
|
129
|
-
if (SVFUtil::isa<
|
|
129
|
+
if (SVFUtil::isa<VariantGepStmt>(gep->getPAGEdge()))
|
|
130
130
|
{
|
|
131
131
|
setObjFieldInsensitive(ptd);
|
|
132
132
|
tmpDstPts.set(getFIObjNode(ptd));
|
|
133
133
|
}
|
|
134
|
-
else if (const
|
|
134
|
+
else if (const NormalGepStmt* normalGep = SVFUtil::dyn_cast<NormalGepStmt>(gep->getPAGEdge()))
|
|
135
135
|
{
|
|
136
136
|
NodeID fieldSrcPtdNode = getGepObjNode(ptd, normalGep->getLocationSet());
|
|
137
137
|
tmpDstPts.set(fieldSrcPtdNode);
|
package/lib/Graphs/ConsG.cpp
CHANGED
|
@@ -69,7 +69,7 @@ void ConstraintGraph::buildCG()
|
|
|
69
69
|
for (PAGEdge::PAGEdgeSetTy::iterator iter = phis.begin(), eiter =
|
|
70
70
|
phis.end(); iter != eiter; ++iter)
|
|
71
71
|
{
|
|
72
|
-
const
|
|
72
|
+
const PhiStmt* edge = SVFUtil::cast<PhiStmt>(*iter);
|
|
73
73
|
for(const auto opVar : edge->getOpndVars())
|
|
74
74
|
addCopyCGEdge(opVar->getId(),edge->getResID());
|
|
75
75
|
}
|
|
@@ -110,7 +110,7 @@ void ConstraintGraph::buildCG()
|
|
|
110
110
|
for (PAGEdge::PAGEdgeSetTy::iterator iter = ngeps.begin(), eiter =
|
|
111
111
|
ngeps.end(); iter != eiter; ++iter)
|
|
112
112
|
{
|
|
113
|
-
|
|
113
|
+
NormalGepStmt* edge = SVFUtil::cast<NormalGepStmt>(*iter);
|
|
114
114
|
addNormalGepCGEdge(edge->getSrcID(),edge->getDstID(),edge->getLocationSet());
|
|
115
115
|
}
|
|
116
116
|
|
|
@@ -118,7 +118,7 @@ void ConstraintGraph::buildCG()
|
|
|
118
118
|
for (PAGEdge::PAGEdgeSetTy::iterator iter = vgeps.begin(), eiter =
|
|
119
119
|
vgeps.end(); iter != eiter; ++iter)
|
|
120
120
|
{
|
|
121
|
-
|
|
121
|
+
VariantGepStmt* edge = SVFUtil::cast<VariantGepStmt>(*iter);
|
|
122
122
|
addVariantGepCGEdge(edge->getSrcID(),edge->getDstID());
|
|
123
123
|
}
|
|
124
124
|
|
|
@@ -156,7 +156,7 @@ AddrCGEdge::AddrCGEdge(ConstraintNode* s, ConstraintNode* d, EdgeID id)
|
|
|
156
156
|
// Retarget addr edges may lead s to be a dummy node
|
|
157
157
|
PAGNode* node = SVFIR::getPAG()->getGNode(s->getId());
|
|
158
158
|
if (!SVFModule::pagReadFromTXT())
|
|
159
|
-
assert(!SVFUtil::isa<
|
|
159
|
+
assert(!SVFUtil::isa<DummyValVar>(node) && "a dummy node??");
|
|
160
160
|
}
|
|
161
161
|
|
|
162
162
|
/*!
|
|
@@ -643,7 +643,7 @@ struct DOTGraphTraits<ConstraintGraph*> : public DOTGraphTraits<SVFIR*>
|
|
|
643
643
|
|
|
644
644
|
if (briefDisplay)
|
|
645
645
|
{
|
|
646
|
-
if (SVFUtil::isa<
|
|
646
|
+
if (SVFUtil::isa<ValVar>(node))
|
|
647
647
|
{
|
|
648
648
|
if (nameDisplay)
|
|
649
649
|
rawstr << node->getId() << ":" << node->getValueName();
|
|
@@ -656,7 +656,7 @@ struct DOTGraphTraits<ConstraintGraph*> : public DOTGraphTraits<SVFIR*>
|
|
|
656
656
|
else
|
|
657
657
|
{
|
|
658
658
|
// print the whole value
|
|
659
|
-
if (!SVFUtil::isa<
|
|
659
|
+
if (!SVFUtil::isa<DummyValVar>(node) && !SVFUtil::isa<DummyObjVar>(node))
|
|
660
660
|
rawstr << node->getId() << ":" << value2String(node->getValue());
|
|
661
661
|
else
|
|
662
662
|
rawstr << node->getId() << ":";
|
|
@@ -669,22 +669,22 @@ struct DOTGraphTraits<ConstraintGraph*> : public DOTGraphTraits<SVFIR*>
|
|
|
669
669
|
static std::string getNodeAttributes(NodeType *n, ConstraintGraph*)
|
|
670
670
|
{
|
|
671
671
|
PAGNode* node = SVFIR::getPAG()->getGNode(n->getId());
|
|
672
|
-
if (SVFUtil::isa<
|
|
672
|
+
if (SVFUtil::isa<ValVar>(node))
|
|
673
673
|
{
|
|
674
|
-
if(SVFUtil::isa<
|
|
674
|
+
if(SVFUtil::isa<GepValVar>(node))
|
|
675
675
|
return "shape=hexagon";
|
|
676
|
-
else if (SVFUtil::isa<
|
|
676
|
+
else if (SVFUtil::isa<DummyValVar>(node))
|
|
677
677
|
return "shape=diamond";
|
|
678
678
|
else
|
|
679
679
|
return "shape=box";
|
|
680
680
|
}
|
|
681
|
-
else if (SVFUtil::isa<
|
|
681
|
+
else if (SVFUtil::isa<ObjVar>(node))
|
|
682
682
|
{
|
|
683
683
|
if(SVFUtil::isa<GepObjPN>(node))
|
|
684
684
|
return "shape=doubleoctagon";
|
|
685
|
-
else if(SVFUtil::isa<
|
|
685
|
+
else if(SVFUtil::isa<FIObjVar>(node))
|
|
686
686
|
return "shape=box3d";
|
|
687
|
-
else if (SVFUtil::isa<
|
|
687
|
+
else if (SVFUtil::isa<DummyObjVar>(node))
|
|
688
688
|
return "shape=tab";
|
|
689
689
|
else
|
|
690
690
|
return "shape=component";
|
package/lib/Graphs/IRGraph.cpp
CHANGED
|
@@ -160,22 +160,22 @@ struct DOTGraphTraits<IRGraph*> : public DefaultDOTGraphTraits
|
|
|
160
160
|
|
|
161
161
|
static std::string getNodeAttributes(SVFVar *node, IRGraph*)
|
|
162
162
|
{
|
|
163
|
-
if (SVFUtil::isa<
|
|
163
|
+
if (SVFUtil::isa<ValVar>(node))
|
|
164
164
|
{
|
|
165
|
-
if(SVFUtil::isa<
|
|
165
|
+
if(SVFUtil::isa<GepValVar>(node))
|
|
166
166
|
return "shape=hexagon";
|
|
167
|
-
else if (SVFUtil::isa<
|
|
167
|
+
else if (SVFUtil::isa<DummyValVar>(node))
|
|
168
168
|
return "shape=diamond";
|
|
169
169
|
else
|
|
170
170
|
return "shape=box";
|
|
171
171
|
}
|
|
172
|
-
else if (SVFUtil::isa<
|
|
172
|
+
else if (SVFUtil::isa<ObjVar>(node))
|
|
173
173
|
{
|
|
174
174
|
if(SVFUtil::isa<GepObjPN>(node))
|
|
175
175
|
return "shape=doubleoctagon";
|
|
176
|
-
else if(SVFUtil::isa<
|
|
176
|
+
else if(SVFUtil::isa<FIObjVar>(node))
|
|
177
177
|
return "shape=box3d";
|
|
178
|
-
else if (SVFUtil::isa<
|
|
178
|
+
else if (SVFUtil::isa<DummyObjVar>(node))
|
|
179
179
|
return "shape=tab";
|
|
180
180
|
else
|
|
181
181
|
return "shape=component";
|
|
@@ -200,39 +200,39 @@ struct DOTGraphTraits<IRGraph*> : public DefaultDOTGraphTraits
|
|
|
200
200
|
{
|
|
201
201
|
const SVFStmt* edge = *(EI.getCurrent());
|
|
202
202
|
assert(edge && "No edge found!!");
|
|
203
|
-
if (SVFUtil::isa<
|
|
203
|
+
if (SVFUtil::isa<AddrStmt>(edge))
|
|
204
204
|
{
|
|
205
205
|
return "color=green";
|
|
206
206
|
}
|
|
207
|
-
else if (SVFUtil::isa<
|
|
207
|
+
else if (SVFUtil::isa<CopyStmt>(edge))
|
|
208
208
|
{
|
|
209
209
|
return "color=black";
|
|
210
210
|
}
|
|
211
|
-
else if (SVFUtil::isa<
|
|
211
|
+
else if (SVFUtil::isa<GepStmt>(edge))
|
|
212
212
|
{
|
|
213
213
|
return "color=purple";
|
|
214
214
|
}
|
|
215
|
-
else if (SVFUtil::isa<
|
|
215
|
+
else if (SVFUtil::isa<StoreStmt>(edge))
|
|
216
216
|
{
|
|
217
217
|
return "color=blue";
|
|
218
218
|
}
|
|
219
|
-
else if (SVFUtil::isa<
|
|
219
|
+
else if (SVFUtil::isa<LoadStmt>(edge))
|
|
220
220
|
{
|
|
221
221
|
return "color=red";
|
|
222
222
|
}
|
|
223
|
-
else if (SVFUtil::isa<
|
|
223
|
+
else if (SVFUtil::isa<PhiStmt>(edge))
|
|
224
224
|
{
|
|
225
225
|
return "color=grey";
|
|
226
226
|
}
|
|
227
|
-
else if (SVFUtil::isa<
|
|
227
|
+
else if (SVFUtil::isa<CmpStmt>(edge))
|
|
228
228
|
{
|
|
229
229
|
return "color=grey";
|
|
230
230
|
}
|
|
231
|
-
else if (SVFUtil::isa<
|
|
231
|
+
else if (SVFUtil::isa<BinaryOPStmt>(edge))
|
|
232
232
|
{
|
|
233
233
|
return "color=grey";
|
|
234
234
|
}
|
|
235
|
-
else if (SVFUtil::isa<
|
|
235
|
+
else if (SVFUtil::isa<UnaryOPStmt>(edge))
|
|
236
236
|
{
|
|
237
237
|
return "color=grey";
|
|
238
238
|
}
|
|
@@ -209,7 +209,7 @@ struct DOTGraphTraits<OfflineConsG*> : public DOTGraphTraits<SVFIR*>
|
|
|
209
209
|
|
|
210
210
|
if (briefDisplay)
|
|
211
211
|
{
|
|
212
|
-
if (SVFUtil::isa<
|
|
212
|
+
if (SVFUtil::isa<ValVar>(node))
|
|
213
213
|
{
|
|
214
214
|
if (nameDisplay)
|
|
215
215
|
rawstr << node->getId() << ":" << node->getValueName();
|
|
@@ -222,7 +222,7 @@ struct DOTGraphTraits<OfflineConsG*> : public DOTGraphTraits<SVFIR*>
|
|
|
222
222
|
else
|
|
223
223
|
{
|
|
224
224
|
// print the whole value
|
|
225
|
-
if (!SVFUtil::isa<
|
|
225
|
+
if (!SVFUtil::isa<DummyValVar>(node) && !SVFUtil::isa<DummyObjVar>(node))
|
|
226
226
|
rawstr << *node->getValue();
|
|
227
227
|
else
|
|
228
228
|
rawstr << "";
|
|
@@ -243,22 +243,22 @@ struct DOTGraphTraits<OfflineConsG*> : public DOTGraphTraits<SVFIR*>
|
|
|
243
243
|
if (SVFIR::getPAG()->getGNode(n->getId()))
|
|
244
244
|
{
|
|
245
245
|
PAGNode *node = SVFIR::getPAG()->getGNode(n->getId());
|
|
246
|
-
if (SVFUtil::isa<
|
|
246
|
+
if (SVFUtil::isa<ValVar>(node))
|
|
247
247
|
{
|
|
248
|
-
if(SVFUtil::isa<
|
|
248
|
+
if(SVFUtil::isa<GepValVar>(node))
|
|
249
249
|
return "shape=hexagon";
|
|
250
|
-
else if (SVFUtil::isa<
|
|
250
|
+
else if (SVFUtil::isa<DummyValVar>(node))
|
|
251
251
|
return "shape=diamond";
|
|
252
252
|
else
|
|
253
253
|
return "shape=box";
|
|
254
254
|
}
|
|
255
|
-
else if (SVFUtil::isa<
|
|
255
|
+
else if (SVFUtil::isa<ObjVar>(node))
|
|
256
256
|
{
|
|
257
257
|
if(SVFUtil::isa<GepObjPN>(node))
|
|
258
258
|
return "shape=doubleoctagon";
|
|
259
|
-
else if(SVFUtil::isa<
|
|
259
|
+
else if(SVFUtil::isa<FIObjVar>(node))
|
|
260
260
|
return "shape=box3d";
|
|
261
|
-
else if (SVFUtil::isa<
|
|
261
|
+
else if (SVFUtil::isa<DummyObjVar>(node))
|
|
262
262
|
return "shape=tab";
|
|
263
263
|
else
|
|
264
264
|
return "shape=component";
|
package/lib/Graphs/SVFG.cpp
CHANGED
|
@@ -227,7 +227,7 @@ void SVFG::addSVFGNodesForAddrTakenVars()
|
|
|
227
227
|
for (PAGEdge::PAGEdgeSetTy::iterator iter = stores.begin(), eiter =
|
|
228
228
|
stores.end(); iter != eiter; ++iter)
|
|
229
229
|
{
|
|
230
|
-
|
|
230
|
+
StoreStmt* store = SVFUtil::cast<StoreStmt>(*iter);
|
|
231
231
|
const StmtSVFGNode* sNode = getStmtVFGNode(store);
|
|
232
232
|
for(CHISet::iterator pi = mssa->getCHISet(store).begin(), epi = mssa->getCHISet(store).end(); pi!=epi; ++pi)
|
|
233
233
|
setDef((*pi)->getResVer(),sNode);
|
|
@@ -297,7 +297,7 @@ void SVFG::connectIndirectSVFGEdges()
|
|
|
297
297
|
const SVFGNode* node = it->second;
|
|
298
298
|
if(const LoadSVFGNode* loadNode = SVFUtil::dyn_cast<LoadSVFGNode>(node))
|
|
299
299
|
{
|
|
300
|
-
MUSet& muSet = mssa->getMUSet(SVFUtil::cast<
|
|
300
|
+
MUSet& muSet = mssa->getMUSet(SVFUtil::cast<LoadStmt>(loadNode->getPAGEdge()));
|
|
301
301
|
for(MUSet::iterator it = muSet.begin(), eit = muSet.end(); it!=eit; ++it)
|
|
302
302
|
{
|
|
303
303
|
if(LOADMU* mu = SVFUtil::dyn_cast<LOADMU>(*it))
|
|
@@ -309,7 +309,7 @@ void SVFG::connectIndirectSVFGEdges()
|
|
|
309
309
|
}
|
|
310
310
|
else if(const StoreSVFGNode* storeNode = SVFUtil::dyn_cast<StoreSVFGNode>(node))
|
|
311
311
|
{
|
|
312
|
-
CHISet& chiSet = mssa->getCHISet(SVFUtil::cast<
|
|
312
|
+
CHISet& chiSet = mssa->getCHISet(SVFUtil::cast<StoreStmt>(storeNode->getPAGEdge()));
|
|
313
313
|
for(CHISet::iterator it = chiSet.begin(), eit = chiSet.end(); it!=eit; ++it)
|
|
314
314
|
{
|
|
315
315
|
if(STORECHI* chi = SVFUtil::dyn_cast<STORECHI>(*it))
|
|
@@ -932,11 +932,11 @@ struct DOTGraphTraits<SVFG*> : public DOTGraphTraits<SVFIR*>
|
|
|
932
932
|
if(StmtSVFGNode* stmtNode = SVFUtil::dyn_cast<StmtSVFGNode>(node))
|
|
933
933
|
{
|
|
934
934
|
const PAGEdge* edge = stmtNode->getPAGEdge();
|
|
935
|
-
if (SVFUtil::isa<
|
|
935
|
+
if (SVFUtil::isa<AddrStmt>(edge))
|
|
936
936
|
{
|
|
937
937
|
rawstr << "color=green";
|
|
938
938
|
}
|
|
939
|
-
else if (SVFUtil::isa<
|
|
939
|
+
else if (SVFUtil::isa<CopyStmt>(edge))
|
|
940
940
|
{
|
|
941
941
|
rawstr << "color=black";
|
|
942
942
|
}
|
|
@@ -944,15 +944,15 @@ struct DOTGraphTraits<SVFG*> : public DOTGraphTraits<SVFIR*>
|
|
|
944
944
|
{
|
|
945
945
|
rawstr << "color=black,style=dotted";
|
|
946
946
|
}
|
|
947
|
-
else if (SVFUtil::isa<
|
|
947
|
+
else if (SVFUtil::isa<GepStmt>(edge))
|
|
948
948
|
{
|
|
949
949
|
rawstr << "color=purple";
|
|
950
950
|
}
|
|
951
|
-
else if (SVFUtil::isa<
|
|
951
|
+
else if (SVFUtil::isa<StoreStmt>(edge))
|
|
952
952
|
{
|
|
953
953
|
rawstr << "color=blue";
|
|
954
954
|
}
|
|
955
|
-
else if (SVFUtil::isa<
|
|
955
|
+
else if (SVFUtil::isa<LoadStmt>(edge))
|
|
956
956
|
{
|
|
957
957
|
rawstr << "color=red";
|
|
958
958
|
}
|
|
@@ -77,7 +77,7 @@ void ThreadCallGraph::updateCallGraph(PointerAnalysis* pta)
|
|
|
77
77
|
const NodeBS targets = pta->getPts(pag->getValueNode(forkedval)).toNodeBS();
|
|
78
78
|
for (NodeBS::iterator ii = targets.begin(), ie = targets.end(); ii != ie; ii++)
|
|
79
79
|
{
|
|
80
|
-
if(
|
|
80
|
+
if(ObjVar* objPN = SVFUtil::dyn_cast<ObjVar>(pag->getGNode(*ii)))
|
|
81
81
|
{
|
|
82
82
|
const MemObj* obj = pag->getObject(objPN);
|
|
83
83
|
if(obj->isFunction())
|
|
@@ -101,7 +101,7 @@ void ThreadCallGraph::updateCallGraph(PointerAnalysis* pta)
|
|
|
101
101
|
const NodeBS targets = pta->getPts(pag->getValueNode(forkedval)).toNodeBS();
|
|
102
102
|
for (NodeBS::iterator ii = targets.begin(), ie = targets.end(); ii != ie; ii++)
|
|
103
103
|
{
|
|
104
|
-
if(
|
|
104
|
+
if(ObjVar* objPN = SVFUtil::dyn_cast<ObjVar>(pag->getGNode(*ii)))
|
|
105
105
|
{
|
|
106
106
|
const MemObj* obj = pag->getObject(objPN);
|
|
107
107
|
if(obj->isFunction())
|
package/lib/Graphs/VFG.cpp
CHANGED
|
@@ -340,7 +340,7 @@ void VFG::addVFGNodes()
|
|
|
340
340
|
for (PAGEdge::PAGEdgeSetTy::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
|
|
@@ -348,7 +348,7 @@ void VFG::addVFGNodes()
|
|
|
348
348
|
for (PAGEdge::PAGEdgeSetTy::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
|
}
|
|
@@ -358,14 +358,14 @@ void VFG::addVFGNodes()
|
|
|
358
358
|
for (PAGEdge::PAGEdgeSetTy::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
364
|
PAGEdge::PAGEdgeSetTy& vgeps = getPAGEdgeSet(PAGEdge::VariantGep);
|
|
365
365
|
for (PAGEdge::PAGEdgeSetTy::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
|
|
@@ -373,7 +373,7 @@ void VFG::addVFGNodes()
|
|
|
373
373
|
for (PAGEdge::PAGEdgeSetTy::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
|
|
@@ -381,7 +381,7 @@ void VFG::addVFGNodes()
|
|
|
381
381
|
for (PAGEdge::PAGEdgeSetTy::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
387
|
PAGEdge::PAGEdgeSetTy& forks = getPAGEdgeSet(PAGEdge::ThreadFork);
|
|
@@ -492,7 +492,7 @@ void VFG::addVFGNodes()
|
|
|
492
492
|
for (PAGEdge::PAGEdgeSetTy::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
|
}
|
|
@@ -501,7 +501,7 @@ void VFG::addVFGNodes()
|
|
|
501
501
|
for (PAGEdge::PAGEdgeSetTy::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
|
}
|
|
@@ -510,7 +510,7 @@ void VFG::addVFGNodes()
|
|
|
510
510
|
for (PAGEdge::PAGEdgeSetTy::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
|
}
|
|
@@ -528,7 +528,7 @@ void VFG::addVFGNodes()
|
|
|
528
528
|
for (PAGEdge::PAGEdgeSetTy::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
|
}
|
|
@@ -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
|
{
|
|
@@ -196,7 +196,7 @@ void MRGenerator::collectModRefForLoadStore()
|
|
|
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
|
|
@@ -610,7 +610,7 @@ bool MRGenerator::handleCallsiteModRef(NodeBS& mod, NodeBS& ref, const CallBlock
|
|
|
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
|
}
|
|
@@ -677,7 +677,7 @@ NodeBS MRGenerator::getModInfoForCall(const CallBlockNode* cs)
|
|
|
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;
|
|
@@ -701,7 +701,7 @@ NodeBS MRGenerator::getRefInfoForCall(const CallBlockNode* cs)
|
|
|
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;
|