svf-tools 1.0.613 → 1.0.614
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 +23 -28
- 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 +4 -4
- 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 +1 -1
- 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_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 +106 -92
- 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_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 +29 -32
- 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 +2 -2
- 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 +5 -5
- 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 +5 -5
- 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 +32 -35
- 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 +19 -20
- 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 +3 -3
- 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 +10 -10
- 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 +2 -2
- 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 +3 -3
- 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
|
@@ -71,12 +71,9 @@ public:
|
|
|
71
71
|
BVDataPTAImpl(SVFIR* pag, PointerAnalysis::PTATY type, bool alias_check = true);
|
|
72
72
|
|
|
73
73
|
/// Destructor
|
|
74
|
-
|
|
75
|
-
{
|
|
76
|
-
destroy();
|
|
77
|
-
}
|
|
74
|
+
~BVDataPTAImpl() override = default;
|
|
78
75
|
|
|
79
|
-
inline PersistentPointsToCache<PointsTo> &getPtCache(
|
|
76
|
+
inline PersistentPointsToCache<PointsTo> &getPtCache()
|
|
80
77
|
{
|
|
81
78
|
return ptCache;
|
|
82
79
|
}
|
|
@@ -86,21 +83,13 @@ public:
|
|
|
86
83
|
return pta->getImplTy() == BVDataImpl;
|
|
87
84
|
}
|
|
88
85
|
|
|
89
|
-
/// Release memory
|
|
90
|
-
inline void destroy()
|
|
91
|
-
{
|
|
92
|
-
delete ptD;
|
|
93
|
-
ptD = nullptr;
|
|
94
|
-
ptCache.clear();
|
|
95
|
-
}
|
|
96
|
-
|
|
97
86
|
/// Get points-to and reverse points-to
|
|
98
87
|
///@{
|
|
99
|
-
|
|
88
|
+
inline const PointsTo& getPts(NodeID id) override
|
|
100
89
|
{
|
|
101
90
|
return ptD->getPts(id);
|
|
102
91
|
}
|
|
103
|
-
|
|
92
|
+
inline const NodeSet& getRevPts(NodeID nodeId) override
|
|
104
93
|
{
|
|
105
94
|
return ptD->getRevPts(nodeId);
|
|
106
95
|
}
|
|
@@ -161,12 +150,12 @@ protected:
|
|
|
161
150
|
/// Get points-to data structure
|
|
162
151
|
inline PTDataTy* getPTDataTy() const
|
|
163
152
|
{
|
|
164
|
-
return ptD;
|
|
153
|
+
return ptD.get();
|
|
165
154
|
}
|
|
166
155
|
|
|
167
156
|
|
|
168
157
|
/// Finalization of pointer analysis, and normalize points-to information to Bit Vector representation
|
|
169
|
-
|
|
158
|
+
void finalize() override;
|
|
170
159
|
|
|
171
160
|
/// Update callgraph. This should be implemented by its subclass.
|
|
172
161
|
virtual inline bool updateCallGraph(const CallSiteToFunPtrMap&)
|
|
@@ -177,28 +166,28 @@ protected:
|
|
|
177
166
|
|
|
178
167
|
inline DiffPTDataTy* getDiffPTDataTy() const
|
|
179
168
|
{
|
|
180
|
-
DiffPTDataTy* diff = SVFUtil::dyn_cast<DiffPTDataTy>(ptD);
|
|
169
|
+
DiffPTDataTy* diff = SVFUtil::dyn_cast<DiffPTDataTy>(ptD.get());
|
|
181
170
|
assert(diff && "BVDataPTAImpl::getDiffPTDataTy: not a DiffPTDataTy!");
|
|
182
171
|
return diff;
|
|
183
172
|
}
|
|
184
173
|
|
|
185
174
|
inline DFPTDataTy* getDFPTDataTy() const
|
|
186
175
|
{
|
|
187
|
-
DFPTDataTy* df = SVFUtil::dyn_cast<DFPTDataTy>(ptD);
|
|
176
|
+
DFPTDataTy* df = SVFUtil::dyn_cast<DFPTDataTy>(ptD.get());
|
|
188
177
|
assert(df && "BVDataPTAImpl::getDFPTDataTy: not a DFPTDataTy!");
|
|
189
178
|
return df;
|
|
190
179
|
}
|
|
191
180
|
|
|
192
181
|
inline MutDFPTDataTy* getMutDFPTDataTy() const
|
|
193
182
|
{
|
|
194
|
-
MutDFPTDataTy* mdf = SVFUtil::dyn_cast<MutDFPTDataTy>(ptD);
|
|
183
|
+
MutDFPTDataTy* mdf = SVFUtil::dyn_cast<MutDFPTDataTy>(ptD.get());
|
|
195
184
|
assert(mdf && "BVDataPTAImpl::getMutDFPTDataTy: not a MutDFPTDataTy!");
|
|
196
185
|
return mdf;
|
|
197
186
|
}
|
|
198
187
|
|
|
199
188
|
inline VersionedPTDataTy* getVersionedPTDataTy() const
|
|
200
189
|
{
|
|
201
|
-
VersionedPTDataTy* v = SVFUtil::dyn_cast<VersionedPTDataTy>(ptD);
|
|
190
|
+
VersionedPTDataTy* v = SVFUtil::dyn_cast<VersionedPTDataTy>(ptD.get());
|
|
202
191
|
assert(v && "BVDataPTAImpl::getVersionedPTDataTy: not a VersionedPTDataTy!");
|
|
203
192
|
return v;
|
|
204
193
|
}
|
|
@@ -212,31 +201,31 @@ protected:
|
|
|
212
201
|
|
|
213
202
|
private:
|
|
214
203
|
/// Points-to data
|
|
215
|
-
PTDataTy
|
|
204
|
+
std::unique_ptr<PTDataTy> ptD;
|
|
216
205
|
|
|
217
206
|
PersistentPointsToCache<PointsTo> ptCache;
|
|
218
207
|
|
|
219
208
|
public:
|
|
220
209
|
/// Interface expose to users of our pointer analysis, given Value infos
|
|
221
|
-
|
|
222
|
-
|
|
210
|
+
AliasResult alias(const SVFValue* V1,
|
|
211
|
+
const SVFValue* V2) override;
|
|
223
212
|
|
|
224
213
|
/// Interface expose to users of our pointer analysis, given PAGNodeID
|
|
225
|
-
|
|
214
|
+
AliasResult alias(NodeID node1, NodeID node2) override;
|
|
226
215
|
|
|
227
216
|
/// Interface expose to users of our pointer analysis, given two pts
|
|
228
217
|
virtual AliasResult alias(const PointsTo& pts1, const PointsTo& pts2);
|
|
229
218
|
|
|
230
219
|
/// dump and debug, print out conditional pts
|
|
231
220
|
//@{
|
|
232
|
-
|
|
221
|
+
void dumpCPts() override
|
|
233
222
|
{
|
|
234
223
|
ptD->dumpPTData();
|
|
235
224
|
}
|
|
236
225
|
|
|
237
|
-
|
|
226
|
+
void dumpTopLevelPtsTo() override;
|
|
238
227
|
|
|
239
|
-
|
|
228
|
+
void dumpAllPts() override;
|
|
240
229
|
//@}
|
|
241
230
|
};
|
|
242
231
|
|
|
@@ -43,28 +43,28 @@ public:
|
|
|
43
43
|
|
|
44
44
|
public:
|
|
45
45
|
/// Construct empty points-to set.
|
|
46
|
-
PointsTo(
|
|
47
|
-
/// Copy
|
|
46
|
+
PointsTo();
|
|
47
|
+
/// Copy constructor.
|
|
48
48
|
PointsTo(const PointsTo &pt);
|
|
49
49
|
/// Move constructor.
|
|
50
|
-
PointsTo(PointsTo &&pt);
|
|
50
|
+
PointsTo(PointsTo &&pt) noexcept ;
|
|
51
51
|
|
|
52
|
-
~PointsTo(
|
|
52
|
+
~PointsTo();
|
|
53
53
|
|
|
54
54
|
/// Copy assignment.
|
|
55
55
|
PointsTo &operator=(const PointsTo &rhs);
|
|
56
56
|
|
|
57
57
|
/// Move assignment.
|
|
58
|
-
PointsTo &operator=(PointsTo &&rhs);
|
|
58
|
+
PointsTo &operator=(PointsTo &&rhs) noexcept ;
|
|
59
59
|
|
|
60
60
|
/// Returns true if set is empty.
|
|
61
|
-
bool empty(
|
|
61
|
+
bool empty() const;
|
|
62
62
|
|
|
63
63
|
/// Returns number of elements.
|
|
64
|
-
u32_t count(
|
|
64
|
+
u32_t count() const;
|
|
65
65
|
|
|
66
66
|
/// Empty the set.
|
|
67
|
-
void clear(
|
|
67
|
+
void clear();
|
|
68
68
|
|
|
69
69
|
/// Returns true if n is in this set.
|
|
70
70
|
bool test(u32_t n) const;
|
|
@@ -87,7 +87,7 @@ public:
|
|
|
87
87
|
|
|
88
88
|
/// Returns the first element the set. Returns -1 when the set is empty.
|
|
89
89
|
/// TODO: should we diverge from LLVM about the int return?
|
|
90
|
-
int find_first(
|
|
90
|
+
int find_first();
|
|
91
91
|
|
|
92
92
|
/// Returns true if this set and rhs contain exactly the same elements.
|
|
93
93
|
bool operator==(const PointsTo &rhs) const;
|
|
@@ -116,28 +116,28 @@ public:
|
|
|
116
116
|
void intersectWithComplement(const PointsTo &lhs, const PointsTo &rhs);
|
|
117
117
|
|
|
118
118
|
/// Returns this points-to set as a NodeBS.
|
|
119
|
-
NodeBS toNodeBS(
|
|
119
|
+
NodeBS toNodeBS() const;
|
|
120
120
|
|
|
121
121
|
/// Return a hash of this set.
|
|
122
|
-
size_t hash(
|
|
122
|
+
size_t hash() const;
|
|
123
123
|
|
|
124
124
|
/// Checks if this points-to set is using the current best mapping.
|
|
125
125
|
/// If not, remaps.
|
|
126
|
-
void checkAndRemap(
|
|
126
|
+
void checkAndRemap();
|
|
127
127
|
|
|
128
|
-
const_iterator begin(
|
|
128
|
+
const_iterator begin() const
|
|
129
129
|
{
|
|
130
130
|
return PointsToIterator(this);
|
|
131
131
|
}
|
|
132
|
-
const_iterator end(
|
|
132
|
+
const_iterator end() const
|
|
133
133
|
{
|
|
134
134
|
return PointsToIterator(this, true);
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
-
MappingPtr getNodeMapping(
|
|
137
|
+
MappingPtr getNodeMapping() const;
|
|
138
138
|
|
|
139
|
-
static MappingPtr getCurrentBestNodeMapping(
|
|
140
|
-
static MappingPtr getCurrentBestReverseNodeMapping(
|
|
139
|
+
static MappingPtr getCurrentBestNodeMapping();
|
|
140
|
+
static MappingPtr getCurrentBestReverseNodeMapping();
|
|
141
141
|
static void setCurrentBestNodeMapping(MappingPtr newCurrentBestNodeMapping,
|
|
142
142
|
MappingPtr newCurrentBestReverseNodeMapping);
|
|
143
143
|
|
|
@@ -188,25 +188,25 @@ public:
|
|
|
188
188
|
using reference = u32_t &;
|
|
189
189
|
|
|
190
190
|
/// Deleted because we don't want iterators with null pt.
|
|
191
|
-
PointsToIterator(
|
|
191
|
+
PointsToIterator() = delete;
|
|
192
192
|
PointsToIterator(const PointsToIterator &pt);
|
|
193
|
-
PointsToIterator(PointsToIterator &&pt);
|
|
193
|
+
PointsToIterator(PointsToIterator &&pt) noexcept ;
|
|
194
194
|
|
|
195
195
|
/// Returns an iterator to the beginning of pt if end is false, and to
|
|
196
196
|
/// the end of pt if end is true.
|
|
197
|
-
PointsToIterator(const PointsTo *pt, bool end=false);
|
|
197
|
+
explicit PointsToIterator(const PointsTo *pt, bool end=false);
|
|
198
198
|
|
|
199
199
|
PointsToIterator &operator=(const PointsToIterator &rhs);
|
|
200
|
-
PointsToIterator &operator=(PointsToIterator &&rhs);
|
|
200
|
+
PointsToIterator &operator=(PointsToIterator &&rhs) noexcept ;
|
|
201
201
|
|
|
202
202
|
/// Pre-increment: ++it.
|
|
203
|
-
const PointsToIterator &operator++(
|
|
203
|
+
const PointsToIterator &operator++();
|
|
204
204
|
|
|
205
205
|
/// Post-increment: it++.
|
|
206
206
|
const PointsToIterator operator++(int);
|
|
207
207
|
|
|
208
208
|
/// Dereference: *it.
|
|
209
|
-
u32_t operator*(
|
|
209
|
+
u32_t operator*() const;
|
|
210
210
|
|
|
211
211
|
/// Equality: *this == rhs.
|
|
212
212
|
bool operator==(const PointsToIterator &rhs) const;
|
|
@@ -215,7 +215,7 @@ public:
|
|
|
215
215
|
bool operator!=(const PointsToIterator &rhs) const;
|
|
216
216
|
|
|
217
217
|
private:
|
|
218
|
-
bool atEnd(
|
|
218
|
+
bool atEnd() const;
|
|
219
219
|
|
|
220
220
|
private:
|
|
221
221
|
/// PointsTo we are iterating over.
|
|
@@ -69,7 +69,7 @@ private:
|
|
|
69
69
|
ProgSlice* _curSlice; /// current program slice
|
|
70
70
|
SVFGNodeSet sources; /// source nodes
|
|
71
71
|
SVFGNodeSet sinks; /// source nodes
|
|
72
|
-
SaberCondAllocator
|
|
72
|
+
std::unique_ptr<SaberCondAllocator> saberCondAllocator;
|
|
73
73
|
SVFGNodeToDPItemsMap nodeToDPItemsMap; ///< record forward visited dpitems
|
|
74
74
|
SVFGNodeSet visitedSet; ///< record backward visited nodes
|
|
75
75
|
|
|
@@ -83,17 +83,14 @@ public:
|
|
|
83
83
|
/// Constructor
|
|
84
84
|
SrcSnkDDA() : _curSlice(nullptr), svfg(nullptr), ptaCallGraph(nullptr)
|
|
85
85
|
{
|
|
86
|
-
saberCondAllocator =
|
|
86
|
+
saberCondAllocator = std::make_unique<SaberCondAllocator>();
|
|
87
87
|
}
|
|
88
88
|
/// Destructor
|
|
89
|
-
|
|
89
|
+
~SrcSnkDDA() override
|
|
90
90
|
{
|
|
91
|
-
if (svfg != nullptr)
|
|
92
|
-
delete svfg;
|
|
93
91
|
svfg = nullptr;
|
|
94
92
|
|
|
95
|
-
|
|
96
|
-
delete _curSlice;
|
|
93
|
+
delete _curSlice;
|
|
97
94
|
_curSlice = nullptr;
|
|
98
95
|
|
|
99
96
|
/// the following shared by multiple checkers, thus can not be released.
|
|
@@ -242,12 +239,12 @@ public:
|
|
|
242
239
|
/// Get saber condition allocator
|
|
243
240
|
SaberCondAllocator* getSaberCondAllocator() const
|
|
244
241
|
{
|
|
245
|
-
return saberCondAllocator;
|
|
242
|
+
return saberCondAllocator.get();
|
|
246
243
|
}
|
|
247
244
|
|
|
248
245
|
protected:
|
|
249
246
|
/// Forward traverse
|
|
250
|
-
|
|
247
|
+
inline void FWProcessCurNode(const DPIm& item) override
|
|
251
248
|
{
|
|
252
249
|
const SVFGNode* node = getNode(item.getCurNodeID());
|
|
253
250
|
if(isSink(node))
|
|
@@ -259,7 +256,7 @@ protected:
|
|
|
259
256
|
addToCurForwardSlice(node);
|
|
260
257
|
}
|
|
261
258
|
/// Backward traverse
|
|
262
|
-
|
|
259
|
+
inline void BWProcessCurNode(const DPIm& item) override
|
|
263
260
|
{
|
|
264
261
|
const SVFGNode* node = getNode(item.getCurNodeID());
|
|
265
262
|
if(isInCurForwardSlice(node))
|
|
@@ -268,9 +265,9 @@ protected:
|
|
|
268
265
|
}
|
|
269
266
|
}
|
|
270
267
|
/// Propagate information forward by matching context
|
|
271
|
-
|
|
268
|
+
void FWProcessOutgoingEdge(const DPIm& item, SVFGEdge* edge) override;
|
|
272
269
|
/// Propagate information backward without matching context, as forward analysis already did it
|
|
273
|
-
|
|
270
|
+
void BWProcessIncomingEdge(const DPIm& item, SVFGEdge* edge) override;
|
|
274
271
|
/// Whether has been visited or not, in order to avoid recursion on SVFG
|
|
275
272
|
//@{
|
|
276
273
|
inline bool forwardVisited(const SVFGNode* node, const DPIm& item)
|
|
@@ -321,4 +318,4 @@ protected:
|
|
|
321
318
|
|
|
322
319
|
} // End namespace SVF
|
|
323
320
|
|
|
324
|
-
#endif /*
|
|
321
|
+
#endif /* SRCSNKANALYSIS_H_ */
|
|
@@ -46,7 +46,8 @@ public:
|
|
|
46
46
|
virtual ~LLVMLoopAnalysis() = default;
|
|
47
47
|
|
|
48
48
|
/// Build llvm loops based on LoopInfo analysis
|
|
49
|
-
virtual void buildLLVMLoops(SVFModule *mod, std::vector<const Loop *> &llvmLoops
|
|
49
|
+
virtual void buildLLVMLoops(SVFModule *mod, std::vector<const Loop *> &llvmLoops,
|
|
50
|
+
llvm::LoopInfoBase<llvm::BasicBlock, llvm::Loop> * loopInfo);
|
|
50
51
|
|
|
51
52
|
/// Start from here
|
|
52
53
|
virtual void build(ICFG *icfg);
|
|
@@ -58,12 +58,12 @@ public:
|
|
|
58
58
|
typedef Map<const Value*, SVFOtherValue*> LLVMValue2SVFOtherValueMap;
|
|
59
59
|
typedef Map<const SVFValue*, const Value*> SVFValue2LLVMValueMap;
|
|
60
60
|
typedef Map<const Type*, SVFType*> LLVMType2SVFTypeMap;
|
|
61
|
-
typedef Map<const Type*, StInfo
|
|
61
|
+
typedef Map<const Type*, std::unique_ptr<StInfo>> Type2TypeInfoMap;
|
|
62
62
|
|
|
63
63
|
private:
|
|
64
64
|
static LLVMModuleSet* llvmModuleSet;
|
|
65
65
|
SymbolTableInfo *symInfo;
|
|
66
|
-
SVFModule
|
|
66
|
+
std::unique_ptr<SVFModule> svfModule;
|
|
67
67
|
std::unique_ptr<LLVMContext> cxts;
|
|
68
68
|
std::vector<std::unique_ptr<Module>> owned_modules;
|
|
69
69
|
std::vector<std::reference_wrapper<Module>> modules;
|
|
@@ -112,7 +112,7 @@ public:
|
|
|
112
112
|
inline SVFModule* getSVFModule()
|
|
113
113
|
{
|
|
114
114
|
assert(svfModule && "svfModule has not been built yet!");
|
|
115
|
-
return svfModule;
|
|
115
|
+
return svfModule.get();
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
void preProcessBCs(std::vector<std::string>& moduleNameVec);
|
|
@@ -329,12 +329,12 @@ private:
|
|
|
329
329
|
SVFType* addSVFTypeInfo(const Type* t);
|
|
330
330
|
/// Collect a type info
|
|
331
331
|
StInfo* collectTypeInfo(const Type* ty);
|
|
332
|
-
/// Collect the struct info
|
|
333
|
-
StInfo* collectStructInfo(const StructType *T);
|
|
332
|
+
/// Collect the struct info; nf contains the number of fields after flattening
|
|
333
|
+
StInfo* collectStructInfo(const StructType *T, u32_t& nf);
|
|
334
334
|
/// Collect the array info
|
|
335
335
|
StInfo* collectArrayInfo(const ArrayType* T);
|
|
336
336
|
/// Collect simple type (non-aggregate) info
|
|
337
|
-
StInfo* collectSimpleTypeInfo(const Type* T);
|
|
337
|
+
StInfo* collectSimpleTypeInfo(StInfo * info, const Type* T);
|
|
338
338
|
|
|
339
339
|
std::vector<const Function*> getLLVMGlobalFunctions(const GlobalVariable* global);
|
|
340
340
|
|
package/include/SVFIR/SVFIR.h
CHANGED
|
@@ -84,7 +84,7 @@ private:
|
|
|
84
84
|
CSToArgsListMap callSiteArgsListMap; ///< Map a callsite to a list of all its actual parameters
|
|
85
85
|
CSToRetMap callSiteRetMap; ///< Map a callsite to its callsite returns PAGNodes
|
|
86
86
|
FunToRetMap funRetMap; ///< Map a function to its unique function return PAGNodes
|
|
87
|
-
static SVFIR
|
|
87
|
+
static std::unique_ptr<SVFIR> pag; ///< Singleton pattern here to enable instance of SVFIR can only be created once.
|
|
88
88
|
CallSiteToFunPtrMap indCallSiteToFunPtrMap; ///< Map an indirect callsite to its function pointer
|
|
89
89
|
FunPtrToCallSitesMap funPtrToCallSitesMap; ///< Map a function pointer to the callsites where it is used
|
|
90
90
|
/// Valid pointers for pointer analysis resolution connected by SVFIR edges (constraints)
|
|
@@ -108,14 +108,12 @@ public:
|
|
|
108
108
|
{
|
|
109
109
|
if (pag == nullptr)
|
|
110
110
|
{
|
|
111
|
-
pag = new SVFIR(buildFromFile);
|
|
111
|
+
pag = std::unique_ptr<SVFIR>(new SVFIR(buildFromFile));
|
|
112
112
|
}
|
|
113
|
-
return pag;
|
|
113
|
+
return pag.get();
|
|
114
114
|
}
|
|
115
115
|
static void releaseSVFIR()
|
|
116
116
|
{
|
|
117
|
-
if (pag)
|
|
118
|
-
delete pag;
|
|
119
117
|
pag = nullptr;
|
|
120
118
|
}
|
|
121
119
|
//@}
|
package/include/SVFIR/SVFType.h
CHANGED
|
@@ -150,19 +150,17 @@ private:
|
|
|
150
150
|
std::vector<const SVFType*> flattenElementTypes;
|
|
151
151
|
/// Max field limit
|
|
152
152
|
|
|
153
|
-
StInfo(); ///< place holder
|
|
154
|
-
StInfo(const StInfo& st); ///< place holder
|
|
155
|
-
void operator=(const StInfo&); ///< place holder
|
|
156
|
-
|
|
157
153
|
public:
|
|
154
|
+
StInfo() = delete;
|
|
155
|
+
StInfo(const StInfo& st) = delete;
|
|
156
|
+
void operator=(const StInfo&) = delete;
|
|
157
|
+
|
|
158
158
|
/// Constructor
|
|
159
|
-
StInfo(u32_t s) : stride(s), numOfFlattenElements(s), numOfFlattenFields(s)
|
|
159
|
+
explicit StInfo(u32_t s) : stride(s), numOfFlattenElements(s), numOfFlattenFields(s)
|
|
160
160
|
{
|
|
161
161
|
}
|
|
162
162
|
/// Destructor
|
|
163
|
-
~StInfo()
|
|
164
|
-
{
|
|
165
|
-
}
|
|
163
|
+
~StInfo() = default;
|
|
166
164
|
|
|
167
165
|
/// struct A { int id; int salary; }; struct B { char name[20]; struct A a;} B b;
|
|
168
166
|
/// OriginalFieldType of b with field_idx 1 : Struct A
|
package/include/SVFIR/SVFValue.h
CHANGED
|
@@ -198,7 +198,7 @@ protected:
|
|
|
198
198
|
}
|
|
199
199
|
///@}
|
|
200
200
|
public:
|
|
201
|
-
SVFValue(
|
|
201
|
+
SVFValue() = delete;
|
|
202
202
|
virtual ~SVFValue() = default;
|
|
203
203
|
|
|
204
204
|
/// Get the type of this SVFValue
|
|
@@ -501,8 +501,8 @@ protected:
|
|
|
501
501
|
|
|
502
502
|
public:
|
|
503
503
|
SVFBasicBlock(const std::string& b, const SVFType* ty, const SVFFunction* f);
|
|
504
|
-
SVFBasicBlock(
|
|
505
|
-
|
|
504
|
+
SVFBasicBlock() = delete;
|
|
505
|
+
~SVFBasicBlock() override;
|
|
506
506
|
|
|
507
507
|
static inline bool classof(const SVFValue *node)
|
|
508
508
|
{
|
package/include/Util/Options.h
CHANGED
|
@@ -156,7 +156,6 @@ public:
|
|
|
156
156
|
|
|
157
157
|
// SVFG builder (SVFGBuilder.cpp)
|
|
158
158
|
static const llvm::cl::opt<bool> SVFGWithIndirectCall;
|
|
159
|
-
static const llvm::cl::opt<bool> SingleVFG;
|
|
160
159
|
static llvm::cl::opt<bool> OPTSVFG;
|
|
161
160
|
|
|
162
161
|
static const llvm::cl::opt<std :: string> WriteSVFG;
|
|
@@ -228,21 +228,13 @@ public:
|
|
|
228
228
|
|
|
229
229
|
private:
|
|
230
230
|
// Index of Element in terms of where first bit starts.
|
|
231
|
-
unsigned ElementIndex;
|
|
232
|
-
BitWord Bits[BITWORDS_PER_ELEMENT];
|
|
231
|
+
unsigned ElementIndex = 0;
|
|
232
|
+
BitWord Bits[BITWORDS_PER_ELEMENT] = {0};
|
|
233
233
|
|
|
234
|
-
SparseBitVectorElement()
|
|
235
|
-
{
|
|
236
|
-
ElementIndex = ~0U;
|
|
237
|
-
memset(&Bits[0], 0, sizeof (BitWord) * BITWORDS_PER_ELEMENT);
|
|
238
|
-
}
|
|
234
|
+
SparseBitVectorElement() = default;
|
|
239
235
|
|
|
240
236
|
public:
|
|
241
|
-
explicit SparseBitVectorElement(unsigned Idx)
|
|
242
|
-
{
|
|
243
|
-
ElementIndex = Idx;
|
|
244
|
-
memset(&Bits[0], 0, sizeof (BitWord) * BITWORDS_PER_ELEMENT);
|
|
245
|
-
}
|
|
237
|
+
explicit SparseBitVectorElement(unsigned Idx) : ElementIndex(Idx) {}
|
|
246
238
|
|
|
247
239
|
// Comparison.
|
|
248
240
|
bool operator==(const SparseBitVectorElement &RHS) const
|
|
@@ -619,7 +611,7 @@ class SparseBitVector
|
|
|
619
611
|
}
|
|
620
612
|
|
|
621
613
|
public:
|
|
622
|
-
SparseBitVectorIterator() =
|
|
614
|
+
SparseBitVectorIterator() = delete;
|
|
623
615
|
|
|
624
616
|
SparseBitVectorIterator(const SparseBitVector<ElementSize> *RHS,
|
|
625
617
|
bool end = false):BitVector(RHS)
|
|
@@ -679,7 +671,7 @@ public:
|
|
|
679
671
|
SparseBitVector(const SparseBitVector &RHS)
|
|
680
672
|
: Elements(RHS.Elements), CurrElementIter(Elements.begin()) {}
|
|
681
673
|
SparseBitVector(SparseBitVector &&RHS)
|
|
682
|
-
|
|
674
|
+
noexcept : Elements(std::move(RHS.Elements)), CurrElementIter(Elements.begin()) {}
|
|
683
675
|
|
|
684
676
|
// Clear.
|
|
685
677
|
void clear()
|
|
@@ -58,7 +58,7 @@ public:
|
|
|
58
58
|
typedef BVDataPTAImpl::MutDFPTDataTy::PtsMap PtsMap;
|
|
59
59
|
|
|
60
60
|
/// Constructor
|
|
61
|
-
FlowSensitive(SVFIR* _pag, PTATY type = FSSPARSE_WPA) : WPASVFGFSSolver(), BVDataPTAImpl(_pag, type)
|
|
61
|
+
explicit FlowSensitive(SVFIR* _pag, PTATY type = FSSPARSE_WPA) : WPASVFGFSSolver(), BVDataPTAImpl(_pag, type)
|
|
62
62
|
{
|
|
63
63
|
svfg = nullptr;
|
|
64
64
|
solveTime = sccTime = processTime = propagationTime = updateTime = 0;
|
|
@@ -73,29 +73,22 @@ public:
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
/// Destructor
|
|
76
|
-
|
|
77
|
-
{
|
|
78
|
-
if (svfg != nullptr)
|
|
79
|
-
delete svfg;
|
|
80
|
-
svfg = nullptr;
|
|
81
|
-
}
|
|
76
|
+
~FlowSensitive() override = default;
|
|
82
77
|
|
|
83
78
|
/// Create signle instance of flow-sensitive pointer analysis
|
|
84
79
|
static FlowSensitive* createFSWPA(SVFIR* _pag)
|
|
85
80
|
{
|
|
86
81
|
if (fspta == nullptr)
|
|
87
82
|
{
|
|
88
|
-
fspta = new FlowSensitive(_pag);
|
|
83
|
+
fspta = std::unique_ptr<FlowSensitive>(new FlowSensitive(_pag));
|
|
89
84
|
fspta->analyze();
|
|
90
85
|
}
|
|
91
|
-
return fspta;
|
|
86
|
+
return fspta.get();
|
|
92
87
|
}
|
|
93
88
|
|
|
94
89
|
/// Release flow-sensitive pointer analysis
|
|
95
90
|
static void releaseFSWPA()
|
|
96
91
|
{
|
|
97
|
-
if (fspta)
|
|
98
|
-
delete fspta;
|
|
99
92
|
fspta = nullptr;
|
|
100
93
|
}
|
|
101
94
|
|
|
@@ -106,16 +99,16 @@ public:
|
|
|
106
99
|
}
|
|
107
100
|
|
|
108
101
|
/// Flow sensitive analysis
|
|
109
|
-
|
|
102
|
+
void analyze() override;
|
|
110
103
|
|
|
111
104
|
/// Initialize analysis
|
|
112
|
-
|
|
105
|
+
void initialize() override;
|
|
113
106
|
|
|
114
107
|
/// Finalize analysis
|
|
115
|
-
|
|
108
|
+
void finalize() override;
|
|
116
109
|
|
|
117
110
|
/// Get PTA name
|
|
118
|
-
|
|
111
|
+
const std::string PTAName() const override
|
|
119
112
|
{
|
|
120
113
|
return "FlowSensitive";
|
|
121
114
|
}
|
|
@@ -140,12 +133,12 @@ public:
|
|
|
140
133
|
|
|
141
134
|
protected:
|
|
142
135
|
/// SCC detection
|
|
143
|
-
|
|
136
|
+
NodeStack& SCCDetect() override;
|
|
144
137
|
|
|
145
138
|
/// Propagation
|
|
146
139
|
//@{
|
|
147
140
|
/// Propagate points-to information from an edge's src node to its dst node.
|
|
148
|
-
|
|
141
|
+
bool propFromSrcToDst(SVFGEdge* edge) override;
|
|
149
142
|
/// Propagate points-to information along a DIRECT SVFG edge.
|
|
150
143
|
virtual bool propAlongDirectEdge(const DirectSVFGEdge* edge);
|
|
151
144
|
/// Propagate points-to information along an INDIRECT SVFG edge.
|
|
@@ -217,7 +210,7 @@ protected:
|
|
|
217
210
|
|
|
218
211
|
/// Handle various constraints
|
|
219
212
|
//@{
|
|
220
|
-
|
|
213
|
+
void processNode(NodeID nodeId) override;
|
|
221
214
|
bool processSVFGNode(SVFGNode* node);
|
|
222
215
|
virtual bool processAddr(const AddrSVFGNode* addr);
|
|
223
216
|
virtual bool processCopy(const CopySVFGNode* copy);
|
|
@@ -230,7 +223,7 @@ protected:
|
|
|
230
223
|
/// Update call graph
|
|
231
224
|
//@{
|
|
232
225
|
/// Update call graph.
|
|
233
|
-
bool updateCallGraph(const CallSiteToFunPtrMap& callsites);
|
|
226
|
+
bool updateCallGraph(const CallSiteToFunPtrMap& callsites) override;
|
|
234
227
|
/// Connect nodes in SVFG.
|
|
235
228
|
void connectCallerAndCallee(const CallEdgeMap& newEdges, SVFGEdgeSetTy& edges);
|
|
236
229
|
/// Update nodes connected during updating call graph.
|
|
@@ -275,7 +268,7 @@ protected:
|
|
|
275
268
|
/// Sets the global best mapping as a plain mapping, i.e. n -> n.
|
|
276
269
|
virtual void plainMap(void) const;
|
|
277
270
|
|
|
278
|
-
static FlowSensitive
|
|
271
|
+
static std::unique_ptr<FlowSensitive> fspta;
|
|
279
272
|
SVFGBuilder memSSA;
|
|
280
273
|
AndersenWaveDiff *ander;
|
|
281
274
|
|
package/include/WPA/WPASolver.h
CHANGED
|
@@ -57,20 +57,16 @@ public:
|
|
|
57
57
|
protected:
|
|
58
58
|
|
|
59
59
|
/// Constructor
|
|
60
|
-
WPASolver(): reanalyze(false), iterationForPrintStat(1000), _graph(nullptr),
|
|
60
|
+
WPASolver(): reanalyze(false), iterationForPrintStat(1000), _graph(nullptr), numOfIteration(0)
|
|
61
61
|
{
|
|
62
62
|
}
|
|
63
63
|
/// Destructor
|
|
64
|
-
virtual ~WPASolver()
|
|
65
|
-
{
|
|
66
|
-
delete scc;
|
|
67
|
-
scc = nullptr;
|
|
68
|
-
}
|
|
64
|
+
virtual ~WPASolver() = default;
|
|
69
65
|
|
|
70
66
|
/// Get SCC detector
|
|
71
67
|
inline SCC* getSCCDetector() const
|
|
72
68
|
{
|
|
73
|
-
return scc;
|
|
69
|
+
return scc.get();
|
|
74
70
|
}
|
|
75
71
|
|
|
76
72
|
/// Get/Set graph methods
|
|
@@ -82,7 +78,7 @@ protected:
|
|
|
82
78
|
inline void setGraph(GraphType g)
|
|
83
79
|
{
|
|
84
80
|
_graph = g;
|
|
85
|
-
scc =
|
|
81
|
+
scc = std::make_unique<SCC>(_graph);
|
|
86
82
|
}
|
|
87
83
|
//@}
|
|
88
84
|
|
|
@@ -194,7 +190,7 @@ protected:
|
|
|
194
190
|
GraphType _graph;
|
|
195
191
|
|
|
196
192
|
/// SCC
|
|
197
|
-
SCC
|
|
193
|
+
std::unique_ptr<SCC> scc;
|
|
198
194
|
|
|
199
195
|
/// Worklist for resolution
|
|
200
196
|
WorkList worklist;
|
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();
|