svf-tools 1.0.304 → 1.0.308
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +4 -4
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/AndersenWaveDiffWithType_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +20 -20
- package/SVF-doxygen/html/html/Andersen_8h_source.html +10 -10
- package/SVF-doxygen/html/html/BasicTypes_8h_source.html +8 -8
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/CHG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CSC_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CSC_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CommonCHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Conditions_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Conditions_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +7 -7
- package/SVF-doxygen/html/html/CoreBitVector_8h.html +2 -0
- package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +3 -1
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/DCHG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +7 -7
- package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ExternalPAG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ExternalPAG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +4 -4
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +5 -5
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +6 -6
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/MHP_8h_source.html +4 -4
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MTA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MemModel_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +4 -4
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Options_8cpp_source.html +97 -96
- package/SVF-doxygen/html/html/Options_8h_source.html +97 -96
- package/SVF-doxygen/html/html/PAGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PAGEdge_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PAG_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/PAG_8h_source.html +5 -5
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +11 -10
- package/SVF-doxygen/html/html/PTAStat_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PTAType_8h_source.html +4 -4
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +27 -24
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +21 -17
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +72 -72
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +5 -5
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PointsTo_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SCC_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +33 -27
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +52 -49
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFGStat_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +10 -9
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +7 -7
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Steensgaard_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +2 -2
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/TCT_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +1 -1
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/VFG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +10 -8
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp.html +3 -0
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +77 -64
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h.html +3 -2
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +78 -69
- package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +2 -2
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/WPASolver_8h_source.html +2 -2
- package/SVF-doxygen/html/html/WorkList_8h_source.html +1 -1
- package/SVF-doxygen/html/html/annotated.html +189 -186
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +86 -83
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchCondManager.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1CSC.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +116 -116
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ExternalPAG.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FIObjPN.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +48 -48
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +29 -29
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +3 -2
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +125 -96
- package/SVF-doxygen/html/html/classSVF_1_1PAG.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilder.html +29 -29
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +21 -20
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +19 -16
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +194 -101
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +8 -7
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1TypeSystem.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +161 -162
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +571 -532
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +20 -21
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC-members.html +83 -0
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +297 -0
- package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +1 -1
- package/SVF-doxygen/html/html/classes.html +96 -95
- package/SVF-doxygen/html/html/functions_b.html +11 -5
- package/SVF-doxygen/html/html/functions_c.html +13 -14
- package/SVF-doxygen/html/html/functions_d.html +13 -4
- package/SVF-doxygen/html/html/functions_e.html +3 -0
- package/SVF-doxygen/html/html/functions_f.html +1 -1
- package/SVF-doxygen/html/html/functions_func_b.html +6 -0
- package/SVF-doxygen/html/html/functions_func_d.html +7 -4
- package/SVF-doxygen/html/html/functions_func_f.html +1 -1
- package/SVF-doxygen/html/html/functions_func_g.html +15 -9
- package/SVF-doxygen/html/html/functions_func_i.html +11 -11
- package/SVF-doxygen/html/html/functions_func_m.html +0 -3
- package/SVF-doxygen/html/html/functions_func_n.html +1 -4
- package/SVF-doxygen/html/html/functions_func_o.html +6 -4
- package/SVF-doxygen/html/html/functions_func_p.html +1 -1
- package/SVF-doxygen/html/html/functions_func_r.html +4 -1
- package/SVF-doxygen/html/html/functions_func_s.html +1 -1
- package/SVF-doxygen/html/html/functions_func_v.html +2 -1
- package/SVF-doxygen/html/html/functions_g.html +15 -9
- package/SVF-doxygen/html/html/functions_i.html +26 -19
- package/SVF-doxygen/html/html/functions_l.html +6 -9
- package/SVF-doxygen/html/html/functions_m.html +1 -16
- package/SVF-doxygen/html/html/functions_n.html +3 -3
- package/SVF-doxygen/html/html/functions_o.html +17 -16
- package/SVF-doxygen/html/html/functions_p.html +26 -16
- package/SVF-doxygen/html/html/functions_r.html +9 -7
- package/SVF-doxygen/html/html/functions_s.html +10 -10
- package/SVF-doxygen/html/html/functions_t.html +5 -5
- package/SVF-doxygen/html/html/functions_type_l.html +1 -4
- package/SVF-doxygen/html/html/functions_type_m.html +1 -1
- package/SVF-doxygen/html/html/functions_type_n.html +3 -0
- package/SVF-doxygen/html/html/functions_type_o.html +0 -3
- package/SVF-doxygen/html/html/functions_type_v.html +0 -3
- package/SVF-doxygen/html/html/functions_v.html +8 -10
- package/SVF-doxygen/html/html/functions_vars_c.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_d.html +6 -0
- package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_i.html +7 -0
- package/SVF-doxygen/html/html/functions_vars_l.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_m.html +0 -12
- package/SVF-doxygen/html/html/functions_vars_o.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_p.html +12 -0
- package/SVF-doxygen/html/html/functions_vars_r.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_y.html +0 -3
- package/SVF-doxygen/html/html/functions_w.html +1 -3
- package/SVF-doxygen/html/html/functions_y.html +0 -3
- package/SVF-doxygen/html/html/globals_f.html +3 -3
- package/SVF-doxygen/html/html/globals_func_i.html +8 -8
- package/SVF-doxygen/html/html/globals_func_s.html +6 -6
- package/SVF-doxygen/html/html/globals_r.html +3 -3
- package/SVF-doxygen/html/html/globals_s.html +12 -14
- package/SVF-doxygen/html/html/hierarchy.html +176 -173
- package/SVF-doxygen/html/html/namespaceSVF.html +70 -32
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +13 -12
- package/SVF-doxygen/html/html/namespacemembers_type_v.html +6 -0
- package/SVF-doxygen/html/html/namespacemembers_v.html +6 -0
- package/SVF-doxygen/html/html/search/all_10.js +11 -7
- package/SVF-doxygen/html/html/search/all_12.js +4 -4
- package/SVF-doxygen/html/html/search/all_13.js +8 -8
- package/SVF-doxygen/html/html/search/all_14.js +5 -5
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +5 -4
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_19.js +0 -1
- package/SVF-doxygen/html/html/search/all_2.js +2 -0
- package/SVF-doxygen/html/html/search/all_3.js +1 -2
- package/SVF-doxygen/html/html/search/all_4.js +5 -2
- package/SVF-doxygen/html/html/search/all_5.js +1 -0
- package/SVF-doxygen/html/html/search/all_6.js +2 -2
- package/SVF-doxygen/html/html/search/all_7.js +5 -3
- package/SVF-doxygen/html/html/search/all_8.js +2 -0
- package/SVF-doxygen/html/html/search/all_9.js +7 -5
- package/SVF-doxygen/html/html/search/all_c.js +2 -3
- package/SVF-doxygen/html/html/search/all_d.js +1 -6
- package/SVF-doxygen/html/html/search/all_e.js +2 -2
- package/SVF-doxygen/html/html/search/all_f.js +2 -3
- package/SVF-doxygen/html/html/search/classes_12.js +0 -1
- package/SVF-doxygen/html/html/search/classes_7.js +2 -0
- package/SVF-doxygen/html/html/search/classes_b.js +1 -0
- package/SVF-doxygen/html/html/search/classes_f.js +1 -0
- package/SVF-doxygen/html/html/search/functions_1.js +2 -0
- package/SVF-doxygen/html/html/search/functions_10.js +2 -2
- package/SVF-doxygen/html/html/search/functions_13.js +1 -1
- package/SVF-doxygen/html/html/search/functions_3.js +3 -2
- package/SVF-doxygen/html/html/search/functions_5.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +5 -3
- package/SVF-doxygen/html/html/search/functions_8.js +3 -3
- package/SVF-doxygen/html/html/search/functions_b.js +0 -1
- package/SVF-doxygen/html/html/search/functions_c.js +0 -1
- package/SVF-doxygen/html/html/search/functions_d.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/functions_f.js +1 -0
- package/SVF-doxygen/html/html/search/typedefs_14.js +2 -1
- package/SVF-doxygen/html/html/search/typedefs_b.js +1 -2
- package/SVF-doxygen/html/html/search/typedefs_c.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_d.js +1 -0
- package/SVF-doxygen/html/html/search/typedefs_e.js +0 -1
- package/SVF-doxygen/html/html/search/variables_10.js +4 -0
- package/SVF-doxygen/html/html/search/variables_12.js +0 -1
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_16.js +1 -1
- package/SVF-doxygen/html/html/search/variables_19.js +0 -1
- package/SVF-doxygen/html/html/search/variables_3.js +0 -1
- package/SVF-doxygen/html/html/search/variables_4.js +2 -0
- package/SVF-doxygen/html/html/search/variables_5.js +1 -0
- package/SVF-doxygen/html/html/search/variables_9.js +3 -1
- package/SVF-doxygen/html/html/search/variables_c.js +1 -1
- package/SVF-doxygen/html/html/search/variables_d.js +0 -4
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/search/variables_f.js +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01CoreBitVector_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01CoreBitVector_01_4.html +126 -0
- package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData-members.html +83 -0
- package/SVF-doxygen/html/html/structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html +145 -0
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +1 -1
- 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_1SmallVector_3_01T_00_01N_01_4_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01llvm_1_1SparseBitVector_3_01N_01_4_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +129 -0
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +2 -2
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/tools_2DDA_2CMakeLists_8txt.html +1 -1
- package/SVF-doxygen/html/html/tools_2Example_2CMakeLists_8txt.html +1 -1
- package/SVF-doxygen/html/html/tools_2MTA_2CMakeLists_8txt.html +1 -1
- package/SVF-doxygen/html/html/tools_2SABER_2CMakeLists_8txt.html +1 -1
- package/SVF-doxygen/html/html/tools_2WPA_2CMakeLists_8txt.html +9 -9
- package/include/MemoryModel/PersistentPointsToCache.h +43 -34
- package/include/MemoryModel/PointerAnalysisImpl.h +1 -5
- package/include/Util/CoreBitVector.h +8 -0
- package/include/Util/Options.h +3 -0
- package/include/Util/SVFBasicTypes.h +22 -2
- package/include/WPA/VersionedFlowSensitive.h +96 -65
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +7 -0
- package/lib/MemoryModel/PointsTo.cpp +3 -3
- package/lib/Util/Options.cpp +6 -0
- package/lib/Util/PTAStat.cpp +3 -4
- package/lib/Util/SVFUtil.cpp +1 -0
- package/lib/WPA/FlowSensitive.cpp +1 -1
- package/lib/WPA/VersionedFlowSensitive.cpp +503 -229
- package/lib/WPA/VersionedFlowSensitiveStat.cpp +23 -38
- package/package.json +1 -1
- package/tools/WPA/CMakeLists.txt +3 -1
|
@@ -30,30 +30,16 @@ class VersionedFlowSensitive : public FlowSensitive
|
|
|
30
30
|
friend class VersionedFlowSensitiveStat;
|
|
31
31
|
|
|
32
32
|
private:
|
|
33
|
-
typedef
|
|
33
|
+
typedef CoreBitVector MeldVersion;
|
|
34
34
|
|
|
35
35
|
public:
|
|
36
36
|
typedef Map<NodeID, Version> ObjToVersionMap;
|
|
37
|
-
typedef Map<NodeID, MeldVersion> ObjToMeldVersionMap;
|
|
38
37
|
typedef Map<VersionedVar, const DummyVersionPropSVFGNode *> VarToPropNodeMap;
|
|
39
38
|
|
|
40
|
-
typedef
|
|
41
|
-
/// Maps locations to all versions it sees (through objects).
|
|
42
|
-
typedef Map<NodeID, ObjToMeldVersionMap> LocMeldVersionMap;
|
|
39
|
+
typedef std::vector<ObjToVersionMap> LocVersionMap;
|
|
43
40
|
/// (o -> (v -> versions with rely on o:v).
|
|
44
41
|
typedef Map<NodeID, Map<Version, std::vector<Version>>> VersionRelianceMap;
|
|
45
42
|
|
|
46
|
-
/// For caching the first step in LocVersionMaps.
|
|
47
|
-
typedef struct VersionCache
|
|
48
|
-
{
|
|
49
|
-
/// SVFG node ID.
|
|
50
|
-
NodeID l;
|
|
51
|
-
/// Nested map, i.e. consume[l] or yield[l].
|
|
52
|
-
ObjToVersionMap *ovm;
|
|
53
|
-
/// Whether l and ovm can be accessed.
|
|
54
|
-
bool valid;
|
|
55
|
-
} VersionCache;
|
|
56
|
-
|
|
57
43
|
/// If this version appears, there has been an error.
|
|
58
44
|
static const Version invalidVersion;
|
|
59
45
|
|
|
@@ -126,16 +112,8 @@ private:
|
|
|
126
112
|
/// Melds v2 into v1 (in place), returns whether a change occurred.
|
|
127
113
|
static bool meld(MeldVersion &mv1, const MeldVersion &mv2);
|
|
128
114
|
|
|
129
|
-
///
|
|
130
|
-
void
|
|
131
|
-
|
|
132
|
-
/// Returns a new MeldVersion for o during the prelabeling phase.
|
|
133
|
-
MeldVersion newMeldVersion(NodeID o);
|
|
134
|
-
|
|
135
|
-
/// Determine which versions rely on which versions (e.g. c_l'(o) relies on y_l(o)
|
|
136
|
-
/// given l-o->l' and y_l(o) = a, c_l'(o) = b), and which statements rely on which
|
|
137
|
-
/// versions (e.g. node l relies on c_l(o)).
|
|
138
|
-
void determineReliance(void);
|
|
115
|
+
/// Removes all indirect edges in the SVFG.
|
|
116
|
+
void removeAllIndirectSVFGEdges(void);
|
|
139
117
|
|
|
140
118
|
/// Propagates version v of o to any version of o which relies on v when o/v is changed.
|
|
141
119
|
/// Recursively applies to reliant versions till no new changes are made.
|
|
@@ -146,22 +124,37 @@ private:
|
|
|
146
124
|
/// taken itself.
|
|
147
125
|
void propagateVersion(const NodeID o, const Version v, const Version vp, bool time=true);
|
|
148
126
|
|
|
149
|
-
///
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
127
|
+
/// Fills in isStoreMap and isLoadMap.
|
|
128
|
+
virtual void buildIsStoreLoadMaps(void);
|
|
129
|
+
|
|
130
|
+
/// Returns true if l is a store node.
|
|
131
|
+
virtual bool isStore(const NodeID l) const;
|
|
132
|
+
|
|
133
|
+
/// Returns true if l is a load node.
|
|
134
|
+
virtual bool isLoad(const NodeID l) const;
|
|
135
|
+
|
|
136
|
+
/// Fills in deltaMap and deltaSourceMap for the SVFG.
|
|
137
|
+
virtual void buildDeltaMaps(void);
|
|
138
|
+
|
|
139
|
+
/// Returns true if l is a delta node, i.e., may get a new incoming indirect
|
|
140
|
+
/// edge due to on-the-fly callgraph construction.
|
|
141
|
+
virtual bool delta(const NodeID l) const;
|
|
142
|
+
|
|
143
|
+
/// Returns true if l is a delta-source node, i.e., may get a new outgoing indirect
|
|
144
|
+
/// edge to a delta node due to on-the-fly callgraph construction.
|
|
145
|
+
virtual bool deltaSource(const NodeID l) const;
|
|
153
146
|
|
|
154
147
|
/// Shared code for getConsume and getYield. They wrap this function.
|
|
155
|
-
Version getVersion(const NodeID l, const NodeID o,
|
|
148
|
+
Version getVersion(const NodeID l, const NodeID o, const LocVersionMap &lvm) const;
|
|
156
149
|
|
|
157
150
|
/// Returns the consumed version of o at l. If no such version exists, returns invalidVersion.
|
|
158
|
-
Version getConsume(const NodeID l, const NodeID o);
|
|
151
|
+
Version getConsume(const NodeID l, const NodeID o) const;
|
|
159
152
|
|
|
160
153
|
/// Returns the yielded version of o at l. If no such version exists, returns invalidVersion.
|
|
161
|
-
Version getYield(const NodeID l, const NodeID o);
|
|
154
|
+
Version getYield(const NodeID l, const NodeID o) const;
|
|
162
155
|
|
|
163
156
|
/// Shared code for setConsume and setYield. They wrap this function.
|
|
164
|
-
void setVersion(const NodeID l, const NodeID o, const Version v,
|
|
157
|
+
void setVersion(const NodeID l, const NodeID o, const Version v, LocVersionMap &lvm);
|
|
165
158
|
|
|
166
159
|
/// Sets the consumed version of o at l to v.
|
|
167
160
|
void setConsume(const NodeID l, const NodeID o, const Version v);
|
|
@@ -169,11 +162,11 @@ private:
|
|
|
169
162
|
/// Sets the yielded version of o at l to v.
|
|
170
163
|
void setYield(const NodeID l, const NodeID o, const Version v);
|
|
171
164
|
|
|
172
|
-
///
|
|
173
|
-
|
|
165
|
+
/// Returns the versions of o which rely on o:v.
|
|
166
|
+
std::vector<Version> &getReliantVersions(const NodeID o, const Version v);
|
|
174
167
|
|
|
175
|
-
///
|
|
176
|
-
|
|
168
|
+
/// Returns the statements which rely on o:v.
|
|
169
|
+
NodeBS &getStmtReliance(const NodeID o, const Version v);
|
|
177
170
|
|
|
178
171
|
/// Dumps versionReliance and stmtReliance.
|
|
179
172
|
void dumpReliances(void) const;
|
|
@@ -184,35 +177,12 @@ private:
|
|
|
184
177
|
/// Dumps a MeldVersion to stdout.
|
|
185
178
|
static void dumpMeldVersion(MeldVersion &v);
|
|
186
179
|
|
|
187
|
-
///
|
|
188
|
-
///
|
|
189
|
-
/// MeldVersions are currently SparseBitVectors which are necessary for the meld operator,
|
|
190
|
-
/// but when meld labeling is complete, we don't want to carry around SBVs and use them; integers
|
|
191
|
-
/// are better.
|
|
192
|
-
LocMeldVersionMap meldConsume;
|
|
193
|
-
/// SVFG node (label) x object -> version to yield.
|
|
194
|
-
/// Used during meld labeling.
|
|
195
|
-
/// For non-stores, yield == consume, so meldYield only has entries for stores.
|
|
196
|
-
LocMeldVersionMap meldYield;
|
|
197
|
-
/// Object -> MeldVersion counter. Used in the prelabeling phase to generate a
|
|
198
|
-
/// new MeldVersion.
|
|
199
|
-
Map<NodeID, unsigned> meldVersions;
|
|
200
|
-
|
|
201
|
-
/// Like meldConsume but with Versions, not MeldVersions.
|
|
202
|
-
/// Created after meld labeling from meldConsume and used during the analysis.
|
|
203
|
-
/// When modifying consume itself (not a value) outside of setConsume, invalidateConsumeCache
|
|
204
|
-
/// should be called. E.g. if a call like consume[l] is an insertion.
|
|
180
|
+
/// Maps locations to objects to a version. The object version is what is
|
|
181
|
+
/// consumed at that location.
|
|
205
182
|
LocVersionMap consume;
|
|
206
183
|
/// Actual yield map. Yield analogue to consume.
|
|
207
|
-
/// When modifying yield itself (not a value) outside of setYield, invalidateYieldCache
|
|
208
|
-
/// should be called.
|
|
209
184
|
LocVersionMap yield;
|
|
210
185
|
|
|
211
|
-
/// Cache for the nested map in consume.
|
|
212
|
-
VersionCache consumeCache;
|
|
213
|
-
/// Cache for the nested map in yield.
|
|
214
|
-
VersionCache yieldCache;
|
|
215
|
-
|
|
216
186
|
/// o -> (version -> versions which rely on it).
|
|
217
187
|
VersionRelianceMap versionReliance;
|
|
218
188
|
/// o x version -> statement nodes which rely on that o/version.
|
|
@@ -222,26 +192,87 @@ private:
|
|
|
222
192
|
/// needs to be propagated.
|
|
223
193
|
VarToPropNodeMap versionedVarToPropNode;
|
|
224
194
|
|
|
195
|
+
// Maps an object o to o' if o is equivalent to o' with respect to
|
|
196
|
+
// versioning. Thus, we don't need to store the versions of o and look
|
|
197
|
+
// up those for o' instead.
|
|
198
|
+
Map<NodeID, NodeID> equivalentObject;
|
|
199
|
+
|
|
225
200
|
/// Worklist for performing meld labeling, takes SVFG node l.
|
|
226
201
|
/// Nodes are added when the version they yield is changed.
|
|
227
202
|
FIFOWorkList<NodeID> vWorklist;
|
|
228
203
|
|
|
204
|
+
Set<NodeID> prelabeledObjects;
|
|
205
|
+
|
|
229
206
|
/// Points-to DS for working with versions.
|
|
230
207
|
BVDataPTAImpl::VersionedPTDataTy *vPtD;
|
|
231
208
|
|
|
209
|
+
/// deltaMap[l] means SVFG node l is a delta node, i.e., may get new
|
|
210
|
+
/// incoming edges due to OTF callgraph construction.
|
|
211
|
+
std::vector<bool> deltaMap;
|
|
212
|
+
|
|
213
|
+
/// deltaSourceMap[l] means SVFG node l *may* be a source to a delta node
|
|
214
|
+
/// through an dge added as a result of on-the-fly callgraph
|
|
215
|
+
/// construction.
|
|
216
|
+
std::vector<bool> deltaSourceMap;
|
|
217
|
+
|
|
218
|
+
/// isStoreMap[l] means SVFG node l is a store node.
|
|
219
|
+
std::vector<bool> isStoreMap;
|
|
220
|
+
|
|
221
|
+
/// isLoadMap[l] means SVFG node l is a load node.
|
|
222
|
+
std::vector<bool> isLoadMap;
|
|
223
|
+
|
|
232
224
|
/// Additional statistics.
|
|
233
225
|
//@{
|
|
234
226
|
Size_t numPrelabeledNodes; ///< Number of prelabeled nodes.
|
|
235
227
|
Size_t numPrelabelVersions; ///< Number of versions created during prelabeling.
|
|
236
228
|
|
|
237
|
-
double relianceTime; ///< Time to determine version and statement reliance.
|
|
238
229
|
double prelabelingTime; ///< Time to prelabel SVFG.
|
|
239
230
|
double meldLabelingTime; ///< Time to meld label SVFG.
|
|
240
|
-
double meldMappingTime; ///< Time to map MeldVersions to Versions.
|
|
241
231
|
double versionPropTime; ///< Time to propagate versions to versions which rely on them.
|
|
242
232
|
//@}
|
|
243
233
|
|
|
244
234
|
static VersionedFlowSensitive *vfspta;
|
|
235
|
+
|
|
236
|
+
class SCC
|
|
237
|
+
{
|
|
238
|
+
private:
|
|
239
|
+
typedef struct NodeData
|
|
240
|
+
{
|
|
241
|
+
int index;
|
|
242
|
+
int lowlink;
|
|
243
|
+
bool onStack;
|
|
244
|
+
} NodeData;
|
|
245
|
+
|
|
246
|
+
public:
|
|
247
|
+
/// Determines the strongly connected components of svfg following only
|
|
248
|
+
/// edges labelled with object. partOf[n] = scc means nodes n is part of
|
|
249
|
+
/// SCC scc. startingNodes contains the nodes to begin the search from.
|
|
250
|
+
/// After completion, footprint will contain all edges which object
|
|
251
|
+
/// appears on (as reached through the algorithm described above) sorted.
|
|
252
|
+
///
|
|
253
|
+
/// This is not a general SCC detection but specifically for versioning,
|
|
254
|
+
/// so edges to delta nodes are skipped as they are prelabelled. Edges
|
|
255
|
+
/// to stores are also skipped to as they yield a new version (they
|
|
256
|
+
/// cannot be part of an SCC containing more than themselves).
|
|
257
|
+
/// Skipped edges still form part of the footprint.
|
|
258
|
+
static unsigned detectSCCs(VersionedFlowSensitive *vfs,
|
|
259
|
+
const SVFG *svfg, const NodeID object,
|
|
260
|
+
const std::vector<const SVFGNode *> &startingNodes,
|
|
261
|
+
std::vector<int> &partOf,
|
|
262
|
+
std::vector<const IndirectSVFGEdge *> &footprint);
|
|
263
|
+
|
|
264
|
+
private:
|
|
265
|
+
/// Called by detectSCCs then called recursively.
|
|
266
|
+
static void visit(VersionedFlowSensitive *vfs,
|
|
267
|
+
const NodeID object,
|
|
268
|
+
std::vector<int> &partOf,
|
|
269
|
+
std::vector<const IndirectSVFGEdge *> &footprint,
|
|
270
|
+
std::vector<NodeData> &nodeData,
|
|
271
|
+
std::stack<const SVFGNode *> &stack,
|
|
272
|
+
int &index,
|
|
273
|
+
int ¤tSCC,
|
|
274
|
+
const SVFGNode *v);
|
|
275
|
+
};
|
|
245
276
|
};
|
|
246
277
|
|
|
247
278
|
} // End namespace SVF
|
|
@@ -69,6 +69,13 @@ BVDataPTAImpl::BVDataPTAImpl(PAG* p, PointerAnalysis::PTATY type, bool alias_che
|
|
|
69
69
|
ptaImplTy = BVDataImpl;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
+
void BVDataPTAImpl::finalize()
|
|
73
|
+
{
|
|
74
|
+
normalizePointsTo();
|
|
75
|
+
PointerAnalysis::finalize();
|
|
76
|
+
if (Options::ptDataBacking == PTBackingType::Persistent && Options::PStat) ptCache.printStats("bv-finalize");
|
|
77
|
+
}
|
|
78
|
+
|
|
72
79
|
/*!
|
|
73
80
|
* Expand all fields of an aggregate in all points-to sets
|
|
74
81
|
*/
|
|
@@ -276,9 +276,9 @@ bool PointsTo::intersectWithComplement(const PointsTo &rhs)
|
|
|
276
276
|
if (type == CBV) return cbv.intersectWithComplement(rhs.cbv);
|
|
277
277
|
else if (type == SBV) return sbv.intersectWithComplement(rhs.sbv);
|
|
278
278
|
else if (type == BV) return bv.intersectWithComplement(rhs.bv);
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
279
|
+
|
|
280
|
+
assert(false && "PointsTo::intersectWithComplement(PT): unknown type");
|
|
281
|
+
abort();
|
|
282
282
|
}
|
|
283
283
|
|
|
284
284
|
void PointsTo::intersectWithComplement(const PointsTo &lhs, const PointsTo &rhs)
|
package/lib/Util/Options.cpp
CHANGED
|
@@ -48,6 +48,12 @@ namespace SVF
|
|
|
48
48
|
llvm::cl::desc("time limit for main phase of flow-sensitive analyses")
|
|
49
49
|
);
|
|
50
50
|
|
|
51
|
+
const llvm::cl::opt<unsigned> Options::VersioningThreads(
|
|
52
|
+
"versioning-threads",
|
|
53
|
+
llvm::cl::init(1),
|
|
54
|
+
llvm::cl::desc("number of threads to use in the versioning phase of versioned flow-sensitive analysis")
|
|
55
|
+
);
|
|
56
|
+
|
|
51
57
|
const llvm::cl::opt<unsigned> Options::AnderTimeLimit(
|
|
52
58
|
"ander-time-limit",
|
|
53
59
|
llvm::cl::init(0),
|
package/lib/Util/PTAStat.cpp
CHANGED
|
@@ -124,10 +124,9 @@ double PTAStat::getClk(bool mark) {
|
|
|
124
124
|
{
|
|
125
125
|
return CLOCK_IN_MS();
|
|
126
126
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
127
|
+
|
|
128
|
+
assert(false && "PTAStat::getClk: unknown clock type");
|
|
129
|
+
abort();
|
|
131
130
|
}
|
|
132
131
|
|
|
133
132
|
void PTAStat::performStat()
|
package/lib/Util/SVFUtil.cpp
CHANGED