svf-tools 1.0.302 → 1.0.306
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 +12 -12
- 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 +15 -15
- package/SVF-doxygen/html/html/BasicTypes_8h_source.html +6 -6
- package/SVF-doxygen/html/html/CHG_8cpp.html +7 -6
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +42 -41
- 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 +9 -9
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
- 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 +4 -4
- 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 +8 -8
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +8 -8
- 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 +2 -2
- 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 +16 -16
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +4 -4
- 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 +2 -2
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +3 -3
- 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 +8 -8
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +6 -6
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +12 -12
- 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 +5 -5
- package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +7 -7
- 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 +5 -5
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +4 -4
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +7 -7
- 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 +11 -11
- 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 +112 -110
- package/SVF-doxygen/html/html/Options_8h.html +1 -0
- package/SVF-doxygen/html/html/Options_8h_source.html +114 -111
- 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 +6 -6
- 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 +20 -18
- package/SVF-doxygen/html/html/PTAStat_8h_source.html +19 -17
- 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 +2 -2
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +4 -4
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +5 -5
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +4 -5
- 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 +32 -26
- 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 +11 -11
- package/SVF-doxygen/html/html/SVFGStat_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
- 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 +2 -2
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +3 -3
- 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 +4 -4
- 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 +2 -2
- 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 +3 -3
- 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 +80 -67
- 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 +8 -8
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/WPASolver_8h_source.html +24 -24
- package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
- 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 +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat-members.html +10 -7
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +19 -15
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchCondManager.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +91 -91
- package/SVF-doxygen/html/html/classSVF_1_1CHNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CSC.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +1 -1
- 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-members.html +5 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +14 -10
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +27 -27
- 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 +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +53 -53
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat-members.html +5 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +17 -13
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +24 -24
- 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 +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGStat-members.html +5 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +7 -3
- 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_1IntraBlockNode.html +1 -1
- 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_1LLVMModuleSet.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +36 -36
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +9 -9
- 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-members.html +6 -3
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +17 -13
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat-members.html +5 -2
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +12 -8
- package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +102 -100
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +166 -111
- 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_1PTACallGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat-members.html +6 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +87 -56
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat-members.html +11 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +40 -36
- 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 +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +1 -1
- 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 +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- 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 +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1TypeSystem.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +161 -162
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +578 -539
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat-members.html +7 -4
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +32 -29
- 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 +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +60 -60
- 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 +24 -18
- 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_enum.html +3 -0
- package/SVF-doxygen/html/html/functions_eval_c.html +3 -0
- package/SVF-doxygen/html/html/functions_eval_w.html +76 -0
- package/SVF-doxygen/html/html/functions_f.html +14 -14
- 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_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_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 +23 -16
- package/SVF-doxygen/html/html/functions_l.html +12 -15
- 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 +16 -13
- package/SVF-doxygen/html/html/functions_r.html +6 -8
- package/SVF-doxygen/html/html/functions_s.html +14 -16
- package/SVF-doxygen/html/html/functions_t.html +9 -9
- 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_u.html +3 -3
- package/SVF-doxygen/html/html/functions_v.html +8 -10
- package/SVF-doxygen/html/html/functions_vars_c.html +3 -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 +3 -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 +5 -6
- 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_r.html +3 -3
- package/SVF-doxygen/html/html/globals_s.html +6 -6
- package/SVF-doxygen/html/html/hierarchy.html +176 -173
- package/SVF-doxygen/html/html/menudata.js +2 -1
- package/SVF-doxygen/html/html/namespaceSVF.html +68 -30
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +3 -3
- 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 +4 -3
- package/SVF-doxygen/html/html/search/all_12.js +4 -4
- package/SVF-doxygen/html/html/search/all_13.js +12 -12
- package/SVF-doxygen/html/html/search/all_14.js +6 -6
- package/SVF-doxygen/html/html/search/all_15.js +2 -2
- package/SVF-doxygen/html/html/search/all_16.js +5 -4
- package/SVF-doxygen/html/html/search/all_17.js +2 -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 +2 -1
- 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 +6 -6
- 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 +5 -3
- package/SVF-doxygen/html/html/search/all_c.js +4 -5
- package/SVF-doxygen/html/html/search/all_d.js +1 -6
- package/SVF-doxygen/html/html/search/all_e.js +5 -5
- 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/enums_1.js +1 -0
- package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_2.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_6.js +5 -3
- package/SVF-doxygen/html/html/search/functions_8.js +2 -2
- 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_f.js +1 -0
- package/SVF-doxygen/html/html/search/searchdata.js +1 -1
- 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 +1 -0
- package/SVF-doxygen/html/html/search/variables_12.js +0 -1
- package/SVF-doxygen/html/html/search/variables_14.js +2 -2
- 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 +1 -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_6.js +1 -1
- 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 +2 -2
- 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_01CHGraph_01_5_01_4.html +12 -12
- 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/include/Graphs/SVFGStat.h +10 -10
- package/include/MemoryModel/PTAStat.h +8 -2
- package/include/Util/CoreBitVector.h +8 -0
- package/include/Util/Options.h +6 -0
- package/include/Util/SVFBasicTypes.h +22 -2
- package/include/WPA/VersionedFlowSensitive.h +96 -65
- package/include/WPA/WPASolver.h +1 -2
- package/lib/SVF-FE/CHG.cpp +3 -2
- package/lib/Util/Options.cpp +16 -0
- package/lib/Util/PTAStat.cpp +17 -2
- package/lib/WPA/VersionedFlowSensitive.cpp +503 -229
- package/lib/WPA/VersionedFlowSensitiveStat.cpp +23 -38
- package/package.json +1 -1
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
3
|
+
<head>
|
|
4
|
+
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
6
|
+
<meta name="generator" content="Doxygen 1.8.13"/>
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
8
|
+
<title>Static Value-Flow Analysis: std::hash< std::vector< T > > Struct Template Reference</title>
|
|
9
|
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
10
|
+
<script type="text/javascript" src="jquery.js"></script>
|
|
11
|
+
<script type="text/javascript" src="dynsections.js"></script>
|
|
12
|
+
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
13
|
+
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
14
|
+
<script type="text/javascript" src="search/search.js"></script>
|
|
15
|
+
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
16
|
+
</head>
|
|
17
|
+
<body>
|
|
18
|
+
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
19
|
+
<div id="titlearea">
|
|
20
|
+
<table cellspacing="0" cellpadding="0">
|
|
21
|
+
<tbody>
|
|
22
|
+
<tr style="height: 56px;">
|
|
23
|
+
<td id="projectalign" style="padding-left: 0.5em;">
|
|
24
|
+
<div id="projectname">Static Value-Flow Analysis
|
|
25
|
+
</div>
|
|
26
|
+
</td>
|
|
27
|
+
</tr>
|
|
28
|
+
</tbody>
|
|
29
|
+
</table>
|
|
30
|
+
</div>
|
|
31
|
+
<!-- end header part -->
|
|
32
|
+
<!-- Generated by Doxygen 1.8.13 -->
|
|
33
|
+
<script type="text/javascript">
|
|
34
|
+
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
35
|
+
</script>
|
|
36
|
+
<script type="text/javascript" src="menudata.js"></script>
|
|
37
|
+
<script type="text/javascript" src="menu.js"></script>
|
|
38
|
+
<script type="text/javascript">
|
|
39
|
+
$(function() {
|
|
40
|
+
initMenu('',true,false,'search.php','Search');
|
|
41
|
+
$(document).ready(function() { init_search(); });
|
|
42
|
+
});
|
|
43
|
+
</script>
|
|
44
|
+
<div id="main-nav"></div>
|
|
45
|
+
<!-- window showing the filter options -->
|
|
46
|
+
<div id="MSearchSelectWindow"
|
|
47
|
+
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
48
|
+
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
49
|
+
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
<!-- iframe showing the search results (closed by default) -->
|
|
53
|
+
<div id="MSearchResultsWindow">
|
|
54
|
+
<iframe src="javascript:void(0)" frameborder="0"
|
|
55
|
+
name="MSearchResults" id="MSearchResults">
|
|
56
|
+
</iframe>
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
<div id="nav-path" class="navpath">
|
|
60
|
+
<ul>
|
|
61
|
+
<li class="navelem"><b>std</b></li><li class="navelem"><a class="el" href="structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html">hash< std::vector< T > ></a></li> </ul>
|
|
62
|
+
</div>
|
|
63
|
+
</div><!-- top -->
|
|
64
|
+
<div class="header">
|
|
65
|
+
<div class="summary">
|
|
66
|
+
<a href="#pub-methods">Public Member Functions</a> |
|
|
67
|
+
<a href="structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4-members.html">List of all members</a> </div>
|
|
68
|
+
<div class="headertitle">
|
|
69
|
+
<div class="title">std::hash< std::vector< T > > Struct Template Reference</div> </div>
|
|
70
|
+
</div><!--header-->
|
|
71
|
+
<div class="contents">
|
|
72
|
+
|
|
73
|
+
<p><code>#include <<a class="el" href="SVFBasicTypes_8h_source.html">SVFBasicTypes.h</a>></code></p>
|
|
74
|
+
<table class="memberdecls">
|
|
75
|
+
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
|
76
|
+
Public Member Functions</h2></td></tr>
|
|
77
|
+
<tr class="memitem:a921ca626d87c3eed7b71210cfc24d0dd"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html#a921ca626d87c3eed7b71210cfc24d0dd">operator()</a> (const std::vector< T > &v) const</td></tr>
|
|
78
|
+
<tr class="separator:a921ca626d87c3eed7b71210cfc24d0dd"><td class="memSeparator" colspan="2"> </td></tr>
|
|
79
|
+
</table>
|
|
80
|
+
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
81
|
+
<div class="textblock"><h3>template<typename T><br />
|
|
82
|
+
struct std::hash< std::vector< T > ></h3>
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
<p class="definition">Definition at line <a class="el" href="SVFBasicTypes_8h_source.html#l00305">305</a> of file <a class="el" href="SVFBasicTypes_8h_source.html">SVFBasicTypes.h</a>.</p>
|
|
86
|
+
</div><h2 class="groupheader">Member Function Documentation</h2>
|
|
87
|
+
<a id="a921ca626d87c3eed7b71210cfc24d0dd"></a>
|
|
88
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a921ca626d87c3eed7b71210cfc24d0dd">◆ </a></span>operator()()</h2>
|
|
89
|
+
|
|
90
|
+
<div class="memitem">
|
|
91
|
+
<div class="memproto">
|
|
92
|
+
<div class="memtemplate">
|
|
93
|
+
template<typename T > </div>
|
|
94
|
+
<table class="mlabels">
|
|
95
|
+
<tr>
|
|
96
|
+
<td class="mlabels-left">
|
|
97
|
+
<table class="memname">
|
|
98
|
+
<tr>
|
|
99
|
+
<td class="memname">size_t std::hash< std::vector< T > >::operator() </td>
|
|
100
|
+
<td>(</td>
|
|
101
|
+
<td class="paramtype">const std::vector< T > & </td>
|
|
102
|
+
<td class="paramname"><em>v</em></td><td>)</td>
|
|
103
|
+
<td> const</td>
|
|
104
|
+
</tr>
|
|
105
|
+
</table>
|
|
106
|
+
</td>
|
|
107
|
+
<td class="mlabels-right">
|
|
108
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
109
|
+
</tr>
|
|
110
|
+
</table>
|
|
111
|
+
</div><div class="memdoc">
|
|
112
|
+
|
|
113
|
+
<p class="definition">Definition at line <a class="el" href="SVFBasicTypes_8h_source.html#l00307">307</a> of file <a class="el" href="SVFBasicTypes_8h_source.html">SVFBasicTypes.h</a>.</p>
|
|
114
|
+
<div class="fragment"><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="comment">// TODO: repetition with CBV.</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordtype">size_t</span> h = v.size();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <a class="code" href="structSVF_1_1Hash.html">SVF::Hash<T></a> hf;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> T &t : v)</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  h ^= hf(t) + 0x9e3779b9 + (h << 6) + (h >> 2);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">return</span> h;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }</div><div class="ttc" id="structSVF_1_1Hash_html"><div class="ttname"><a href="structSVF_1_1Hash.html">SVF::Hash</a></div><div class="ttdoc">provide extra hash function for std::pair handling </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00052">SVFBasicTypes.h:52</a></div></div>
|
|
115
|
+
</div><!-- fragment -->
|
|
116
|
+
</div>
|
|
117
|
+
</div>
|
|
118
|
+
<hr/>The documentation for this struct was generated from the following file:<ul>
|
|
119
|
+
<li>/home/runner/work/SVF/SVF/include/Util/<a class="el" href="SVFBasicTypes_8h_source.html">SVFBasicTypes.h</a></li>
|
|
120
|
+
</ul>
|
|
121
|
+
</div><!-- contents -->
|
|
122
|
+
<!-- start footer part -->
|
|
123
|
+
<hr class="footer"/><address class="footer"><small>
|
|
124
|
+
Generated by  <a href="http://www.doxygen.org/index.html">
|
|
125
|
+
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
|
126
|
+
</a> 1.8.13
|
|
127
|
+
</small></address>
|
|
128
|
+
</body>
|
|
129
|
+
</html>
|
|
@@ -305,7 +305,7 @@ Functions</h2></td></tr>
|
|
|
305
305
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
|
|
306
306
|
<div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
|
|
307
307
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
|
|
308
|
-
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
308
|
+
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
|
|
309
309
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_ad4c6a48b60c870d63049fe7272cc7eb8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00159">WorkList.h:159</a></div></div>
|
|
310
310
|
<div class="ttc" id="classSVF_1_1ICFGNode_html_ac16c5a3227a44d3b9f7c3209156d9df2"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#ac16c5a3227a44d3b9f7c3209156d9df2">SVF::ICFGNode::const_iterator</a></div><div class="ttdeci">ICFGEdge::ICFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00066">ICFGNode.h:66</a></div></div>
|
|
311
311
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00137">WorkList.h:137</a></div></div>
|
|
@@ -354,7 +354,7 @@ Functions</h2></td></tr>
|
|
|
354
354
|
<div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
|
|
355
355
|
<div class="ttc" id="classSVF_1_1PAG_html_a3aa1c92eb8a6fab72996964de80f19ac"><div class="ttname"><a href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">SVF::PAG::getPAGNode</a></div><div class="ttdeci">PAGNode * getPAGNode(NodeID id) const</div><div class="ttdoc">Get PAGNode ID. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00539">PAG.h:539</a></div></div>
|
|
356
356
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
|
|
357
|
-
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
357
|
+
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
|
|
358
358
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_ad4c6a48b60c870d63049fe7272cc7eb8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00159">WorkList.h:159</a></div></div>
|
|
359
359
|
<div class="ttc" id="classSVF_1_1VFGNode_html_a3c558955f60c237c558d8faafed781e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVF::VFGNode::const_iterator</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00061">VFGNode.h:61</a></div></div>
|
|
360
360
|
<div class="ttc" id="classSVF_1_1PAGNode_html"><div class="ttname"><a href="classSVF_1_1PAGNode.html">SVF::PAGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00046">PAGNode.h:46</a></div></div>
|
|
@@ -98,7 +98,7 @@ $(function() {
|
|
|
98
98
|
<div class="ttc" id="classSVF_1_1PAG_html_a3aa1c92eb8a6fab72996964de80f19ac"><div class="ttname"><a href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">SVF::PAG::getPAGNode</a></div><div class="ttdeci">PAGNode * getPAGNode(NodeID id) const</div><div class="ttdoc">Get PAGNode ID. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00539">PAG.h:539</a></div></div>
|
|
99
99
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
|
|
100
100
|
<div class="ttc" id="classSVF_1_1PAGBuilder_html_a757ab2c9481467842e1ad4c46a1f6291"><div class="ttname"><a href="classSVF_1_1PAGBuilder.html#a757ab2c9481467842e1ad4c46a1f6291">SVF::PAGBuilder::build</a></div><div class="ttdeci">virtual PAG * build(SVFModule *svfModule)</div><div class="ttdoc">Start building PAG here. </div><div class="ttdef"><b>Definition:</b> <a href="PAGBuilder_8cpp_source.html#l00047">PAGBuilder.cpp:47</a></div></div>
|
|
101
|
-
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#
|
|
101
|
+
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
|
|
102
102
|
<div class="ttc" id="svf-ex_8cpp_html_a3c04138a5bfe5d72780bb7e82a18e627"><div class="ttname"><a href="svf-ex_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a></div><div class="ttdeci">int main(int argc, char **argv)</div><div class="ttdef"><b>Definition:</b> <a href="svf-ex_8cpp_source.html#l00145">svf-ex.cpp:145</a></div></div>
|
|
103
103
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_ad4c6a48b60c870d63049fe7272cc7eb8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00159">WorkList.h:159</a></div></div>
|
|
104
104
|
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
|
|
@@ -108,52 +108,52 @@ public:
|
|
|
108
108
|
|
|
109
109
|
void dirVFEdgeStart()
|
|
110
110
|
{
|
|
111
|
-
connectDirSVFGEdgeTimeStart =
|
|
111
|
+
connectDirSVFGEdgeTimeStart = PTAStat::getClk(true);
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
void dirVFEdgeEnd()
|
|
115
115
|
{
|
|
116
|
-
connectDirSVFGEdgeTimeEnd =
|
|
116
|
+
connectDirSVFGEdgeTimeEnd = PTAStat::getClk(true);
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
void indVFEdgeStart()
|
|
120
120
|
{
|
|
121
|
-
connectIndSVFGEdgeTimeStart =
|
|
121
|
+
connectIndSVFGEdgeTimeStart = PTAStat::getClk(true);
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
void indVFEdgeEnd()
|
|
125
125
|
{
|
|
126
|
-
connectIndSVFGEdgeTimeEnd =
|
|
126
|
+
connectIndSVFGEdgeTimeEnd = PTAStat::getClk(true);
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
void TLVFNodeStart()
|
|
130
130
|
{
|
|
131
|
-
addTopLevelNodeTimeStart =
|
|
131
|
+
addTopLevelNodeTimeStart = PTAStat::getClk(true);
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
void TLVFNodeEnd()
|
|
135
135
|
{
|
|
136
|
-
addTopLevelNodeTimeEnd =
|
|
136
|
+
addTopLevelNodeTimeEnd = PTAStat::getClk(true);
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
void ATVFNodeStart()
|
|
140
140
|
{
|
|
141
|
-
addAddrTakenNodeTimeStart =
|
|
141
|
+
addAddrTakenNodeTimeStart = PTAStat::getClk(true);
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
void ATVFNodeEnd()
|
|
145
145
|
{
|
|
146
|
-
addAddrTakenNodeTimeEnd =
|
|
146
|
+
addAddrTakenNodeTimeEnd = PTAStat::getClk(true);
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
void sfvgOptStart()
|
|
150
150
|
{
|
|
151
|
-
svfgOptTimeStart =
|
|
151
|
+
svfgOptTimeStart = PTAStat::getClk(true);
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
void sfvgOptEnd()
|
|
155
155
|
{
|
|
156
|
-
svfgOptTimeEnd =
|
|
156
|
+
svfgOptTimeEnd = PTAStat::getClk(true);
|
|
157
157
|
}
|
|
158
158
|
|
|
159
159
|
private:
|
|
@@ -122,16 +122,22 @@ public:
|
|
|
122
122
|
|
|
123
123
|
typedef Map<const char*,double> TIMEStatMap;
|
|
124
124
|
|
|
125
|
+
enum ClockType
|
|
126
|
+
{
|
|
127
|
+
Wall,
|
|
128
|
+
CPU,
|
|
129
|
+
};
|
|
130
|
+
|
|
125
131
|
PTAStat(PointerAnalysis* p);
|
|
126
132
|
virtual ~PTAStat() {}
|
|
127
133
|
|
|
128
134
|
virtual inline void startClk()
|
|
129
135
|
{
|
|
130
|
-
startTime =
|
|
136
|
+
startTime = getClk(true);
|
|
131
137
|
}
|
|
132
138
|
virtual inline void endClk()
|
|
133
139
|
{
|
|
134
|
-
endTime =
|
|
140
|
+
endTime = getClk(true);
|
|
135
141
|
}
|
|
136
142
|
/// When mark is true, real clock is always returned. When mark is false, it is
|
|
137
143
|
/// only returned when Options::MarkedClocksOnly is not set.
|
|
@@ -200,6 +200,14 @@ private:
|
|
|
200
200
|
std::vector<Word> words;
|
|
201
201
|
};
|
|
202
202
|
|
|
203
|
+
template <>
|
|
204
|
+
struct Hash<CoreBitVector>
|
|
205
|
+
{
|
|
206
|
+
size_t operator()(const CoreBitVector &cbv) const {
|
|
207
|
+
return cbv.hash();
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
|
|
203
211
|
};
|
|
204
212
|
|
|
205
213
|
#endif // COREBITVECTOR_H_
|
package/include/Util/Options.h
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
#include <sstream>
|
|
7
7
|
#include "FastCluster/fastcluster.h"
|
|
8
|
+
#include "MemoryModel/PTAStat.h"
|
|
8
9
|
#include "MemoryModel/PointerAnalysisImpl.h"
|
|
9
10
|
#include "Util/NodeIDAllocator.h"
|
|
10
11
|
#include "MSSA/MemSSA.h"
|
|
@@ -19,6 +20,8 @@ class Options
|
|
|
19
20
|
public:
|
|
20
21
|
Options(void) = delete;
|
|
21
22
|
|
|
23
|
+
static const llvm::cl::opt<enum PTAStat::ClockType> ClockType;
|
|
24
|
+
|
|
22
25
|
/// If set, only return the clock when getClk is called as getClk(true).
|
|
23
26
|
/// Retrieving the clock is slow but it should be fine for a few calls.
|
|
24
27
|
/// This is good for benchmarking when we don't need to know how long processLoad
|
|
@@ -70,6 +73,9 @@ public:
|
|
|
70
73
|
/// Time limit for the Andersen's analyses.
|
|
71
74
|
static const llvm::cl::opt<unsigned> AnderTimeLimit;
|
|
72
75
|
|
|
76
|
+
/// Number of threads for the versioning phase.
|
|
77
|
+
static const llvm::cl::opt<unsigned> VersioningThreads;
|
|
78
|
+
|
|
73
79
|
// ContextDDA.cpp
|
|
74
80
|
static const llvm::cl::opt<unsigned long long> CxtBudget;
|
|
75
81
|
|
|
@@ -82,7 +82,6 @@ typedef u32_t EdgeID;
|
|
|
82
82
|
typedef unsigned SymID;
|
|
83
83
|
typedef unsigned CallSiteID;
|
|
84
84
|
typedef unsigned ThreadID;
|
|
85
|
-
typedef unsigned Version;
|
|
86
85
|
|
|
87
86
|
typedef llvm::SparseBitVector<> NodeBS;
|
|
88
87
|
typedef llvm::SparseBitVector<> SparseBitVector;
|
|
@@ -111,7 +110,6 @@ template <typename T, unsigned N>
|
|
|
111
110
|
using SmallVector = llvm::SmallVector<T, N>;
|
|
112
111
|
|
|
113
112
|
typedef std::pair<NodeID, NodeID> NodePair;
|
|
114
|
-
typedef std::pair<NodeID, Version> VersionedVar;
|
|
115
113
|
typedef OrderedSet<NodeID> OrderedNodeSet;
|
|
116
114
|
typedef Set<NodeID> NodeSet;
|
|
117
115
|
typedef Set<NodePair> NodePairSet;
|
|
@@ -127,6 +125,11 @@ typedef NodeSet EdgeSet;
|
|
|
127
125
|
typedef SmallVector16 CallStrCxt;
|
|
128
126
|
typedef llvm::StringMap<u32_t> StringMap;
|
|
129
127
|
|
|
128
|
+
typedef unsigned Version;
|
|
129
|
+
typedef Set<Version> VersionSet;
|
|
130
|
+
typedef std::pair<NodeID, Version> VersionedVar;
|
|
131
|
+
typedef Set<VersionedVar> VersionedVarSet;
|
|
132
|
+
|
|
130
133
|
// TODO: be explicit that this is a pair of 32-bit unsigneds?
|
|
131
134
|
template <> struct Hash<NodePair>
|
|
132
135
|
{
|
|
@@ -298,4 +301,21 @@ struct std::hash<llvm::SparseBitVector<N>>
|
|
|
298
301
|
}
|
|
299
302
|
};
|
|
300
303
|
|
|
304
|
+
template <typename T>
|
|
305
|
+
struct std::hash<std::vector<T>>
|
|
306
|
+
{
|
|
307
|
+
size_t operator()(const std::vector<T> &v) const {
|
|
308
|
+
// TODO: repetition with CBV.
|
|
309
|
+
size_t h = v.size();
|
|
310
|
+
|
|
311
|
+
SVF::Hash<T> hf;
|
|
312
|
+
for (const T &t : v)
|
|
313
|
+
{
|
|
314
|
+
h ^= hf(t) + 0x9e3779b9 + (h << 6) + (h >> 2);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
return h;
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
|
|
301
321
|
#endif /* INCLUDE_UTIL_SVFBASICTYPES_H_ */
|
|
@@ -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
|
package/include/WPA/WPASolver.h
CHANGED
package/lib/SVF-FE/CHG.cpp
CHANGED
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
#include "Util/SVFUtil.h"
|
|
44
44
|
#include "SVF-FE/LLVMUtil.h"
|
|
45
45
|
#include "Util/SVFModule.h"
|
|
46
|
+
#include "MemoryModel/PTAStat.h"
|
|
46
47
|
|
|
47
48
|
using namespace SVF;
|
|
48
49
|
using namespace SVFUtil;
|
|
@@ -88,7 +89,7 @@ void CHGraph::buildCHG()
|
|
|
88
89
|
{
|
|
89
90
|
|
|
90
91
|
double timeStart, timeEnd;
|
|
91
|
-
timeStart =
|
|
92
|
+
timeStart = PTAStat::getClk(true);
|
|
92
93
|
for (u32_t i = 0; i < LLVMModuleSet::getLLVMModuleSet()->getModuleNum(); ++i)
|
|
93
94
|
{
|
|
94
95
|
Module *M = LLVMModuleSet::getLLVMModuleSet()->getModule(i);
|
|
@@ -109,7 +110,7 @@ void CHGraph::buildCHG()
|
|
|
109
110
|
DBOUT(DGENERAL, outs() << SVFUtil::pasMsg("build Internal Maps ...\n"));
|
|
110
111
|
buildInternalMaps();
|
|
111
112
|
|
|
112
|
-
timeEnd =
|
|
113
|
+
timeEnd = PTAStat::getClk(true);
|
|
113
114
|
buildingCHGTime = (timeEnd - timeStart) / TIMEINTERVAL;
|
|
114
115
|
|
|
115
116
|
if (Options::DumpCHA)
|