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
|
@@ -48,7 +48,7 @@ SVFVar::SVFVar(const Value* val, NodeID i, PNODEK k) :
|
|
|
48
48
|
case ValNode:
|
|
49
49
|
case GepValNode:
|
|
50
50
|
{
|
|
51
|
-
assert(val != nullptr && "value is nullptr for
|
|
51
|
+
assert(val != nullptr && "value is nullptr for ValVar or GepValNode");
|
|
52
52
|
isTLPointer = val->getType()->isPointerTy();
|
|
53
53
|
isATPointer = false;
|
|
54
54
|
break;
|
|
@@ -108,10 +108,10 @@ void SVFVar::dump() const {
|
|
|
108
108
|
outs() << this->toString() << "\n";
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
const std::string
|
|
111
|
+
const std::string ValVar::toString() const {
|
|
112
112
|
std::string str;
|
|
113
113
|
raw_string_ostream rawstr(str);
|
|
114
|
-
rawstr << "
|
|
114
|
+
rawstr << "ValVar ID: " << getId();
|
|
115
115
|
if (Options::PAGDotGraphShorter) {
|
|
116
116
|
rawstr << "\n";
|
|
117
117
|
}
|
|
@@ -119,10 +119,10 @@ const std::string ValPN::toString() const {
|
|
|
119
119
|
return rawstr.str();
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
-
const std::string
|
|
122
|
+
const std::string ObjVar::toString() const {
|
|
123
123
|
std::string str;
|
|
124
124
|
raw_string_ostream rawstr(str);
|
|
125
|
-
rawstr << "
|
|
125
|
+
rawstr << "ObjVar ID: " << getId();
|
|
126
126
|
if (Options::PAGDotGraphShorter) {
|
|
127
127
|
rawstr << "\n";
|
|
128
128
|
}
|
|
@@ -130,10 +130,10 @@ const std::string ObjPN::toString() const {
|
|
|
130
130
|
return rawstr.str();
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
const std::string
|
|
133
|
+
const std::string GepValVar::toString() const {
|
|
134
134
|
std::string str;
|
|
135
135
|
raw_string_ostream rawstr(str);
|
|
136
|
-
rawstr << "
|
|
136
|
+
rawstr << "GepValVar ID: " << getId() << " with offset_" + llvm::utostr(getOffset());
|
|
137
137
|
if (Options::PAGDotGraphShorter) {
|
|
138
138
|
rawstr << "\n";
|
|
139
139
|
}
|
|
@@ -152,10 +152,10 @@ const std::string GepObjPN::toString() const {
|
|
|
152
152
|
return rawstr.str();
|
|
153
153
|
}
|
|
154
154
|
|
|
155
|
-
const std::string
|
|
155
|
+
const std::string FIObjVar::toString() const {
|
|
156
156
|
std::string str;
|
|
157
157
|
raw_string_ostream rawstr(str);
|
|
158
|
-
rawstr << "
|
|
158
|
+
rawstr << "FIObjVar ID: " << getId() << " (base object)";
|
|
159
159
|
if (Options::PAGDotGraphShorter) {
|
|
160
160
|
rawstr << "\n";
|
|
161
161
|
}
|
|
@@ -177,38 +177,38 @@ const std::string VarArgPN::toString() const {
|
|
|
177
177
|
return rawstr.str();
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
-
const std::string
|
|
180
|
+
const std::string DummyValVar::toString() const {
|
|
181
181
|
std::string str;
|
|
182
182
|
raw_string_ostream rawstr(str);
|
|
183
|
-
rawstr << "
|
|
183
|
+
rawstr << "DummyValVar ID: " << getId();
|
|
184
184
|
return rawstr.str();
|
|
185
185
|
}
|
|
186
186
|
|
|
187
|
-
const std::string
|
|
187
|
+
const std::string DummyObjVar::toString() const {
|
|
188
188
|
std::string str;
|
|
189
189
|
raw_string_ostream rawstr(str);
|
|
190
|
-
rawstr << "
|
|
190
|
+
rawstr << "DummyObjVar ID: " << getId();
|
|
191
191
|
return rawstr.str();
|
|
192
192
|
}
|
|
193
193
|
|
|
194
|
-
const std::string
|
|
194
|
+
const std::string CloneDummyObjVar::toString() const {
|
|
195
195
|
std::string str;
|
|
196
196
|
raw_string_ostream rawstr(str);
|
|
197
|
-
rawstr << "
|
|
197
|
+
rawstr << "CloneDummyObjVar ID: " << getId();
|
|
198
198
|
return rawstr.str();
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
-
const std::string
|
|
201
|
+
const std::string CloneGepObjVar::toString() const {
|
|
202
202
|
std::string str;
|
|
203
203
|
raw_string_ostream rawstr(str);
|
|
204
|
-
rawstr << "
|
|
204
|
+
rawstr << "CloneGepObjVar ID: " << getId();
|
|
205
205
|
return rawstr.str();
|
|
206
206
|
}
|
|
207
207
|
|
|
208
|
-
const std::string
|
|
208
|
+
const std::string CloneFIObjVar::toString() const {
|
|
209
209
|
std::string str;
|
|
210
210
|
raw_string_ostream rawstr(str);
|
|
211
|
-
rawstr << "
|
|
211
|
+
rawstr << "CloneFIObjVar ID: " << getId();
|
|
212
212
|
return rawstr.str();
|
|
213
213
|
}
|
|
214
214
|
|
|
@@ -70,11 +70,11 @@ void SaberSVFGBuilder::collectGlobals(BVDataPTAImpl* pta)
|
|
|
70
70
|
for(SVFIR::iterator it = pag->begin(), eit = pag->end(); it!=eit; it++)
|
|
71
71
|
{
|
|
72
72
|
PAGNode* pagNode = it->second;
|
|
73
|
-
if(SVFUtil::isa<
|
|
73
|
+
if(SVFUtil::isa<DummyValVar>(pagNode) || SVFUtil::isa<DummyObjVar>(pagNode))
|
|
74
74
|
continue;
|
|
75
75
|
|
|
76
76
|
if(GepObjPN* gepobj = SVFUtil::dyn_cast<GepObjPN>(pagNode)) {
|
|
77
|
-
if(SVFUtil::isa<
|
|
77
|
+
if(SVFUtil::isa<DummyObjVar>(pag->getGNode(gepobj->getBaseNode())))
|
|
78
78
|
continue;
|
|
79
79
|
}
|
|
80
80
|
if(const Value* val = pagNode->getValue())
|
|
@@ -52,7 +52,7 @@ void ICFGPrinter::printICFGToJson(const std::string& filename)
|
|
|
52
52
|
edge_obj["dstValueName"] = edge->getDstNode()->getValueName();
|
|
53
53
|
if(edge->getEdgeKind()==PAGEdge::NormalGep)
|
|
54
54
|
{
|
|
55
|
-
const
|
|
55
|
+
const NormalGepStmt* gepEdge = SVFUtil::cast<NormalGepStmt>(edge);
|
|
56
56
|
edge_obj["offset"] = gepEdge->getOffset();
|
|
57
57
|
}
|
|
58
58
|
llvm::json::Value edge_value = llvm::json::Object{edge_obj};
|
|
@@ -617,7 +617,7 @@ void SVFIRBuilder::visitBinaryOperator(BinaryOperator &inst)
|
|
|
617
617
|
Value* op2 = inst.getOperand(1);
|
|
618
618
|
NodeID op2Node = getValueNode(op2);
|
|
619
619
|
u32_t opcode = inst.getOpcode();
|
|
620
|
-
const
|
|
620
|
+
const BinaryOPStmt* binayPE = addBinaryOPEdge(op1Node, op2Node, dst, opcode);
|
|
621
621
|
}
|
|
622
622
|
|
|
623
623
|
/*!
|
|
@@ -630,7 +630,7 @@ void SVFIRBuilder::visitUnaryOperator(UnaryOperator &inst)
|
|
|
630
630
|
Value* opnd = inst.getOperand(0);
|
|
631
631
|
NodeID src = getValueNode(opnd);
|
|
632
632
|
u32_t opcode = inst.getOpcode();
|
|
633
|
-
const
|
|
633
|
+
const UnaryOPStmt* unaryPE = addUnaryOPEdge(src, dst, opcode);
|
|
634
634
|
}
|
|
635
635
|
|
|
636
636
|
/*!
|
|
@@ -645,7 +645,7 @@ void SVFIRBuilder::visitCmpInst(CmpInst &inst)
|
|
|
645
645
|
Value* op2 = inst.getOperand(1);
|
|
646
646
|
NodeID op2Node = getValueNode(op2);
|
|
647
647
|
u32_t opcode = inst.getOpcode();
|
|
648
|
-
const
|
|
648
|
+
const CmpStmt* cmpPE = addCmpEdge(op1Node, op2Node, dst, opcode);
|
|
649
649
|
}
|
|
650
650
|
|
|
651
651
|
|
|
@@ -1468,8 +1468,8 @@ void SVFIRBuilder::setCurrentBBAndValueForPAGEdge(PAGEdge* edge)
|
|
|
1468
1468
|
assert(dstFun==curInst->getFunction() && "DstNode of the PAGEdge not in the same function?");
|
|
1469
1469
|
}
|
|
1470
1470
|
|
|
1471
|
-
/// We assume every
|
|
1472
|
-
if (!(SVFUtil::isa<
|
|
1471
|
+
/// We assume every GepValVar and its GepStmt are unique across whole program
|
|
1472
|
+
if (!(SVFUtil::isa<GepStmt>(edge) && SVFUtil::isa<GepValVar>(edge->getDstNode())))
|
|
1473
1473
|
assert(curBB && "instruction does not have a basic block??");
|
|
1474
1474
|
|
|
1475
1475
|
/// We will have one unique function exit ICFGNode for all returns
|
package/lib/Util/PTAStat.cpp
CHANGED
|
@@ -151,7 +151,7 @@ void PTAStat::performStat()
|
|
|
151
151
|
for(SVFIR::iterator it = pag->begin(), eit = pag->end(); it!=eit; ++it)
|
|
152
152
|
{
|
|
153
153
|
PAGNode* node = it->second;
|
|
154
|
-
if(
|
|
154
|
+
if(ObjVar* obj = SVFUtil::dyn_cast<ObjVar>(node))
|
|
155
155
|
{
|
|
156
156
|
const MemObj* mem = obj->getMemObj();
|
|
157
157
|
if (memObjSet.insert(mem->getId()).second == false)
|
|
@@ -36,7 +36,7 @@ void TypeBasedHeapCloning::setPAG(SVFIR *pag)
|
|
|
36
36
|
bool TypeBasedHeapCloning::isBlkObjOrConstantObj(NodeID o) const
|
|
37
37
|
{
|
|
38
38
|
if (isClone(o)) o = cloneToOriginalObj.at(o);
|
|
39
|
-
return SVFUtil::isa<
|
|
39
|
+
return SVFUtil::isa<ObjVar>(ppag->getGNode(o)) && ppag->isBlkObjOrConstantObj(o);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
bool TypeBasedHeapCloning::isBase(const DIType *a, const DIType *b) const
|
|
@@ -120,7 +120,7 @@ void TypeBasedHeapCloning::addGepToObj(NodeID gep, NodeID base, unsigned offset)
|
|
|
120
120
|
objToGeps[base].set(gep);
|
|
121
121
|
const PAGNode *baseNode = ppag->getGNode(base);
|
|
122
122
|
assert(baseNode && "TBHC: given bad base node?");
|
|
123
|
-
const
|
|
123
|
+
const ObjVar *baseObj = SVFUtil::dyn_cast<ObjVar>(baseNode);
|
|
124
124
|
assert(baseObj && "TBHC: non-object given for base?");
|
|
125
125
|
// We can use the base or the gep mem. obj.; should be identical.
|
|
126
126
|
const MemObj *baseMemObj = baseObj->getMemObj();
|
|
@@ -147,7 +147,7 @@ const NodeBS TypeBasedHeapCloning::getGepObjClones(NodeID base, unsigned offset)
|
|
|
147
147
|
|
|
148
148
|
PAGNode *node = ppag->getGNode(base);
|
|
149
149
|
assert(node && "TBHC: base object node does not exist.");
|
|
150
|
-
|
|
150
|
+
ObjVar *baseNode = SVFUtil::dyn_cast<ObjVar>(node);
|
|
151
151
|
assert(baseNode && "TBHC: base \"object\" node is not an object.");
|
|
152
152
|
|
|
153
153
|
// totalOffset is the offset from the real base (i.e. base of base),
|
|
@@ -184,7 +184,7 @@ const NodeBS TypeBasedHeapCloning::getGepObjClones(NodeID base, unsigned offset)
|
|
|
184
184
|
{
|
|
185
185
|
PAGNode *node = ppag->getGNode(gep);
|
|
186
186
|
assert(node && "TBHC: expected gep node doesn't exist.");
|
|
187
|
-
assert((SVFUtil::isa<GepObjPN>(node) || SVFUtil::isa<
|
|
187
|
+
assert((SVFUtil::isa<GepObjPN>(node) || SVFUtil::isa<FIObjVar>(node))
|
|
188
188
|
&& "TBHC: expected a GEP or FI object.");
|
|
189
189
|
|
|
190
190
|
if (GepObjPN *gepNode = SVFUtil::dyn_cast<GepObjPN>(node))
|
|
@@ -292,7 +292,7 @@ bool TypeBasedHeapCloning::init(NodeID loc, NodeID p, const DIType *tildet, bool
|
|
|
292
292
|
// type if that object is field-insensitive.
|
|
293
293
|
bool fieldInsensitive = false;
|
|
294
294
|
std::vector<const DIType *> fieldTypes;
|
|
295
|
-
if (
|
|
295
|
+
if (ObjVar *obj = SVFUtil::dyn_cast<ObjVar>(ppag->getGNode(o)))
|
|
296
296
|
{
|
|
297
297
|
fieldInsensitive = obj->getMemObj()->isFieldInsensitive();
|
|
298
298
|
if (tp != nullptr && (tp->getTag() == dwarf::DW_TAG_structure_type
|
|
@@ -314,14 +314,14 @@ bool TypeBasedHeapCloning::init(NodeID loc, NodeID p, const DIType *tildet, bool
|
|
|
314
314
|
assert(!isGep(obj) && "TBHC: GEP object is untyped!");
|
|
315
315
|
prop = cloneObject(o, tildet, false);
|
|
316
316
|
++numInit;
|
|
317
|
-
if (!pta->isHeapMemObj(o) && !SVFUtil::isa<
|
|
317
|
+
if (!pta->isHeapMemObj(o) && !SVFUtil::isa<DummyObjVar>(obj)) ++numSGInit;
|
|
318
318
|
}
|
|
319
319
|
else if (fieldInsensitive && tp && dchg->isFieldOf(tildet, tp))
|
|
320
320
|
{
|
|
321
321
|
// Field-insensitive object but the instruction is operating on a field.
|
|
322
322
|
prop = o;
|
|
323
323
|
++numTBWU;
|
|
324
|
-
if (!pta->isHeapMemObj(o) && !SVFUtil::isa<
|
|
324
|
+
if (!pta->isHeapMemObj(o) && !SVFUtil::isa<DummyObjVar>(obj)) ++numSGTBWU;
|
|
325
325
|
}
|
|
326
326
|
else if (gep && aggs.find(tildet) != aggs.end())
|
|
327
327
|
{
|
|
@@ -334,7 +334,7 @@ bool TypeBasedHeapCloning::init(NodeID loc, NodeID p, const DIType *tildet, bool
|
|
|
334
334
|
// 'Struct S', not 'Array of S'.
|
|
335
335
|
prop = cloneObject(o, tildet, false);
|
|
336
336
|
++numAgg;
|
|
337
|
-
if (!pta->isHeapMemObj(o) && !SVFUtil::isa<
|
|
337
|
+
if (!pta->isHeapMemObj(o) && !SVFUtil::isa<DummyObjVar>(obj)) ++numSGAgg;
|
|
338
338
|
}
|
|
339
339
|
else if (isBase(tp, tildet) && tp != tildet
|
|
340
340
|
&& (reuse || dchg->isFirstField(tp, tildet) || (!reuse && pta->isHeapMemObj(o))))
|
|
@@ -349,21 +349,21 @@ bool TypeBasedHeapCloning::init(NodeID loc, NodeID p, const DIType *tildet, bool
|
|
|
349
349
|
// - reuse: because it can happen to stack/heap objects.
|
|
350
350
|
prop = cloneObject(o, tildet, reuse);
|
|
351
351
|
++numTBSSU;
|
|
352
|
-
if (!pta->isHeapMemObj(o) && !SVFUtil::isa<
|
|
352
|
+
if (!pta->isHeapMemObj(o) && !SVFUtil::isa<DummyObjVar>(obj)) ++numSGTBSSU;
|
|
353
353
|
}
|
|
354
354
|
else if (isBase(tildet, tp))
|
|
355
355
|
{
|
|
356
356
|
// Upcast.
|
|
357
357
|
prop = o;
|
|
358
358
|
++numTBWU;
|
|
359
|
-
if (!pta->isHeapMemObj(o) && !SVFUtil::isa<
|
|
359
|
+
if (!pta->isHeapMemObj(o) && !SVFUtil::isa<DummyObjVar>(obj)) ++numSGTBWU;
|
|
360
360
|
}
|
|
361
361
|
else if (tildet != tp && reuse)
|
|
362
362
|
{
|
|
363
363
|
// Reuse.
|
|
364
364
|
prop = cloneObject(o, tildet, true);
|
|
365
365
|
++numReuse;
|
|
366
|
-
if (!pta->isHeapMemObj(o) && !SVFUtil::isa<
|
|
366
|
+
if (!pta->isHeapMemObj(o) && !SVFUtil::isa<DummyObjVar>(obj)) ++numSGReuse;
|
|
367
367
|
}
|
|
368
368
|
else
|
|
369
369
|
{
|
|
@@ -371,7 +371,7 @@ bool TypeBasedHeapCloning::init(NodeID loc, NodeID p, const DIType *tildet, bool
|
|
|
371
371
|
filter = true;
|
|
372
372
|
prop = o;
|
|
373
373
|
++numTBSU;
|
|
374
|
-
if (!pta->isHeapMemObj(o) && !SVFUtil::isa<
|
|
374
|
+
if (!pta->isHeapMemObj(o) && !SVFUtil::isa<DummyObjVar>(obj)) ++numSGTBSU;
|
|
375
375
|
}
|
|
376
376
|
|
|
377
377
|
if (prop != o)
|
|
@@ -435,10 +435,10 @@ NodeID TypeBasedHeapCloning::cloneObject(NodeID o, const DIType *type, bool)
|
|
|
435
435
|
// IN sets and gepToSVFGRetriever in FSTBHC, so we don't care that clone comes
|
|
436
436
|
// from o (we can get that by checking the base and offset).
|
|
437
437
|
setOriginalObj(clone, getOriginalObj(o));
|
|
438
|
-
|
|
438
|
+
CloneGepObjVar *cloneGepObj = SVFUtil::dyn_cast<CloneGepObjVar>(ppag->getGNode(clone));
|
|
439
439
|
cloneGepObj->setBaseNode(gepObj->getBaseNode());
|
|
440
440
|
}
|
|
441
|
-
else if (SVFUtil::isa<
|
|
441
|
+
else if (SVFUtil::isa<FIObjVar>(obj) || SVFUtil::isa<DummyObjVar>(obj))
|
|
442
442
|
{
|
|
443
443
|
o = getOriginalObj(o);
|
|
444
444
|
// Check there isn't an appropriate clone already.
|
|
@@ -451,13 +451,13 @@ NodeID TypeBasedHeapCloning::cloneObject(NodeID o, const DIType *type, bool)
|
|
|
451
451
|
}
|
|
452
452
|
}
|
|
453
453
|
|
|
454
|
-
if (const
|
|
454
|
+
if (const FIObjVar *fiObj = SVFUtil::dyn_cast<FIObjVar>(obj))
|
|
455
455
|
{
|
|
456
456
|
clone = addCloneFIObjNode(fiObj->getMemObj());
|
|
457
457
|
}
|
|
458
458
|
else
|
|
459
459
|
{
|
|
460
|
-
const
|
|
460
|
+
const DummyObjVar *dummyObj = SVFUtil::dyn_cast<DummyObjVar>(obj);
|
|
461
461
|
clone = addCloneDummyObjNode(dummyObj->getMemObj());
|
|
462
462
|
}
|
|
463
463
|
// We checked above that it's an FIObj or a DummyObj.
|
|
@@ -501,19 +501,19 @@ const MDNode *TypeBasedHeapCloning::getRawCTirMetadata(const Value *v)
|
|
|
501
501
|
NodeID TypeBasedHeapCloning::addCloneDummyObjNode(const MemObj *mem)
|
|
502
502
|
{
|
|
503
503
|
NodeID id = NodeIDAllocator::get()->allocateObjectId();
|
|
504
|
-
return ppag->addObjNode(nullptr, new
|
|
504
|
+
return ppag->addObjNode(nullptr, new CloneDummyObjVar(id, mem), id);
|
|
505
505
|
}
|
|
506
506
|
|
|
507
507
|
NodeID TypeBasedHeapCloning::addCloneGepObjNode(const MemObj *mem, const LocationSet &l)
|
|
508
508
|
{
|
|
509
509
|
NodeID id = NodeIDAllocator::get()->allocateObjectId();
|
|
510
|
-
return ppag->addObjNode(mem->getValue(), new
|
|
510
|
+
return ppag->addObjNode(mem->getValue(), new CloneGepObjVar(mem, id, l), id);
|
|
511
511
|
}
|
|
512
512
|
|
|
513
513
|
NodeID TypeBasedHeapCloning::addCloneFIObjNode(const MemObj *mem)
|
|
514
514
|
{
|
|
515
515
|
NodeID id = NodeIDAllocator::get()->allocateObjectId();
|
|
516
|
-
return ppag->addObjNode(mem->getValue(), new
|
|
516
|
+
return ppag->addObjNode(mem->getValue(), new CloneFIObjVar(mem->getValue(), id, mem), id);
|
|
517
517
|
}
|
|
518
518
|
|
|
519
519
|
const DIType *TypeBasedHeapCloning::getTypeFromCTirMetadata(const Value *v)
|
package/lib/WPA/AndersenSFR.cpp
CHANGED
|
@@ -135,7 +135,7 @@ void AndersenSFR::fieldExpand(NodeSet& initials, Size_t offset, NodeBS& strides,
|
|
|
135
135
|
Size_t initOffset;
|
|
136
136
|
if (GepObjPN *gepNode = SVFUtil::dyn_cast<GepObjPN>(initPN))
|
|
137
137
|
initOffset = gepNode->getLocationSet().getOffset();
|
|
138
|
-
else if (SVFUtil::isa<
|
|
138
|
+
else if (SVFUtil::isa<FIObjVar>(initPN) || SVFUtil::isa<DummyObjVar>(initPN))
|
|
139
139
|
initOffset = 0;
|
|
140
140
|
else
|
|
141
141
|
assert(false && "Not an object node!!");
|
package/lib/WPA/AndersenStat.cpp
CHANGED
|
@@ -74,7 +74,7 @@ void AndersenStat::collectCycleInfo(ConstraintGraph* consCG)
|
|
|
74
74
|
{
|
|
75
75
|
NodeID nodeId = *it;
|
|
76
76
|
PAGNode* pagNode = pta->getPAG()->getGNode(nodeId);
|
|
77
|
-
if (SVFUtil::isa<
|
|
77
|
+
if (SVFUtil::isa<ObjVar>(pagNode) && pta->isFieldInsensitive(nodeId))
|
|
78
78
|
{
|
|
79
79
|
NodeID baseId = consCG->getBaseObjNode(nodeId);
|
|
80
80
|
clone.reset(nodeId);
|
|
@@ -145,7 +145,7 @@ void AndersenStat::constraintGraphStat()
|
|
|
145
145
|
if(nodeIt->second->getInEdges().empty() && nodeIt->second->getOutEdges().empty())
|
|
146
146
|
continue;
|
|
147
147
|
cgNodeNumber++;
|
|
148
|
-
if(SVFUtil::isa<
|
|
148
|
+
if(SVFUtil::isa<ObjVar>(pta->getPAG()->getGNode(nodeIt->first)))
|
|
149
149
|
objNodeNumber++;
|
|
150
150
|
|
|
151
151
|
u32_t nCopyIn = nodeIt->second->getDirectInEdges().size();
|
|
@@ -244,7 +244,7 @@ void AndersenStat::statNullPtr()
|
|
|
244
244
|
{
|
|
245
245
|
std::string str;
|
|
246
246
|
raw_string_ostream rawstr(str);
|
|
247
|
-
if (!SVFUtil::isa<
|
|
247
|
+
if (!SVFUtil::isa<DummyValVar>(pagNode) && !SVFUtil::isa<DummyObjVar>(pagNode) )
|
|
248
248
|
{
|
|
249
249
|
// if a pointer is in dead function, we do not care
|
|
250
250
|
if(isPtrInDeadFunction(pagNode->getValue()) == false)
|
|
@@ -472,7 +472,7 @@ bool FlowSensitive::processGep(const GepSVFGNode* edge)
|
|
|
472
472
|
const PointsTo& srcPts = getPts(edge->getPAGSrcNodeID());
|
|
473
473
|
|
|
474
474
|
PointsTo tmpDstPts;
|
|
475
|
-
if (SVFUtil::isa<
|
|
475
|
+
if (SVFUtil::isa<VariantGepStmt>(edge->getPAGEdge()))
|
|
476
476
|
{
|
|
477
477
|
for (NodeID o : srcPts)
|
|
478
478
|
{
|
|
@@ -486,7 +486,7 @@ bool FlowSensitive::processGep(const GepSVFGNode* edge)
|
|
|
486
486
|
tmpDstPts.set(getFIObjNode(o));
|
|
487
487
|
}
|
|
488
488
|
}
|
|
489
|
-
else if (const
|
|
489
|
+
else if (const NormalGepStmt* normalGep = SVFUtil::dyn_cast<NormalGepStmt>(edge->getPAGEdge()))
|
|
490
490
|
{
|
|
491
491
|
for (NodeID o : srcPts)
|
|
492
492
|
{
|
|
@@ -107,7 +107,7 @@ void FlowSensitiveStat::performStat()
|
|
|
107
107
|
{
|
|
108
108
|
NodeID nodeId = nodeIt->first;
|
|
109
109
|
PAGNode* pagNode = nodeIt->second;
|
|
110
|
-
if(SVFUtil::isa<
|
|
110
|
+
if(SVFUtil::isa<ObjVar>(pagNode))
|
|
111
111
|
{
|
|
112
112
|
const MemObj * memObj = pag->getBaseObj(nodeId);
|
|
113
113
|
SymID baseId = memObj->getId();
|
|
@@ -294,7 +294,7 @@ void FlowSensitiveStat::statNullPtr()
|
|
|
294
294
|
{
|
|
295
295
|
std::string str;
|
|
296
296
|
raw_string_ostream rawstr(str);
|
|
297
|
-
if (!SVFUtil::isa<
|
|
297
|
+
if (!SVFUtil::isa<DummyValVar>(pagNode) && !SVFUtil::isa<DummyObjVar>(pagNode))
|
|
298
298
|
{
|
|
299
299
|
// if a pointer is in dead function, we do not care
|
|
300
300
|
if(isPtrInDeadFunction(pagNode->getValue()) == false)
|
|
@@ -69,7 +69,7 @@ void FlowSensitiveTBHC::backPropagate(NodeID clone)
|
|
|
69
69
|
assert(cloneObj && "FSTBHC: original object does not exist in SVFIR?");
|
|
70
70
|
// Check the original object too because when reuse of a gep occurs, the new object
|
|
71
71
|
// is an FI object.
|
|
72
|
-
if (SVFUtil::isa<
|
|
72
|
+
if (SVFUtil::isa<CloneGepObjVar>(cloneObj) || SVFUtil::isa<GepObjPN>(originalObj))
|
|
73
73
|
{
|
|
74
74
|
// Since getGepObjClones is updated, some GEP nodes need to be redone.
|
|
75
75
|
const NodeBS &retrievers = gepToSVFGRetrievers[getOriginalObj(clone)];
|
|
@@ -78,7 +78,7 @@ void FlowSensitiveTBHC::backPropagate(NodeID clone)
|
|
|
78
78
|
pushIntoWorklist(r);
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
-
else if (SVFUtil::isa<
|
|
81
|
+
else if (SVFUtil::isa<CloneFIObjVar>(cloneObj) || SVFUtil::isa<CloneDummyObjVar>(cloneObj))
|
|
82
82
|
{
|
|
83
83
|
pushIntoWorklist(getAllocationSite(getOriginalObj(clone)));
|
|
84
84
|
}
|
|
@@ -299,7 +299,7 @@ bool FlowSensitiveTBHC::processGep(const GepSVFGNode* gep)
|
|
|
299
299
|
}
|
|
300
300
|
else
|
|
301
301
|
{
|
|
302
|
-
if (SVFUtil::isa<
|
|
302
|
+
if (SVFUtil::isa<VariantGepStmt>(gep->getPAGEdge()))
|
|
303
303
|
{
|
|
304
304
|
setObjFieldInsensitive(oq);
|
|
305
305
|
tmpDstPts.set(oq);
|
|
@@ -314,7 +314,7 @@ bool FlowSensitiveTBHC::processGep(const GepSVFGNode* gep)
|
|
|
314
314
|
}
|
|
315
315
|
}
|
|
316
316
|
}
|
|
317
|
-
else if (const
|
|
317
|
+
else if (const NormalGepStmt* normalGep = SVFUtil::dyn_cast<NormalGepStmt>(gep->getPAGEdge()))
|
|
318
318
|
{
|
|
319
319
|
const DIType *baseType = getType(oq);
|
|
320
320
|
|
|
@@ -36,7 +36,7 @@ VersionedFlowSensitive::VersionedFlowSensitive(SVFIR *_pag, PTATY type)
|
|
|
36
36
|
|
|
37
37
|
for (SVFIR::const_iterator it = pag->begin(); it != pag->end(); ++it)
|
|
38
38
|
{
|
|
39
|
-
if (SVFUtil::isa<
|
|
39
|
+
if (SVFUtil::isa<ObjVar>(it->second)) equivalentObject[it->first] = it->first;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
assert(!Options::OPTSVFG && "VFS: -opt-svfg not currently supported with VFS.");
|
|
@@ -53,7 +53,7 @@ void VersionedFlowSensitiveStat::performStat()
|
|
|
53
53
|
{
|
|
54
54
|
NodeID nodeId = it->first;
|
|
55
55
|
PAGNode* pagNode = it->second;
|
|
56
|
-
if (SVFUtil::isa<
|
|
56
|
+
if (SVFUtil::isa<ObjVar>(pagNode))
|
|
57
57
|
{
|
|
58
58
|
const MemObj *memObj = pag->getBaseObj(nodeId);
|
|
59
59
|
SymID baseId = memObj->getId();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svf-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.322",
|
|
4
4
|
"description": "* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!</b> * <b>SVF now supports LLVM-10.0.0! </b> * <b>We thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese </b> * <b>SVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). </b> * <b>SVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). </b> * <b>[Use SVF as an external lib](https://github.com/SVF-tools/SVF/wiki/Using-SVF-as-a-lib-in-your-own-tool) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). </b> * <b>SVF now supports LLVM-7.0.0. </b> * <b>SVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! </b> * <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b> * <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b> * <b>SVF now supports analysis for C++ programs.</b> <br />",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|