svf-tools 1.0.613 → 1.0.615
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/CMakeLists.txt +13 -0
- package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +7 -6
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +22 -22
- package/SVF-doxygen/html/html/Andersen_8h_source.html +16 -16
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +7 -7
- package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/CFLGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CSC_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +14 -14
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ConsG_8h_source.html +9 -9
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +9 -9
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +4 -6
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +22 -22
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +21 -21
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +7 -7
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +27 -28
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +65 -65
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +24 -29
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +8 -8
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/MHP_8h_source.html +5 -5
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +12 -17
- package/SVF-doxygen/html/html/MTA_8h_source.html +3 -4
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +34 -34
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +7 -7
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +16 -15
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +53 -52
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +7 -8
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/Options_8cpp_source.html +52 -53
- package/SVF-doxygen/html/html/Options_8h_source.html +53 -54
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +33 -33
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +91 -95
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +31 -39
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +85 -92
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +20 -20
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +16 -16
- package/SVF-doxygen/html/html/PointsTo_8cpp.html +1 -0
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +51 -51
- package/SVF-doxygen/html/html/PointsTo_8h_source.html +38 -38
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SCC_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +11 -22
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +14 -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 +7 -7
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +21 -19
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +49 -62
- package/SVF-doxygen/html/html/SVFG_8h_source.html +45 -45
- package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +10 -16
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +83 -83
- package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/SVFType_8h.html +22 -22
- package/SVF-doxygen/html/html/SVFType_8h_source.html +76 -77
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +11 -11
- package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFValue_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -3
- package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +69 -71
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +39 -39
- package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +49 -51
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +13 -13
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/TCT_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/VFG_8h_source.html +5 -5
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +33 -33
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +4 -4
- package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +11 -11
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +2 -2
- package/SVF-doxygen/html/html/WPASolver_8h_source.html +25 -25
- package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp.html +1 -5
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -5
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +187 -188
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +104 -107
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +163 -164
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +47 -50
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +194 -195
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +45 -48
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +204 -205
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +35 -38
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +191 -192
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +29 -32
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +122 -123
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +158 -219
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +137 -138
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +57 -49
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +138 -139
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +34 -34
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +140 -141
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1CSC.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallSite-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +114 -114
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +17 -31
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +40 -40
- package/SVF-doxygen/html/html/classSVF_1_1DFPTData.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1DiffPTData.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +228 -229
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +62 -65
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +194 -195
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +55 -55
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +219 -220
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +335 -342
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +57 -57
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +20 -14
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +108 -94
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +36 -36
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +87 -87
- package/SVF-doxygen/html/html/classSVF_1_1MTA-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +27 -33
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder-members.html +41 -43
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +57 -80
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +54 -54
- package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +4 -3
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +170 -143
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData.html +13 -15
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +17 -18
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +53 -79
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PTData.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData-members.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +174 -177
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData-members.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +99 -102
- package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData-members.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +125 -127
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData-members.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +83 -86
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +122 -122
- package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData-members.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData.html +137 -140
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +56 -56
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo-members.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +183 -178
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator-members.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +87 -65
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SCCDetection.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SCCDetection_1_1GNodeSCCInfo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFArgument-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFArgument.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFArrayType.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +13 -16
- package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstant-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstant.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +5 -7
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunctionType.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +211 -236
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder-members.html +7 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +50 -138
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +82 -82
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +203 -215
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +79 -79
- package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIntergerType.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFLoopAndDomInfo-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFLoopAndDomInfo.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +0 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFOtherType.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFPointerType.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1SVFStructType.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +38 -38
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +4 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder-members.html +12 -14
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +42 -68
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +108 -109
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html +50 -50
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +146 -146
- package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +48 -61
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +178 -179
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +35 -38
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +42 -46
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +169 -170
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +31 -34
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +263 -264
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +112 -115
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedPTData.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1WPASolver-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +76 -81
- package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +2 -2
- package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
- package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/functions.html +1 -1
- package/SVF-doxygen/html/html/functions_0x7e.html +16 -16
- package/SVF-doxygen/html/html/functions_a.html +7 -7
- package/SVF-doxygen/html/html/functions_b.html +6 -6
- package/SVF-doxygen/html/html/functions_c.html +27 -27
- package/SVF-doxygen/html/html/functions_d.html +10 -11
- package/SVF-doxygen/html/html/functions_e.html +2 -2
- package/SVF-doxygen/html/html/functions_f.html +6 -6
- package/SVF-doxygen/html/html/functions_func.html +6 -6
- package/SVF-doxygen/html/html/functions_func_0x7e.html +16 -16
- package/SVF-doxygen/html/html/functions_func_b.html +6 -6
- package/SVF-doxygen/html/html/functions_func_c.html +27 -27
- package/SVF-doxygen/html/html/functions_func_d.html +10 -11
- package/SVF-doxygen/html/html/functions_func_e.html +2 -2
- package/SVF-doxygen/html/html/functions_func_f.html +5 -5
- package/SVF-doxygen/html/html/functions_func_g.html +22 -22
- package/SVF-doxygen/html/html/functions_func_h.html +3 -3
- package/SVF-doxygen/html/html/functions_func_i.html +3 -3
- package/SVF-doxygen/html/html/functions_func_o.html +3 -3
- package/SVF-doxygen/html/html/functions_func_p.html +5 -5
- package/SVF-doxygen/html/html/functions_func_r.html +5 -8
- package/SVF-doxygen/html/html/functions_func_s.html +6 -6
- package/SVF-doxygen/html/html/functions_func_t.html +1 -1
- package/SVF-doxygen/html/html/functions_func_u.html +23 -23
- package/SVF-doxygen/html/html/functions_g.html +25 -28
- package/SVF-doxygen/html/html/functions_h.html +3 -3
- package/SVF-doxygen/html/html/functions_i.html +6 -6
- package/SVF-doxygen/html/html/functions_m.html +1 -1
- package/SVF-doxygen/html/html/functions_o.html +13 -13
- package/SVF-doxygen/html/html/functions_p.html +19 -19
- package/SVF-doxygen/html/html/functions_r.html +11 -12
- package/SVF-doxygen/html/html/functions_s.html +33 -36
- package/SVF-doxygen/html/html/functions_t.html +12 -12
- package/SVF-doxygen/html/html/functions_type_t.html +1 -1
- package/SVF-doxygen/html/html/functions_u.html +26 -23
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_vars.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_g.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_i.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_p.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_s.html +5 -8
- package/SVF-doxygen/html/html/functions_vars_t.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_u.html +3 -0
- package/SVF-doxygen/html/html/functions_w.html +3 -7
- package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
- package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF.html +35 -35
- package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +2 -2
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +4 -4
- package/SVF-doxygen/html/html/saber_8cpp.html +1 -5
- package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -5
- package/SVF-doxygen/html/html/search/all_0.js +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +4 -4
- package/SVF-doxygen/html/html/search/all_10.js +15 -15
- package/SVF-doxygen/html/html/search/all_11.js +1 -2
- package/SVF-doxygen/html/html/search/all_12.js +20 -21
- package/SVF-doxygen/html/html/search/all_13.js +8 -8
- package/SVF-doxygen/html/html/search/all_14.js +13 -12
- package/SVF-doxygen/html/html/search/all_15.js +4 -4
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_19.js +16 -16
- package/SVF-doxygen/html/html/search/all_2.js +6 -6
- package/SVF-doxygen/html/html/search/all_3.js +14 -14
- package/SVF-doxygen/html/html/search/all_4.js +5 -5
- package/SVF-doxygen/html/html/search/all_5.js +2 -2
- package/SVF-doxygen/html/html/search/all_6.js +5 -5
- package/SVF-doxygen/html/html/search/all_7.js +11 -12
- package/SVF-doxygen/html/html/search/all_8.js +3 -3
- package/SVF-doxygen/html/html/search/all_9.js +4 -4
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +3 -3
- package/SVF-doxygen/html/html/search/all_d.js +3 -3
- package/SVF-doxygen/html/html/search/all_e.js +2 -2
- package/SVF-doxygen/html/html/search/all_f.js +5 -5
- package/SVF-doxygen/html/html/search/functions_0.js +4 -4
- package/SVF-doxygen/html/html/search/functions_1.js +6 -6
- package/SVF-doxygen/html/html/search/functions_10.js +1 -2
- package/SVF-doxygen/html/html/search/functions_11.js +11 -11
- package/SVF-doxygen/html/html/search/functions_12.js +1 -1
- package/SVF-doxygen/html/html/search/functions_13.js +12 -12
- package/SVF-doxygen/html/html/search/functions_17.js +16 -16
- package/SVF-doxygen/html/html/search/functions_2.js +14 -14
- package/SVF-doxygen/html/html/search/functions_3.js +5 -5
- package/SVF-doxygen/html/html/search/functions_4.js +2 -2
- package/SVF-doxygen/html/html/search/functions_5.js +4 -4
- package/SVF-doxygen/html/html/search/functions_6.js +11 -11
- package/SVF-doxygen/html/html/search/functions_7.js +3 -3
- package/SVF-doxygen/html/html/search/functions_8.js +3 -3
- package/SVF-doxygen/html/html/search/functions_d.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +3 -3
- package/SVF-doxygen/html/html/search/functions_f.js +5 -5
- package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
- package/SVF-doxygen/html/html/search/variables_0.js +1 -1
- package/SVF-doxygen/html/html/search/variables_10.js +2 -2
- package/SVF-doxygen/html/html/search/variables_12.js +5 -6
- package/SVF-doxygen/html/html/search/variables_13.js +3 -3
- package/SVF-doxygen/html/html/search/variables_14.js +1 -0
- package/SVF-doxygen/html/html/search/variables_6.js +1 -1
- package/SVF-doxygen/html/html/search/variables_7.js +0 -1
- package/SVF-doxygen/html/html/search/variables_9.js +1 -1
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +14 -14
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement-members.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement.html +47 -57
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1PointsTo_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4.html +5 -5
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +6 -7
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/build.sh +2 -2
- package/include/DDA/DDAPass.h +1 -1
- package/include/DDA/FlowDDA.h +1 -1
- package/include/Graphs/ICFG.h +1 -1
- package/include/Graphs/SVFG.h +3 -4
- package/include/Graphs/SVFGOPT.h +7 -7
- package/include/MSSA/MemSSA.h +2 -0
- package/include/MSSA/SVFGBuilder.h +5 -14
- package/include/MTA/MTA.h +2 -2
- package/include/MemoryModel/MutablePointsToDS.h +3 -3
- package/include/MemoryModel/PersistentPointsToCache.h +7 -8
- package/include/MemoryModel/PersistentPointsToDS.h +93 -93
- package/include/MemoryModel/PointerAnalysisImpl.h +17 -28
- package/include/MemoryModel/PointsTo.h +24 -24
- package/include/SABER/SrcSnkDDA.h +10 -13
- package/include/SVF-LLVM/LLVMLoopAnalysis.h +2 -1
- package/include/SVF-LLVM/LLVMModule.h +6 -6
- package/include/SVFIR/SVFIR.h +3 -5
- package/include/SVFIR/SVFType.h +6 -8
- package/include/SVFIR/SVFValue.h +5 -5
- package/include/Util/Options.h +0 -1
- package/include/Util/SparseBitVector.h +6 -14
- package/include/WPA/FlowSensitive.h +13 -20
- package/include/WPA/WPASolver.h +5 -9
- package/lib/DDA/DDAPass.cpp +4 -4
- package/lib/Graphs/CFLGraph.cpp +3 -0
- package/lib/Graphs/SVFG.cpp +1 -1
- package/lib/MSSA/MemSSA.cpp +5 -3
- package/lib/MSSA/SVFGBuilder.cpp +9 -27
- package/lib/MTA/MTA.cpp +4 -4
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +10 -10
- package/lib/MemoryModel/PointsTo.cpp +23 -19
- package/lib/SVF-LLVM/LLVMLoopAnalysis.cpp +3 -4
- package/lib/SVF-LLVM/LLVMModule.cpp +32 -21
- package/lib/SVFIR/SVFIR.cpp +1 -1
- package/lib/SVFIR/SymbolTableInfo.cpp +4 -15
- package/lib/Util/Options.cpp +0 -6
- package/lib/WPA/AndersenSFR.cpp +1 -1
- package/lib/WPA/FlowSensitive.cpp +1 -1
- package/package.json +1 -1
- package/tools/CFL/cfl.cpp +5 -4
- package/tools/DDA/dda.cpp +3 -2
- package/tools/Example/svf-ex.cpp +3 -2
- package/tools/MTA/mta.cpp +6 -4
- package/tools/SABER/saber.cpp +7 -5
- package/tools/WPA/wpa.cpp +3 -2
package/lib/DDA/DDAPass.cpp
CHANGED
|
@@ -115,12 +115,12 @@ void DDAPass::runPointerAnalysis(SVFIR* pag, u32_t kind)
|
|
|
115
115
|
{
|
|
116
116
|
case PointerAnalysis::Cxt_DDA:
|
|
117
117
|
{
|
|
118
|
-
_pta =
|
|
118
|
+
_pta = std::make_unique<ContextDDA>(pag, _client);
|
|
119
119
|
break;
|
|
120
120
|
}
|
|
121
121
|
case PointerAnalysis::FlowS_DDA:
|
|
122
122
|
{
|
|
123
|
-
_pta =
|
|
123
|
+
_pta = std::make_unique<FlowDDA>(pag, _client);
|
|
124
124
|
break;
|
|
125
125
|
}
|
|
126
126
|
default:
|
|
@@ -137,14 +137,14 @@ void DDAPass::runPointerAnalysis(SVFIR* pag, u32_t kind)
|
|
|
137
137
|
///initialize
|
|
138
138
|
_pta->initialize();
|
|
139
139
|
///compute points-to
|
|
140
|
-
_client->answerQueries(_pta);
|
|
140
|
+
_client->answerQueries(_pta.get());
|
|
141
141
|
///finalize
|
|
142
142
|
_pta->finalize();
|
|
143
143
|
if(Options::PrintCPts)
|
|
144
144
|
_pta->dumpCPts();
|
|
145
145
|
|
|
146
146
|
if (_pta->printStat())
|
|
147
|
-
_client->performStat(_pta);
|
|
147
|
+
_client->performStat(_pta.get());
|
|
148
148
|
|
|
149
149
|
if (Options::PrintQueryPts)
|
|
150
150
|
printQueryPTS();
|
package/lib/Graphs/CFLGraph.cpp
CHANGED
package/lib/Graphs/SVFG.cpp
CHANGED
|
@@ -197,7 +197,7 @@ FormalOUTSVFGNode::FormalOUTSVFGNode(NodeID id, const MRVer* mrVer, const FunExi
|
|
|
197
197
|
/*!
|
|
198
198
|
* Constructor
|
|
199
199
|
*/
|
|
200
|
-
SVFG::SVFG(MemSSA
|
|
200
|
+
SVFG::SVFG(std::unique_ptr<MemSSA> mssa, VFGK k): VFG(mssa->getPTA()->getPTACallGraph(),k),mssa(std::move(mssa)), pta(this->mssa->getPTA())
|
|
201
201
|
{
|
|
202
202
|
stat = new SVFGStat(this);
|
|
203
203
|
}
|
package/lib/MSSA/MemSSA.cpp
CHANGED
|
@@ -357,9 +357,11 @@ MRVer* MemSSA::newSSAName(const MemRegion* mr, MSSADEF* def)
|
|
|
357
357
|
|
|
358
358
|
MRVERSION version = mr2CounterMap[mr];
|
|
359
359
|
mr2CounterMap[mr] = version + 1;
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
360
|
+
auto mrVer = std::make_unique<MRVer>(mr, version, def);
|
|
361
|
+
auto mrVerPtr = mrVer.get();
|
|
362
|
+
mr2VerStackMap[mr].push_back(mrVerPtr);
|
|
363
|
+
usedMRVers.push_back(std::move(mrVer));
|
|
364
|
+
return mrVerPtr;
|
|
363
365
|
}
|
|
364
366
|
|
|
365
367
|
/*!
|
package/lib/MSSA/SVFGBuilder.cpp
CHANGED
|
@@ -38,9 +38,6 @@ using namespace SVF;
|
|
|
38
38
|
using namespace SVFUtil;
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
SVFG* SVFGBuilder::globalSvfg = nullptr;
|
|
42
|
-
|
|
43
|
-
|
|
44
41
|
SVFG* SVFGBuilder::buildPTROnlySVFG(BVDataPTAImpl* pta)
|
|
45
42
|
{
|
|
46
43
|
if(Options::OPTSVFG)
|
|
@@ -67,41 +64,26 @@ void SVFGBuilder::buildSVFG()
|
|
|
67
64
|
SVFG* SVFGBuilder::build(BVDataPTAImpl* pta, VFG::VFGK kind)
|
|
68
65
|
{
|
|
69
66
|
|
|
70
|
-
|
|
67
|
+
auto mssa = buildMSSA(pta, (VFG::PTRONLYSVFG==kind || VFG::PTRONLYSVFG_OPT==kind));
|
|
71
68
|
|
|
72
69
|
DBOUT(DGENERAL, outs() << pasMsg("Build Sparse Value-Flow Graph \n"));
|
|
73
|
-
if(
|
|
74
|
-
|
|
75
|
-
if(globalSvfg==nullptr)
|
|
76
|
-
{
|
|
77
|
-
/// Note that we use callgraph from andersen analysis here
|
|
78
|
-
if(kind == VFG::FULLSVFG_OPT || kind == VFG::PTRONLYSVFG_OPT)
|
|
79
|
-
svfg = globalSvfg = new SVFGOPT(mssa, kind);
|
|
80
|
-
else
|
|
81
|
-
svfg = globalSvfg = new SVFG(mssa, kind);
|
|
82
|
-
buildSVFG();
|
|
83
|
-
}
|
|
84
|
-
}
|
|
70
|
+
if(kind == VFG::FULLSVFG_OPT || kind == VFG::PTRONLYSVFG_OPT)
|
|
71
|
+
svfg = std::make_unique<SVFGOPT>(std::move(mssa), kind);
|
|
85
72
|
else
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
svfg = new SVFGOPT(mssa, kind);
|
|
89
|
-
else
|
|
90
|
-
svfg = new SVFG(mssa,kind);
|
|
91
|
-
buildSVFG();
|
|
92
|
-
}
|
|
73
|
+
svfg = std::unique_ptr<SVFG>(new SVFG(std::move(mssa),kind));
|
|
74
|
+
buildSVFG();
|
|
93
75
|
|
|
94
76
|
/// Update call graph using pre-analysis results
|
|
95
77
|
if(Options::SVFGWithIndirectCall || SVFGWithIndCall)
|
|
96
78
|
svfg->updateCallGraph(pta);
|
|
97
79
|
|
|
98
|
-
if(
|
|
80
|
+
if(svfg->getMSSA()->getPTA()->printStat())
|
|
99
81
|
svfg->performStat();
|
|
100
82
|
|
|
101
83
|
if(Options::DumpVFG)
|
|
102
84
|
svfg->dump("svfg_final");
|
|
103
85
|
|
|
104
|
-
return svfg;
|
|
86
|
+
return svfg.get();
|
|
105
87
|
}
|
|
106
88
|
|
|
107
89
|
/*!
|
|
@@ -112,12 +94,12 @@ void SVFGBuilder::releaseMemory()
|
|
|
112
94
|
svfg->clearMSSA();
|
|
113
95
|
}
|
|
114
96
|
|
|
115
|
-
MemSSA
|
|
97
|
+
std::unique_ptr<MemSSA> SVFGBuilder::buildMSSA(BVDataPTAImpl* pta, bool ptrOnlyMSSA)
|
|
116
98
|
{
|
|
117
99
|
|
|
118
100
|
DBOUT(DGENERAL, outs() << pasMsg("Build Memory SSA \n"));
|
|
119
101
|
|
|
120
|
-
|
|
102
|
+
auto mssa = std::make_unique<MemSSA>(pta, ptrOnlyMSSA);
|
|
121
103
|
|
|
122
104
|
SVFModule* svfModule = mssa->getPTA()->getModule();
|
|
123
105
|
for (SVFModule::const_iterator iter = svfModule->begin(), eiter = svfModule->end();
|
package/lib/MTA/MTA.cpp
CHANGED
|
@@ -43,7 +43,7 @@ using namespace SVFUtil;
|
|
|
43
43
|
|
|
44
44
|
MTA::MTA() : tcg(nullptr), tct(nullptr), mhp(nullptr), lsa(nullptr)
|
|
45
45
|
{
|
|
46
|
-
stat =
|
|
46
|
+
stat = std::make_unique<MTAStat>();
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
MTA::~MTA()
|
|
@@ -129,7 +129,7 @@ MHP* MTA::computeMHP(SVFModule* module)
|
|
|
129
129
|
DBOUT(DGENERAL, outs() << pasMsg("Build TCT\n"));
|
|
130
130
|
DBOUT(DMTA, outs() << pasMsg("Build TCT\n"));
|
|
131
131
|
DOTIMESTAT(double tctStart = stat->getClk());
|
|
132
|
-
tct =
|
|
132
|
+
tct = std::make_unique<TCT>(pta);
|
|
133
133
|
tcg = tct->getThreadCallGraph();
|
|
134
134
|
DOTIMESTAT(double tctEnd = stat->getClk());
|
|
135
135
|
DOTIMESTAT(stat->TCTTime += (tctEnd - tctStart) / TIMEINTERVAL);
|
|
@@ -137,7 +137,7 @@ MHP* MTA::computeMHP(SVFModule* module)
|
|
|
137
137
|
if (pta->printStat())
|
|
138
138
|
{
|
|
139
139
|
stat->performThreadCallGraphStat(tcg);
|
|
140
|
-
stat->performTCTStat(tct);
|
|
140
|
+
stat->performTCTStat(tct.get());
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
tcg->dump("tcg");
|
|
@@ -146,7 +146,7 @@ MHP* MTA::computeMHP(SVFModule* module)
|
|
|
146
146
|
DBOUT(DMTA, outs() << pasMsg("MHP analysis\n"));
|
|
147
147
|
|
|
148
148
|
DOTIMESTAT(double mhpStart = stat->getClk());
|
|
149
|
-
MHP* mhp = new MHP(tct);
|
|
149
|
+
MHP* mhp = new MHP(tct.get());
|
|
150
150
|
mhp->analyze();
|
|
151
151
|
DOTIMESTAT(double mhpEnd = stat->getClk());
|
|
152
152
|
DOTIMESTAT(stat->MHPTime += (mhpEnd - mhpStart) / TIMEINTERVAL);
|
|
@@ -53,36 +53,36 @@ BVDataPTAImpl::BVDataPTAImpl(SVFIR* p, PointerAnalysis::PTATY type, bool alias_c
|
|
|
53
53
|
// Only maintain reverse points-to when the analysis is field-sensitive, as objects turning
|
|
54
54
|
// field-insensitive is all it is used for.
|
|
55
55
|
bool maintainRevPts = Options::MaxFieldLimit != 0;
|
|
56
|
-
if (Options::ptDataBacking == PTBackingType::Mutable) ptD =
|
|
57
|
-
else if (Options::ptDataBacking == PTBackingType::Persistent) ptD =
|
|
56
|
+
if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutDiffPTDataTy>(maintainRevPts);
|
|
57
|
+
else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersDiffPTDataTy>(getPtCache(), maintainRevPts);
|
|
58
58
|
else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
|
|
59
59
|
}
|
|
60
60
|
else if (type == Steensgaard_WPA)
|
|
61
61
|
{
|
|
62
62
|
// Steensgaard is only field-insensitive (for now?), so no reverse points-to.
|
|
63
|
-
if (Options::ptDataBacking == PTBackingType::Mutable) ptD =
|
|
64
|
-
else if (Options::ptDataBacking == PTBackingType::Persistent) ptD =
|
|
63
|
+
if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutDiffPTDataTy>(false);
|
|
64
|
+
else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersDiffPTDataTy>(getPtCache(), false);
|
|
65
65
|
else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
|
|
66
66
|
}
|
|
67
67
|
else if (type == FSSPARSE_WPA)
|
|
68
68
|
{
|
|
69
69
|
if (Options::INCDFPTData)
|
|
70
70
|
{
|
|
71
|
-
if (Options::ptDataBacking == PTBackingType::Mutable) ptD =
|
|
72
|
-
else if (Options::ptDataBacking == PTBackingType::Persistent) ptD =
|
|
71
|
+
if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutIncDFPTDataTy>(false);
|
|
72
|
+
else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersIncDFPTDataTy>(getPtCache(), false);
|
|
73
73
|
else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
|
|
74
74
|
}
|
|
75
75
|
else
|
|
76
76
|
{
|
|
77
|
-
if (Options::ptDataBacking == PTBackingType::Mutable) ptD =
|
|
78
|
-
else if (Options::ptDataBacking == PTBackingType::Persistent) ptD =
|
|
77
|
+
if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutDFPTDataTy>(false);
|
|
78
|
+
else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersDFPTDataTy>(getPtCache(), false);
|
|
79
79
|
else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
else if (type == VFS_WPA)
|
|
83
83
|
{
|
|
84
|
-
if (Options::ptDataBacking == PTBackingType::Mutable) ptD =
|
|
85
|
-
else if (Options::ptDataBacking == PTBackingType::Persistent) ptD =
|
|
84
|
+
if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutVersionedPTDataTy>(false);
|
|
85
|
+
else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersVersionedPTDataTy>(getPtCache(), false);
|
|
86
86
|
else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
|
|
87
87
|
}
|
|
88
88
|
else assert(false && "no points-to data available");
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
#include <new>
|
|
13
|
+
#include <utility>
|
|
13
14
|
|
|
14
15
|
#include "Util/Options.h"
|
|
15
16
|
#include "MemoryModel/PointsTo.h"
|
|
@@ -21,7 +22,7 @@ namespace SVF
|
|
|
21
22
|
PointsTo::MappingPtr PointsTo::currentBestNodeMapping = nullptr;
|
|
22
23
|
PointsTo::MappingPtr PointsTo::currentBestReverseNodeMapping = nullptr;
|
|
23
24
|
|
|
24
|
-
PointsTo::PointsTo(
|
|
25
|
+
PointsTo::PointsTo()
|
|
25
26
|
: type(Options::PtType), nodeMapping(currentBestNodeMapping),
|
|
26
27
|
reverseNodeMapping(currentBestReverseNodeMapping)
|
|
27
28
|
{
|
|
@@ -42,8 +43,8 @@ PointsTo::PointsTo(const PointsTo &pt)
|
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
PointsTo::PointsTo(PointsTo &&pt)
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
noexcept : type(pt.type), nodeMapping(std::move(pt.nodeMapping)),
|
|
47
|
+
reverseNodeMapping(std::move(pt.reverseNodeMapping))
|
|
47
48
|
{
|
|
48
49
|
if (type == SBV) new (&sbv) SparseBitVector<>(std::move(pt.sbv));
|
|
49
50
|
else if (type == CBV) new (&cbv) CoreBitVector(std::move(pt.cbv));
|
|
@@ -51,7 +52,7 @@ PointsTo::PointsTo(PointsTo &&pt)
|
|
|
51
52
|
else assert(false && "PointsTo::PointsTo&&: unknown type");
|
|
52
53
|
}
|
|
53
54
|
|
|
54
|
-
PointsTo::~PointsTo(
|
|
55
|
+
PointsTo::~PointsTo()
|
|
55
56
|
{
|
|
56
57
|
if (type == SBV) sbv.~SparseBitVector<>();
|
|
57
58
|
else if (type == CBV) cbv.~CoreBitVector();
|
|
@@ -64,6 +65,8 @@ PointsTo::~PointsTo(void)
|
|
|
64
65
|
|
|
65
66
|
PointsTo &PointsTo::operator=(const PointsTo &rhs)
|
|
66
67
|
{
|
|
68
|
+
if (this == &rhs)
|
|
69
|
+
return *this;
|
|
67
70
|
this->type = rhs.type;
|
|
68
71
|
this->nodeMapping = rhs.nodeMapping;
|
|
69
72
|
this->reverseNodeMapping = rhs.reverseNodeMapping;
|
|
@@ -78,6 +81,7 @@ PointsTo &PointsTo::operator=(const PointsTo &rhs)
|
|
|
78
81
|
}
|
|
79
82
|
|
|
80
83
|
PointsTo &PointsTo::operator=(PointsTo &&rhs)
|
|
84
|
+
noexcept
|
|
81
85
|
{
|
|
82
86
|
this->type = rhs.type;
|
|
83
87
|
this->nodeMapping = rhs.nodeMapping;
|
|
@@ -91,7 +95,7 @@ PointsTo &PointsTo::operator=(PointsTo &&rhs)
|
|
|
91
95
|
return *this;
|
|
92
96
|
}
|
|
93
97
|
|
|
94
|
-
bool PointsTo::empty(
|
|
98
|
+
bool PointsTo::empty() const
|
|
95
99
|
{
|
|
96
100
|
if (type == CBV) return cbv.empty();
|
|
97
101
|
else if (type == SBV) return sbv.empty();
|
|
@@ -116,7 +120,7 @@ u32_t PointsTo::count(void) const
|
|
|
116
120
|
}
|
|
117
121
|
}
|
|
118
122
|
|
|
119
|
-
void PointsTo::clear(
|
|
123
|
+
void PointsTo::clear()
|
|
120
124
|
{
|
|
121
125
|
if (type == CBV) cbv.clear();
|
|
122
126
|
else if (type == SBV) sbv.clear();
|
|
@@ -196,7 +200,7 @@ bool PointsTo::intersects(const PointsTo &rhs) const
|
|
|
196
200
|
}
|
|
197
201
|
}
|
|
198
202
|
|
|
199
|
-
int PointsTo::find_first(
|
|
203
|
+
int PointsTo::find_first()
|
|
200
204
|
{
|
|
201
205
|
if (count() == 0) return -1;
|
|
202
206
|
return *begin();
|
|
@@ -306,14 +310,14 @@ void PointsTo::intersectWithComplement(const PointsTo &lhs, const PointsTo &rhs)
|
|
|
306
310
|
}
|
|
307
311
|
}
|
|
308
312
|
|
|
309
|
-
NodeBS PointsTo::toNodeBS(
|
|
313
|
+
NodeBS PointsTo::toNodeBS() const
|
|
310
314
|
{
|
|
311
315
|
NodeBS nbs;
|
|
312
316
|
for (const NodeID o : *this) nbs.set(o);
|
|
313
317
|
return nbs;
|
|
314
318
|
}
|
|
315
319
|
|
|
316
|
-
size_t PointsTo::hash(
|
|
320
|
+
size_t PointsTo::hash() const
|
|
317
321
|
{
|
|
318
322
|
if (type == CBV) return cbv.hash();
|
|
319
323
|
else if (type == SBV)
|
|
@@ -330,7 +334,7 @@ size_t PointsTo::hash(void) const
|
|
|
330
334
|
}
|
|
331
335
|
}
|
|
332
336
|
|
|
333
|
-
PointsTo::MappingPtr PointsTo::getNodeMapping(
|
|
337
|
+
PointsTo::MappingPtr PointsTo::getNodeMapping() const
|
|
334
338
|
{
|
|
335
339
|
return nodeMapping;
|
|
336
340
|
}
|
|
@@ -354,12 +358,12 @@ bool PointsTo::metaSame(const PointsTo &pt) const
|
|
|
354
358
|
return nodeMapping == pt.nodeMapping && reverseNodeMapping == pt.reverseNodeMapping;
|
|
355
359
|
}
|
|
356
360
|
|
|
357
|
-
PointsTo::MappingPtr PointsTo::getCurrentBestNodeMapping(
|
|
361
|
+
PointsTo::MappingPtr PointsTo::getCurrentBestNodeMapping()
|
|
358
362
|
{
|
|
359
363
|
return currentBestNodeMapping;
|
|
360
364
|
}
|
|
361
365
|
|
|
362
|
-
PointsTo::MappingPtr PointsTo::getCurrentBestReverseNodeMapping(
|
|
366
|
+
PointsTo::MappingPtr PointsTo::getCurrentBestReverseNodeMapping()
|
|
363
367
|
{
|
|
364
368
|
return currentBestReverseNodeMapping;
|
|
365
369
|
}
|
|
@@ -367,11 +371,11 @@ PointsTo::MappingPtr PointsTo::getCurrentBestReverseNodeMapping(void)
|
|
|
367
371
|
void PointsTo::setCurrentBestNodeMapping(MappingPtr newCurrentBestNodeMapping,
|
|
368
372
|
MappingPtr newCurrentBestReverseNodeMapping)
|
|
369
373
|
{
|
|
370
|
-
currentBestNodeMapping = newCurrentBestNodeMapping;
|
|
371
|
-
currentBestReverseNodeMapping = newCurrentBestReverseNodeMapping;
|
|
374
|
+
currentBestNodeMapping = std::move(newCurrentBestNodeMapping);
|
|
375
|
+
currentBestReverseNodeMapping = std::move(newCurrentBestReverseNodeMapping);
|
|
372
376
|
}
|
|
373
377
|
|
|
374
|
-
void PointsTo::checkAndRemap(
|
|
378
|
+
void PointsTo::checkAndRemap()
|
|
375
379
|
{
|
|
376
380
|
if (nodeMapping != currentBestNodeMapping)
|
|
377
381
|
{
|
|
@@ -427,7 +431,7 @@ PointsTo::PointsToIterator::PointsToIterator(const PointsToIterator &pt)
|
|
|
427
431
|
}
|
|
428
432
|
|
|
429
433
|
PointsTo::PointsToIterator::PointsToIterator(PointsToIterator &&pt)
|
|
430
|
-
|
|
434
|
+
noexcept : pt(pt.pt)
|
|
431
435
|
{
|
|
432
436
|
if (this->pt->type == PointsTo::Type::SBV)
|
|
433
437
|
{
|
|
@@ -490,7 +494,7 @@ PointsTo::PointsToIterator &PointsTo::PointsToIterator::operator=(PointsToIterat
|
|
|
490
494
|
return *this;
|
|
491
495
|
}
|
|
492
496
|
|
|
493
|
-
const PointsTo::PointsToIterator &PointsTo::PointsToIterator::operator++(
|
|
497
|
+
const PointsTo::PointsToIterator &PointsTo::PointsToIterator::operator++()
|
|
494
498
|
{
|
|
495
499
|
assert(!atEnd() && "PointsToIterator::++(pre): incrementing past end!");
|
|
496
500
|
if (pt->type == Type::CBV) ++cbvIt;
|
|
@@ -509,7 +513,7 @@ const PointsTo::PointsToIterator PointsTo::PointsToIterator::operator++(int)
|
|
|
509
513
|
return old;
|
|
510
514
|
}
|
|
511
515
|
|
|
512
|
-
NodeID PointsTo::PointsToIterator::operator*(
|
|
516
|
+
NodeID PointsTo::PointsToIterator::operator*() const
|
|
513
517
|
{
|
|
514
518
|
assert(!atEnd() && "PointsToIterator: dereferencing end!");
|
|
515
519
|
if (pt->type == Type::CBV) return pt->getExternalNode(*cbvIt);
|
|
@@ -545,7 +549,7 @@ bool PointsTo::PointsToIterator::operator!=(const PointsToIterator &rhs) const
|
|
|
545
549
|
return !(*this == rhs);
|
|
546
550
|
}
|
|
547
551
|
|
|
548
|
-
bool PointsTo::PointsToIterator::atEnd(
|
|
552
|
+
bool PointsTo::PointsToIterator::atEnd() const
|
|
549
553
|
{
|
|
550
554
|
assert(pt != nullptr && "PointsToIterator::atEnd: iterator iterating over nothing!");
|
|
551
555
|
if (pt->type == Type::CBV) return cbvIt == pt->cbv.end();
|
|
@@ -44,7 +44,7 @@ using namespace SVFUtil;
|
|
|
44
44
|
* @param mod SVF module
|
|
45
45
|
* @param llvmLoops output llvm loops
|
|
46
46
|
*/
|
|
47
|
-
void LLVMLoopAnalysis::buildLLVMLoops(SVFModule *mod, std::vector<const Loop *> &llvmLoops)
|
|
47
|
+
void LLVMLoopAnalysis::buildLLVMLoops(SVFModule *mod, std::vector<const Loop *> &llvmLoops, llvm::LoopInfoBase<llvm::BasicBlock, llvm::Loop> * loopInfo)
|
|
48
48
|
{
|
|
49
49
|
llvm::DominatorTree DT = llvm::DominatorTree();
|
|
50
50
|
std::vector<const Loop *> loop_stack;
|
|
@@ -57,8 +57,6 @@ void LLVMLoopAnalysis::buildLLVMLoops(SVFModule *mod, std::vector<const Loop *>
|
|
|
57
57
|
// do not analyze external call
|
|
58
58
|
if (SVFUtil::isExtCall(svffun)) continue;
|
|
59
59
|
DT.recalculate(const_cast<Function&>(*func));
|
|
60
|
-
auto loopInfo = new llvm::LoopInfoBase<llvm::BasicBlock, llvm::Loop>();
|
|
61
|
-
loopInfo->releaseMemory();
|
|
62
60
|
loopInfo->analyze(DT);
|
|
63
61
|
for (const auto &loop: *loopInfo)
|
|
64
62
|
{
|
|
@@ -86,7 +84,8 @@ void LLVMLoopAnalysis::buildLLVMLoops(SVFModule *mod, std::vector<const Loop *>
|
|
|
86
84
|
void LLVMLoopAnalysis::build(ICFG *icfg)
|
|
87
85
|
{
|
|
88
86
|
std::vector<const Loop *> llvmLoops;
|
|
89
|
-
|
|
87
|
+
llvm::LoopInfoBase<llvm::BasicBlock, llvm::Loop> loopInfo;
|
|
88
|
+
buildLLVMLoops(PAG::getPAG()->getModule(), llvmLoops, &loopInfo);
|
|
90
89
|
buildSVFLoops(icfg, llvmLoops);
|
|
91
90
|
}
|
|
92
91
|
|
|
@@ -83,12 +83,12 @@ LLVMModuleSet::~LLVMModuleSet()
|
|
|
83
83
|
|
|
84
84
|
SVFModule* LLVMModuleSet::buildSVFModule(Module &mod)
|
|
85
85
|
{
|
|
86
|
-
svfModule =
|
|
86
|
+
svfModule = std::make_unique<SVFModule>(mod.getModuleIdentifier());
|
|
87
87
|
modules.emplace_back(mod);
|
|
88
88
|
|
|
89
89
|
build();
|
|
90
90
|
|
|
91
|
-
return svfModule;
|
|
91
|
+
return svfModule.get();
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
SVFModule* LLVMModuleSet::buildSVFModule(const std::vector<std::string> &moduleNameVec)
|
|
@@ -100,9 +100,9 @@ SVFModule* LLVMModuleSet::buildSVFModule(const std::vector<std::string> &moduleN
|
|
|
100
100
|
loadModules(moduleNameVec);
|
|
101
101
|
|
|
102
102
|
if(!moduleNameVec.empty())
|
|
103
|
-
svfModule =
|
|
103
|
+
svfModule = std::make_unique<SVFModule>(*moduleNameVec.begin());
|
|
104
104
|
else
|
|
105
|
-
svfModule =
|
|
105
|
+
svfModule = std::make_unique<SVFModule>();
|
|
106
106
|
|
|
107
107
|
build();
|
|
108
108
|
|
|
@@ -115,12 +115,12 @@ SVFModule* LLVMModuleSet::buildSVFModule(const std::vector<std::string> &moduleN
|
|
|
115
115
|
/// building symbol table
|
|
116
116
|
DBOUT(DGENERAL, SVFUtil::outs() << SVFUtil::pasMsg("Building Symbol table ...\n"));
|
|
117
117
|
SymbolTableBuilder builder(symInfo);
|
|
118
|
-
builder.buildMemModel(svfModule);
|
|
118
|
+
builder.buildMemModel(svfModule.get());
|
|
119
119
|
}
|
|
120
120
|
double endSymInfoTime = SVFStat::getClk(true);
|
|
121
121
|
SVFStat::timeOfBuildingSymbolTable = (endSymInfoTime - startSymInfoTime)/TIMEINTERVAL;
|
|
122
122
|
|
|
123
|
-
return svfModule;
|
|
123
|
+
return svfModule.get();
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
void LLVMModuleSet::build()
|
|
@@ -983,18 +983,37 @@ StInfo* LLVMModuleSet::collectTypeInfo(const Type* T)
|
|
|
983
983
|
Type2TypeInfoMap::iterator tit = Type2TypeInfo.find(T);
|
|
984
984
|
if(tit!=Type2TypeInfo.end())
|
|
985
985
|
{
|
|
986
|
-
stinfo = tit->second;
|
|
986
|
+
stinfo = tit->second.get();
|
|
987
987
|
}
|
|
988
988
|
else
|
|
989
989
|
{
|
|
990
990
|
if (const ArrayType* aty = SVFUtil::dyn_cast<ArrayType>(T))
|
|
991
|
+
{
|
|
991
992
|
stinfo = collectArrayInfo(aty);
|
|
993
|
+
Type2TypeInfo[T] = std::unique_ptr<StInfo>(stinfo);
|
|
994
|
+
}
|
|
992
995
|
else if (const StructType* sty = SVFUtil::dyn_cast<StructType>(T))
|
|
993
|
-
|
|
996
|
+
{
|
|
997
|
+
u32_t nf;
|
|
998
|
+
stinfo = collectStructInfo(sty, nf);
|
|
999
|
+
Type2TypeInfo[T] = std::unique_ptr<StInfo>(stinfo);
|
|
1000
|
+
//Record the size of the complete struct and update max_struct.
|
|
1001
|
+
if (nf > symInfo->maxStSize)
|
|
1002
|
+
{
|
|
1003
|
+
symInfo->maxStruct = getSVFType(sty);
|
|
1004
|
+
symInfo->maxStSize = nf;
|
|
1005
|
+
}
|
|
1006
|
+
}
|
|
994
1007
|
else
|
|
995
|
-
|
|
1008
|
+
{
|
|
1009
|
+
/// The simple type info should not be processed before
|
|
1010
|
+
auto stinfo_own = std::make_unique<StInfo>(1);
|
|
1011
|
+
stinfo = stinfo_own.get();
|
|
1012
|
+
Type2TypeInfo[T] = std::move(stinfo_own);
|
|
1013
|
+
collectSimpleTypeInfo(stinfo, T);
|
|
1014
|
+
}
|
|
1015
|
+
|
|
996
1016
|
|
|
997
|
-
Type2TypeInfo[T] = stinfo;
|
|
998
1017
|
}
|
|
999
1018
|
return stinfo;
|
|
1000
1019
|
}
|
|
@@ -1081,13 +1100,13 @@ StInfo* LLVMModuleSet::collectArrayInfo(const ArrayType* ty)
|
|
|
1081
1100
|
* Fill in struct_info for T.
|
|
1082
1101
|
* Given a Struct type, we recursively extend and record its fields and types.
|
|
1083
1102
|
*/
|
|
1084
|
-
StInfo* LLVMModuleSet::collectStructInfo(const StructType *sty)
|
|
1103
|
+
StInfo* LLVMModuleSet::collectStructInfo(const StructType *sty, u32_t &nf)
|
|
1085
1104
|
{
|
|
1086
1105
|
/// The struct info should not be processed before
|
|
1087
1106
|
StInfo* stinfo = new StInfo(1);
|
|
1088
1107
|
|
|
1089
1108
|
// Number of fields after flattening the struct
|
|
1090
|
-
|
|
1109
|
+
nf = 0;
|
|
1091
1110
|
// The offset when considering array stride info
|
|
1092
1111
|
u32_t strideOffset = 0;
|
|
1093
1112
|
for (StructType::element_iterator it = sty->element_begin(), ie =
|
|
@@ -1129,13 +1148,6 @@ StInfo* LLVMModuleSet::collectStructInfo(const StructType *sty)
|
|
|
1129
1148
|
assert(stinfo->getFlattenElementTypes().size() == strideOffset && "typeForStruct size incorrect!");
|
|
1130
1149
|
stinfo->setNumOfFieldsAndElems(nf,strideOffset);
|
|
1131
1150
|
|
|
1132
|
-
//Record the size of the complete struct and update max_struct.
|
|
1133
|
-
if (nf > symInfo->maxStSize)
|
|
1134
|
-
{
|
|
1135
|
-
symInfo->maxStruct = getSVFType(sty);
|
|
1136
|
-
symInfo->maxStSize = nf;
|
|
1137
|
-
}
|
|
1138
|
-
|
|
1139
1151
|
return stinfo;
|
|
1140
1152
|
}
|
|
1141
1153
|
|
|
@@ -1143,9 +1155,8 @@ StInfo* LLVMModuleSet::collectStructInfo(const StructType *sty)
|
|
|
1143
1155
|
/*!
|
|
1144
1156
|
* Collect simple type (non-aggregate) info
|
|
1145
1157
|
*/
|
|
1146
|
-
StInfo* LLVMModuleSet::collectSimpleTypeInfo(const Type* ty)
|
|
1158
|
+
StInfo* LLVMModuleSet::collectSimpleTypeInfo(StInfo * stinfo, const Type* ty)
|
|
1147
1159
|
{
|
|
1148
|
-
StInfo* stinfo = new StInfo(1);
|
|
1149
1160
|
/// Only one field
|
|
1150
1161
|
stinfo->addFldWithType(0, getSVFType(ty), 0);
|
|
1151
1162
|
|
package/lib/SVFIR/SVFIR.cpp
CHANGED
|
@@ -127,23 +127,12 @@ void SymbolTableInfo::destroy()
|
|
|
127
127
|
if (iter->second)
|
|
128
128
|
delete iter->second;
|
|
129
129
|
}
|
|
130
|
-
Set<const StInfo*> stinfos;
|
|
131
|
-
for (SVFTypeSet::const_iterator iter = svfTypes.begin();
|
|
132
|
-
iter != svfTypes.end(); ++iter)
|
|
133
|
-
{
|
|
134
|
-
const SVFType* type = *iter;
|
|
135
|
-
stinfos.insert(type->getTypeInfo());
|
|
136
|
-
delete type;
|
|
137
|
-
}
|
|
138
130
|
|
|
139
|
-
for (
|
|
140
|
-
delete
|
|
131
|
+
for (auto * type: svfTypes)
|
|
132
|
+
delete type;
|
|
133
|
+
svfTypes.clear();
|
|
141
134
|
|
|
142
|
-
|
|
143
|
-
{
|
|
144
|
-
delete mod;
|
|
145
|
-
mod = nullptr;
|
|
146
|
-
}
|
|
135
|
+
mod = nullptr;
|
|
147
136
|
}
|
|
148
137
|
|
|
149
138
|
const MemObj* SymbolTableInfo::createDummyObj(SymID symId, const SVFType* type)
|
package/lib/Util/Options.cpp
CHANGED
|
@@ -458,12 +458,6 @@ const llvm::cl::opt<bool> Options::SVFGWithIndirectCall(
|
|
|
458
458
|
llvm::cl::desc("Update Indirect Calls for SVFG using pre-analysis")
|
|
459
459
|
);
|
|
460
460
|
|
|
461
|
-
const llvm::cl::opt<bool> Options::SingleVFG(
|
|
462
|
-
"single-vfg",
|
|
463
|
-
llvm::cl::init(false),
|
|
464
|
-
llvm::cl::desc("Create a single VFG shared by multiple analysis")
|
|
465
|
-
);
|
|
466
|
-
|
|
467
461
|
llvm::cl::opt<bool> Options::OPTSVFG(
|
|
468
462
|
"opt-svfg",
|
|
469
463
|
llvm::cl::init(false),
|
package/lib/WPA/AndersenSFR.cpp
CHANGED
|
@@ -45,7 +45,7 @@ void AndersenSFR::initialize()
|
|
|
45
45
|
setDetectPWC(false); // SCC will detect only copy edges
|
|
46
46
|
|
|
47
47
|
if (!csc)
|
|
48
|
-
csc = new CSC(_graph, scc);
|
|
48
|
+
csc = new CSC(_graph, scc.get());
|
|
49
49
|
|
|
50
50
|
/// Detect and collapse cycles consisting of only copy edges
|
|
51
51
|
getSCCDetector()->find();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svf-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.615",
|
|
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": {
|
package/tools/CFL/cfl.cpp
CHANGED
|
@@ -64,17 +64,18 @@ int main(int argc, char ** argv)
|
|
|
64
64
|
svfir = builder.build();
|
|
65
65
|
} // if no dot form CFLGraph is specified, we use svfir from .bc.
|
|
66
66
|
|
|
67
|
-
CFLBase
|
|
67
|
+
std::unique_ptr<CFLBase> cfl;
|
|
68
68
|
if (Options::CFLSVFG)
|
|
69
|
-
cfl =
|
|
69
|
+
cfl = std::make_unique<CFLVF>(svfir);
|
|
70
70
|
else
|
|
71
|
-
cfl =
|
|
71
|
+
cfl = std::make_unique<CFLAlias>(svfir); // if no svfg is specified, we use CFLAlias as the default one.
|
|
72
72
|
cfl->analyze();
|
|
73
73
|
|
|
74
|
-
delete cfl;
|
|
75
74
|
SVFIR::releaseSVFIR();
|
|
76
75
|
SVF::LLVMModuleSet::releaseLLVMModuleSet();
|
|
77
76
|
|
|
77
|
+
delete[] arg_value;
|
|
78
|
+
|
|
78
79
|
return 0;
|
|
79
80
|
|
|
80
81
|
}
|
package/tools/DDA/dda.cpp
CHANGED
|
@@ -61,9 +61,10 @@ int main(int argc, char ** argv)
|
|
|
61
61
|
SVFIRBuilder builder(svfModule);
|
|
62
62
|
SVFIR* pag = builder.build();
|
|
63
63
|
|
|
64
|
-
DDAPass
|
|
65
|
-
dda
|
|
64
|
+
DDAPass dda;
|
|
65
|
+
dda.runOnModule(pag);
|
|
66
66
|
|
|
67
|
+
delete[] arg_value;
|
|
67
68
|
return 0;
|
|
68
69
|
|
|
69
70
|
}
|