svf-tools 1.0.560 → 1.0.563
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/README.md +1 -1
- package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +43 -43
- package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/Andersen_8h_source.html +56 -56
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +45 -45
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +43 -43
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +36 -36
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +21 -21
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +53 -53
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +51 -51
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +112 -112
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +17 -17
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +40 -40
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +52 -52
- package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +2 -2
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +42 -42
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +6 -6
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +10 -10
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +35 -35
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +114 -114
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +7 -7
- package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +95 -95
- package/SVF-doxygen/html/html/MHP_8h_source.html +135 -135
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +6 -6
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +6 -6
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +34 -34
- package/SVF-doxygen/html/html/MTAStat_8h_source.html +14 -14
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +29 -29
- package/SVF-doxygen/html/html/MTA_8h_source.html +24 -24
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +4 -4
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +50 -50
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +93 -93
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +60 -60
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +103 -103
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +185 -185
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/PCG_8h_source.html +52 -52
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +7 -4
- package/SVF-doxygen/html/html/PTAStat_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +40 -40
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +181 -181
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +30 -30
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +60 -60
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +20 -20
- package/SVF-doxygen/html/html/SVFGStat_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/SVFG_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +37 -37
- package/SVF-doxygen/html/html/SVFModule_8cpp.html +1 -0
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +6 -2
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +6 -3
- package/SVF-doxygen/html/html/SVFStat_8h_source.html +7 -4
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +7 -7
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SaberCheckerAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +66 -66
- package/SVF-doxygen/html/html/SrcSnkSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/Steensgaard_8h_source.html +6 -6
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +44 -44
- package/SVF-doxygen/html/html/TCT_8h_source.html +93 -93
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +26 -26
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +38 -38
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/WPAStat_8h_source.html +2 -2
- package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +106 -106
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat-members.html +15 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +25 -18
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +39 -39
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +101 -101
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +58 -58
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat-members.html +14 -11
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +173 -166
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +288 -288
- package/SVF-doxygen/html/html/classSVF_1_1DFPTData.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1DiffPTData.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1EntryCHI.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +50 -50
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +72 -72
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat-members.html +15 -12
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +9 -2
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +218 -218
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1ICFGStat-members.html +14 -11
- package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +7 -0
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +36 -33
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1LoadMU.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +337 -337
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +248 -248
- package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +200 -200
- package/SVF-doxygen/html/html/classSVF_1_1MSSACHI.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MSSADEF.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAMU.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +54 -54
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +181 -181
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat-members.html +13 -10
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +54 -47
- package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +269 -269
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat-members.html +19 -16
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +26 -19
- package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +128 -128
- package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData.html +55 -55
- package/SVF-doxygen/html/html/classSVF_1_1MutableIncDFPTData.html +88 -88
- package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +78 -78
- package/SVF-doxygen/html/html/classSVF_1_1MutableVersionedPTData.html +77 -77
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +131 -131
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat-members.html +14 -11
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +23 -12
- package/SVF-doxygen/html/html/classSVF_1_1PTData.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +107 -107
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +66 -66
- package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +84 -84
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +77 -77
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +134 -134
- package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData.html +77 -77
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +161 -161
- package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1RetMU.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFGNodeLockSpan.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat-members.html +26 -23
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +19 -12
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +128 -122
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +5 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat-members.html +6 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +89 -7
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +157 -157
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +264 -264
- package/SVF-doxygen/html/html/classSVF_1_1TCTEdge.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +106 -106
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat-members.html +18 -15
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +16 -9
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedPTData.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +6 -6
- package/SVF-doxygen/html/html/dda_8cpp.html +3 -3
- package/SVF-doxygen/html/html/dda_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/functions_func_s.html +1 -1
- package/SVF-doxygen/html/html/functions_i.html +3 -3
- package/SVF-doxygen/html/html/functions_l.html +6 -6
- package/SVF-doxygen/html/html/functions_o.html +15 -15
- package/SVF-doxygen/html/html/functions_p.html +1 -1
- package/SVF-doxygen/html/html/functions_s.html +9 -11
- package/SVF-doxygen/html/html/functions_t.html +17 -10
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_vars_t.html +9 -0
- package/SVF-doxygen/html/html/functions_w.html +11 -11
- package/SVF-doxygen/html/html/mta_8cpp.html +3 -3
- package/SVF-doxygen/html/html/mta_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/namespaceSVF.html +11 -11
- package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
- package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/search/all_10.js +3 -3
- package/SVF-doxygen/html/html/search/all_11.js +2 -2
- package/SVF-doxygen/html/html/search/all_12.js +6 -6
- package/SVF-doxygen/html/html/search/all_13.js +9 -6
- package/SVF-doxygen/html/html/search/all_14.js +1 -1
- package/SVF-doxygen/html/html/search/all_15.js +2 -2
- package/SVF-doxygen/html/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/html/search/all_9.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +3 -3
- package/SVF-doxygen/html/html/search/all_e.js +2 -2
- package/SVF-doxygen/html/html/search/all_f.js +3 -3
- package/SVF-doxygen/html/html/search/functions_11.js +1 -1
- package/SVF-doxygen/html/html/search/variables_13.js +5 -2
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_c.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1MemRegion_1_1equalMemRegion.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html +4 -4
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +15 -15
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCT_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SVFGNodeLockSpan_01_4.html +3 -3
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +2 -2
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/include/DDA/ContextDDA.h +29 -0
- package/include/DDA/DDAClient.h +23 -0
- package/include/DDA/DDAPass.h +22 -0
- package/include/DDA/DDAStat.h +22 -0
- package/include/DDA/DDAVFSolver.h +26 -4
- package/include/DDA/FlowDDA.h +29 -0
- package/include/MSSA/MSSAMuChi.h +1 -1
- package/include/MSSA/MemPartition.h +1 -1
- package/include/MSSA/MemRegion.h +5 -1
- package/include/MSSA/MemSSA.h +7 -1
- package/include/MSSA/SVFGBuilder.h +1 -1
- package/include/MTA/FSMPTA.h +26 -0
- package/include/MTA/LockAnalysis.h +22 -0
- package/include/MTA/MHP.h +22 -0
- package/include/MTA/MTA.h +27 -1
- package/include/MTA/MTAStat.h +22 -0
- package/include/MTA/PCG.h +22 -0
- package/include/MTA/TCT.h +22 -0
- package/include/MemoryModel/AbstractPointsToDS.h +34 -0
- package/include/MemoryModel/ConditionalPT.h +1 -1
- package/include/MemoryModel/LocationSet.h +1 -1
- package/include/MemoryModel/MutablePointsToDS.h +32 -0
- package/include/MemoryModel/PAGBuilderFromFile.h +2 -2
- package/include/MemoryModel/PersistentPointsToCache.h +3 -1
- package/include/MemoryModel/PersistentPointsToDS.h +10 -0
- package/include/MemoryModel/PointerAnalysis.h +1 -1
- package/include/MemoryModel/PointerAnalysisImpl.h +1 -1
- package/include/MemoryModel/SVFStatements.h +1 -1
- package/include/SABER/DoubleFreeChecker.h +1 -1
- package/include/SABER/FileChecker.h +1 -1
- package/include/SABER/LeakChecker.h +1 -1
- package/include/SABER/ProgSlice.h +8 -1
- package/include/SABER/SaberAnnotator.h +1 -1
- package/include/SABER/SaberCheckerAPI.h +1 -1
- package/include/SABER/SaberCondAllocator.h +1 -1
- package/include/SABER/SaberSVFGBuilder.h +1 -1
- package/include/SABER/SrcSnkDDA.h +8 -1
- package/include/SABER/SrcSnkSolver.h +1 -1
- package/include/Util/SVFStat.h +4 -0
- package/include/WPA/Andersen.h +5 -0
- package/include/WPA/TypeAnalysis.h +1 -1
- package/include/WPA/VersionedFlowSensitive.h +4 -0
- package/lib/DDA/ContextDDA.cpp +22 -0
- package/lib/DDA/DDAClient.cpp +22 -0
- package/lib/DDA/DDAPass.cpp +23 -0
- package/lib/DDA/DDAStat.cpp +22 -0
- package/lib/DDA/FlowDDA.cpp +22 -0
- package/lib/MTA/FSMPTA.cpp +22 -0
- package/lib/MTA/LockAnalysis.cpp +26 -4
- package/lib/MTA/MHP.cpp +25 -3
- package/lib/MTA/MTA.cpp +23 -0
- package/lib/MTA/MTAStat.cpp +22 -0
- package/lib/MTA/PCG.cpp +22 -0
- package/lib/MTA/TCT.cpp +23 -0
- package/lib/MemoryModel/LocationSet.cpp +1 -1
- package/lib/MemoryModel/PAGBuilderFromFile.cpp +1 -1
- package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +23 -0
- package/lib/SABER/DoubleFreeChecker.cpp +1 -1
- package/lib/SABER/FileChecker.cpp +1 -1
- package/lib/SABER/LeakChecker.cpp +1 -1
- package/lib/SABER/ProgSlice.cpp +1 -1
- package/lib/SABER/SaberAnnotator.cpp +1 -1
- package/lib/SABER/SaberCheckerAPI.cpp +1 -1
- package/lib/SABER/SaberCondAllocator.cpp +1 -1
- package/lib/SABER/SaberSVFGBuilder.cpp +1 -1
- package/lib/SABER/SrcSnkDDA.cpp +1 -1
- package/lib/SVF-FE/LLVMModule.cpp +5 -0
- package/lib/SVF-FE/SVFIRBuilder.cpp +26 -0
- package/lib/Util/ExtAPI.cpp +42 -0
- package/lib/Util/PTAStat.cpp +5 -0
- package/lib/Util/SVFModule.cpp +4 -0
- package/lib/Util/SVFStat.cpp +5 -0
- package/lib/WPA/Steensgaard.cpp +22 -0
- package/lib/WPA/TypeAnalysis.cpp +1 -1
- package/lib/WPA/WPAPass.cpp +1 -1
- package/package.json +1 -1
|
@@ -997,7 +997,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
997
997
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
998
998
|
<div class="textblock"><p>Versioned flow sensitive whole program pointer analysis </p>
|
|
999
999
|
|
|
1000
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
1000
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00032">32</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
1001
1001
|
</div><h2 class="groupheader">Member Typedef Documentation</h2>
|
|
1002
1002
|
<a id="aa689d29ead80303b1ef1e1a91f31c296"></a>
|
|
1003
1003
|
<h2 class="memtitle"><span class="permalink"><a href="#aa689d29ead80303b1ef1e1a91f31c296">◆ </a></span>LocVersionMap</h2>
|
|
@@ -1011,7 +1011,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1011
1011
|
</table>
|
|
1012
1012
|
</div><div class="memdoc">
|
|
1013
1013
|
|
|
1014
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
1014
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00043">43</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
1015
1015
|
|
|
1016
1016
|
</div>
|
|
1017
1017
|
</div>
|
|
@@ -1035,7 +1035,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1035
1035
|
</table>
|
|
1036
1036
|
</div><div class="memdoc">
|
|
1037
1037
|
|
|
1038
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
1038
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00037">37</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
1039
1039
|
|
|
1040
1040
|
</div>
|
|
1041
1041
|
</div>
|
|
@@ -1051,7 +1051,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1051
1051
|
</table>
|
|
1052
1052
|
</div><div class="memdoc">
|
|
1053
1053
|
|
|
1054
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
1054
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00040">40</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
1055
1055
|
|
|
1056
1056
|
</div>
|
|
1057
1057
|
</div>
|
|
@@ -1067,7 +1067,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1067
1067
|
</table>
|
|
1068
1068
|
</div><div class="memdoc">
|
|
1069
1069
|
|
|
1070
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
1070
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00041">41</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
1071
1071
|
|
|
1072
1072
|
</div>
|
|
1073
1073
|
</div>
|
|
@@ -1085,7 +1085,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1085
1085
|
|
|
1086
1086
|
<p>(o -> (v -> versions with rely on o:v). </p>
|
|
1087
1087
|
|
|
1088
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
1088
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00045">45</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
1089
1089
|
|
|
1090
1090
|
</div>
|
|
1091
1091
|
</div>
|
|
@@ -1120,17 +1120,17 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1120
1120
|
|
|
1121
1121
|
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8cpp_source.html#l00030">30</a> of file <a class="el" href="VersionedFlowSensitive_8cpp_source.html">VersionedFlowSensitive.cpp</a>.</p>
|
|
1122
1122
|
<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  : <a class="code" href="classSVF_1_1FlowSensitive.html#aac88b67b49cbd72912ff586d30197ffb">FlowSensitive</a>(_pag, <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aff5029fca933376be1fa374bec790da6">numPrelabeledNodes</a> = <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a207ae4d1f2e0ccab8e36add0a45578af">numPrelabelVersions</a> = 0;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a77a5dd9578def9a8e2b48e8b90d9b996">prelabelingTime</a> = <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a4a594c8d6ccaa27b5328c6388fdb258d">meldLabelingTime</a> = <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af15bb6be283fee2fcc4b1fb7d8190451">versionPropTime</a> = 0.0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// We'll grab vPtD in initialize.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVFIR::const_iterator</a> it = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span> (SVFUtil::isa<ObjVar>(it->second)) <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2d451d89f99a4bff828b682723df477f">equivalentObject</a>[it->first] = it->first;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  assert(!<a class="code" href="classSVF_1_1Options.html#a7704ff30e6fc5043313adf5c655bcd4a">Options::OPTSVFG</a> && <span class="stringliteral">"VFS: -opt-svfg not currently supported with VFS."</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
|
|
1123
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2d451d89f99a4bff828b682723df477f"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2d451d89f99a4bff828b682723df477f">SVF::VersionedFlowSensitive::equivalentObject</a></div><div class="ttdeci">Map< NodeID, NodeID > equivalentObject</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1124
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a4a594c8d6ccaa27b5328c6388fdb258d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a4a594c8d6ccaa27b5328c6388fdb258d">SVF::VersionedFlowSensitive::meldLabelingTime</a></div><div class="ttdeci">double meldLabelingTime</div><div class="ttdoc">Time to meld label SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1123
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2d451d89f99a4bff828b682723df477f"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2d451d89f99a4bff828b682723df477f">SVF::VersionedFlowSensitive::equivalentObject</a></div><div class="ttdeci">Map< NodeID, NodeID > equivalentObject</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00205">VersionedFlowSensitive.h:205</a></div></div>
|
|
1124
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a4a594c8d6ccaa27b5328c6388fdb258d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a4a594c8d6ccaa27b5328c6388fdb258d">SVF::VersionedFlowSensitive::meldLabelingTime</a></div><div class="ttdeci">double meldLabelingTime</div><div class="ttdoc">Time to meld label SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00237">VersionedFlowSensitive.h:237</a></div></div>
|
|
1125
1125
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph< SVFVar, SVFStmt >::const_iterator</a></div><div class="ttdeci">IDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00343">GenericGraph.h:343</a></div></div>
|
|
1126
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a207ae4d1f2e0ccab8e36add0a45578af"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a207ae4d1f2e0ccab8e36add0a45578af">SVF::VersionedFlowSensitive::numPrelabelVersions</a></div><div class="ttdeci">u32_t numPrelabelVersions</div><div class="ttdoc">Number of versions created during prelabeling. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1126
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a207ae4d1f2e0ccab8e36add0a45578af"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a207ae4d1f2e0ccab8e36add0a45578af">SVF::VersionedFlowSensitive::numPrelabelVersions</a></div><div class="ttdeci">u32_t numPrelabelVersions</div><div class="ttdoc">Number of versions created during prelabeling. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00234">VersionedFlowSensitive.h:234</a></div></div>
|
|
1127
1127
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aac88b67b49cbd72912ff586d30197ffb"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aac88b67b49cbd72912ff586d30197ffb">SVF::FlowSensitive::FlowSensitive</a></div><div class="ttdeci">FlowSensitive(SVFIR *_pag, PTATY type=FSSPARSE_WPA)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00061">FlowSensitive.h:61</a></div></div>
|
|
1128
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af15bb6be283fee2fcc4b1fb7d8190451"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af15bb6be283fee2fcc4b1fb7d8190451">SVF::VersionedFlowSensitive::versionPropTime</a></div><div class="ttdeci">double versionPropTime</div><div class="ttdoc">Time to propagate versions to versions which rely on them. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1128
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af15bb6be283fee2fcc4b1fb7d8190451"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af15bb6be283fee2fcc4b1fb7d8190451">SVF::VersionedFlowSensitive::versionPropTime</a></div><div class="ttdeci">double versionPropTime</div><div class="ttdoc">Time to propagate versions to versions which rely on them. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00238">VersionedFlowSensitive.h:238</a></div></div>
|
|
1129
1129
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
|
|
1130
1130
|
<div class="ttc" id="cJSON_8cpp_html_a3f9a0d3265a6254722587175dac3e4dc"><div class="ttname"><a href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a></div><div class="ttdeci">newitem type</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02739">cJSON.cpp:2739</a></div></div>
|
|
1131
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aff5029fca933376be1fa374bec790da6"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aff5029fca933376be1fa374bec790da6">SVF::VersionedFlowSensitive::numPrelabeledNodes</a></div><div class="ttdeci">u32_t numPrelabeledNodes</div><div class="ttdoc">Additional statistics. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1131
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aff5029fca933376be1fa374bec790da6"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aff5029fca933376be1fa374bec790da6">SVF::VersionedFlowSensitive::numPrelabeledNodes</a></div><div class="ttdeci">u32_t numPrelabeledNodes</div><div class="ttdoc">Additional statistics. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00233">VersionedFlowSensitive.h:233</a></div></div>
|
|
1132
1132
|
<div class="ttc" id="classSVF_1_1Options_html_a7704ff30e6fc5043313adf5c655bcd4a"><div class="ttname"><a href="classSVF_1_1Options.html#a7704ff30e6fc5043313adf5c655bcd4a">SVF::Options::OPTSVFG</a></div><div class="ttdeci">static llvm::cl::opt< bool > OPTSVFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00159">Options.h:159</a></div></div>
|
|
1133
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a77a5dd9578def9a8e2b48e8b90d9b996"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a77a5dd9578def9a8e2b48e8b90d9b996">SVF::VersionedFlowSensitive::prelabelingTime</a></div><div class="ttdeci">double prelabelingTime</div><div class="ttdoc">Time to prelabel SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1133
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a77a5dd9578def9a8e2b48e8b90d9b996"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a77a5dd9578def9a8e2b48e8b90d9b996">SVF::VersionedFlowSensitive::prelabelingTime</a></div><div class="ttdeci">double prelabelingTime</div><div class="ttdoc">Time to prelabel SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00236">VersionedFlowSensitive.h:236</a></div></div>
|
|
1134
1134
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00142">PointerAnalysis.h:142</a></div></div>
|
|
1135
1135
|
</div><!-- fragment -->
|
|
1136
1136
|
</div>
|
|
@@ -1173,7 +1173,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1173
1173
|
<p>Return key into vPtD for address-taken var of a specific version. </p>
|
|
1174
1174
|
|
|
1175
1175
|
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8cpp_source.html#l00024">24</a> of file <a class="el" href="VersionedFlowSensitive_8cpp_source.html">VersionedFlowSensitive.cpp</a>.</p>
|
|
1176
|
-
<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  assert(version != <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">invalidVersion</a> && <span class="stringliteral">"VersionedFlowSensitive::atKey: trying to use an invalid version!"</span>);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">return</span> std::make_pair(var, version);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3d44a343a2e3f5d276fd1b069c92e112"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">SVF::VersionedFlowSensitive::invalidVersion</a></div><div class="ttdeci">static const Version invalidVersion</div><div class="ttdoc">If this version appears, there has been an error. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1176
|
+
<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  assert(version != <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">invalidVersion</a> && <span class="stringliteral">"VersionedFlowSensitive::atKey: trying to use an invalid version!"</span>);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">return</span> std::make_pair(var, version);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3d44a343a2e3f5d276fd1b069c92e112"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">SVF::VersionedFlowSensitive::invalidVersion</a></div><div class="ttdeci">static const Version invalidVersion</div><div class="ttdoc">If this version appears, there has been an error. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00048">VersionedFlowSensitive.h:48</a></div></div>
|
|
1177
1177
|
</div><!-- fragment -->
|
|
1178
1178
|
</div>
|
|
1179
1179
|
</div>
|
|
@@ -1206,7 +1206,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1206
1206
|
|
|
1207
1207
|
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8cpp_source.html#l00467">467</a> of file <a class="el" href="VersionedFlowSensitive_8cpp_source.html">VersionedFlowSensitive.cpp</a>.</p>
|
|
1208
1208
|
<div class="fragment"><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> {</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a11ddfa1faebf56e74e6dcc53e16142e1">deltaMap</a>.resize(<a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">getTotalNodeNum</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> </div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="comment">// Call block nodes corresponding to all delta nodes.</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const CallICFGNode *></a> deltaCBNs;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFG.html#a225a91c04afac6a8fe198e9860890a52">SVFG::const_iterator</a> it = <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  {</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l = it->first;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> *s = it->second;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> </div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="comment">// Cases:</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="comment">// * Function entry: can get new incoming indirect edges through ind. callsites.</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="comment">// * Callsite returns: can get new incoming indirect edges if the callsite is indirect.</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="comment">// * Otherwise: static.</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordtype">bool</span> isDelta = <span class="keyword">false</span>;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fn = <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1SVFG.html#ae2cff3c963136f474fac0a66aa8cff7b">isFunEntrySVFGNode</a>(s))</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a> callsites;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d">ander</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#a9a4b0c6672288b9201ab254b4c49548d">getIndCallSitesInvokingCallee</a>(fn, callsites);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  isDelta = !callsites.empty();</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> </div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">if</span> (isDelta)</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="comment">// TODO: could we use deltaCBNs in the call above, avoiding this loop?</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cbn : callsites) deltaCBNs.insert(cbn);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cbn = <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1SVFG.html#ad189e45b0c810e68566ccc3bdb3f2e59">isCallSiteRetSVFGNode</a>(s))</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  isDelta = cbn->isIndirectCall();</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">if</span> (isDelta) deltaCBNs.insert(cbn);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a11ddfa1faebf56e74e6dcc53e16142e1">deltaMap</a>[l] = isDelta;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  }</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> </div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aee97e196225aaad29c0bd31d3ccbabf6">deltaSourceMap</a>.resize(<a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">getTotalNodeNum</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> </div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFG.html#a225a91c04afac6a8fe198e9860890a52">SVFG::const_iterator</a> it = <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l = it->first;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> *s = it->second;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cbn = SVFUtil::dyn_cast<CallICFGNode>(s-><a class="code" href="classSVF_1_1VFGNode.html#a0675465e11d1d42ee7e2b7ab3c5de829">getICFGNode</a>()))</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">if</span> (deltaCBNs.find(cbn) != deltaCBNs.end()) <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aee97e196225aaad29c0bd31d3ccbabf6">deltaSourceMap</a>[l] = <span class="keyword">true</span>;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> </div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="comment">// TODO: this is an over-approximation but it sound, marking every formal out as</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="comment">// a delta-source.</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordflow">if</span> (SVFUtil::isa<FormalOUTSVFGNode>(s)) <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aee97e196225aaad29c0bd31d3ccbabf6">deltaSourceMap</a>[l] = <span class="keyword">true</span>;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  }</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
|
|
1209
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a11ddfa1faebf56e74e6dcc53e16142e1"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a11ddfa1faebf56e74e6dcc53e16142e1">SVF::VersionedFlowSensitive::deltaMap</a></div><div class="ttdeci">std::vector< bool > deltaMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1209
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a11ddfa1faebf56e74e6dcc53e16142e1"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a11ddfa1faebf56e74e6dcc53e16142e1">SVF::VersionedFlowSensitive::deltaMap</a></div><div class="ttdeci">std::vector< bool > deltaMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00218">VersionedFlowSensitive.h:218</a></div></div>
|
|
1210
1210
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aae032e5f5d53b131d0112dc8faa464a9"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">SVF::FlowSensitive::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00246">FlowSensitive.h:246</a></div></div>
|
|
1211
1211
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a8c8d16036008f87c7811586047599858"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">SVF::GenericGraph::getTotalNodeNum</a></div><div class="ttdeci">u32_t getTotalNodeNum() const</div><div class="ttdoc">Get total number of node/edge. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00418">GenericGraph.h:418</a></div></div>
|
|
1212
1212
|
<div class="ttc" id="classSVF_1_1VFG_html_a225a91c04afac6a8fe198e9860890a52"><div class="ttname"><a href="classSVF_1_1VFG.html#a225a91c04afac6a8fe198e9860890a52">SVF::VFG::const_iterator</a></div><div class="ttdeci">VFGNodeIDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00081">VFG.h:81</a></div></div>
|
|
@@ -1214,7 +1214,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1214
1214
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00125">BasicTypes.h:125</a></div></div>
|
|
1215
1215
|
<div class="ttc" id="classSVF_1_1VFGNode_html_a0675465e11d1d42ee7e2b7ab3c5de829"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a0675465e11d1d42ee7e2b7ab3c5de829">SVF::VFGNode::getICFGNode</a></div><div class="ttdeci">virtual const ICFGNode * getICFGNode() const</div><div class="ttdoc">Return corresponding ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00072">VFGNode.h:72</a></div></div>
|
|
1216
1216
|
<div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_adbedb15ac0f9395c5264f087a63bad3b"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">SVF::PTACallGraphEdge::CallInstSet</a></div><div class="ttdeci">Set< const CallICFGNode * > CallInstSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00055">PTACallGraph.h:55</a></div></div>
|
|
1217
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aee97e196225aaad29c0bd31d3ccbabf6"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aee97e196225aaad29c0bd31d3ccbabf6">SVF::VersionedFlowSensitive::deltaSourceMap</a></div><div class="ttdeci">std::vector< bool > deltaSourceMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1217
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aee97e196225aaad29c0bd31d3ccbabf6"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aee97e196225aaad29c0bd31d3ccbabf6">SVF::VersionedFlowSensitive::deltaSourceMap</a></div><div class="ttdeci">std::vector< bool > deltaSourceMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00223">VersionedFlowSensitive.h:223</a></div></div>
|
|
1218
1218
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
|
|
1219
1219
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a7c9b7e5fe37ae31ba84d167945ca57df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">SVF::PointerAnalysis::getPTACallGraph</a></div><div class="ttdeci">PTACallGraph * getPTACallGraph() const</div><div class="ttdoc">Return call graph. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00174">PointerAnalysis.h:174</a></div></div>
|
|
1220
1220
|
<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#l00105">SVFBasicTypes.h:105</a></div></div>
|
|
@@ -1259,9 +1259,9 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1259
1259
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aae032e5f5d53b131d0112dc8faa464a9"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">SVF::FlowSensitive::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00246">FlowSensitive.h:246</a></div></div>
|
|
1260
1260
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a8c8d16036008f87c7811586047599858"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">SVF::GenericGraph::getTotalNodeNum</a></div><div class="ttdeci">u32_t getTotalNodeNum() const</div><div class="ttdoc">Get total number of node/edge. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00418">GenericGraph.h:418</a></div></div>
|
|
1261
1261
|
<div class="ttc" id="classSVF_1_1VFG_html_a225a91c04afac6a8fe198e9860890a52"><div class="ttname"><a href="classSVF_1_1VFG.html#a225a91c04afac6a8fe198e9860890a52">SVF::VFG::const_iterator</a></div><div class="ttdeci">VFGNodeIDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00081">VFG.h:81</a></div></div>
|
|
1262
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a18e25c3871d7cc1a6bb0592ceca90f88"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a18e25c3871d7cc1a6bb0592ceca90f88">SVF::VersionedFlowSensitive::isStoreMap</a></div><div class="ttdeci">std::vector< bool > isStoreMap</div><div class="ttdoc">isStoreMap[l] means SVFG node l is a store node. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1262
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a18e25c3871d7cc1a6bb0592ceca90f88"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a18e25c3871d7cc1a6bb0592ceca90f88">SVF::VersionedFlowSensitive::isStoreMap</a></div><div class="ttdeci">std::vector< bool > isStoreMap</div><div class="ttdoc">isStoreMap[l] means SVFG node l is a store node. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00226">VersionedFlowSensitive.h:226</a></div></div>
|
|
1263
1263
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
|
|
1264
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a6bb3db072db0b899f306b37f1146f83d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a6bb3db072db0b899f306b37f1146f83d">SVF::VersionedFlowSensitive::isLoadMap</a></div><div class="ttdeci">std::vector< bool > isLoadMap</div><div class="ttdoc">isLoadMap[l] means SVFG node l is a load node. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1264
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a6bb3db072db0b899f306b37f1146f83d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a6bb3db072db0b899f306b37f1146f83d">SVF::VersionedFlowSensitive::isLoadMap</a></div><div class="ttdeci">std::vector< bool > isLoadMap</div><div class="ttdoc">isLoadMap[l] means SVFG node l is a load node. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00229">VersionedFlowSensitive.h:229</a></div></div>
|
|
1265
1265
|
</div><!-- fragment -->
|
|
1266
1266
|
</div>
|
|
1267
1267
|
</div>
|
|
@@ -1291,8 +1291,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1291
1291
|
|
|
1292
1292
|
<p>Methods to support type inquiry through isa, cast, and dyn_cast. </p>
|
|
1293
1293
|
|
|
1294
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
1295
|
-
<div class="fragment"><div class="line"><a name="
|
|
1294
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00070">70</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
1295
|
+
<div class="fragment"><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div></div><!-- fragment -->
|
|
1296
1296
|
</div>
|
|
1297
1297
|
</div>
|
|
1298
1298
|
<a id="abe1874f12ba05b4f453604c6d91598d6"></a>
|
|
@@ -1319,8 +1319,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1319
1319
|
</table>
|
|
1320
1320
|
</div><div class="memdoc">
|
|
1321
1321
|
|
|
1322
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
1323
|
-
<div class="fragment"><div class="line"><a name="
|
|
1322
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00074">74</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
1323
|
+
<div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> pta->getAnalysisTy() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9">VFS_WPA</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9">SVF::PointerAnalysis::VFS_WPA</a></div><div class="ttdoc">Versioned sparse flow-sensitive WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00075">PointerAnalysis.h:75</a></div></div>
|
|
1324
1324
|
</div><!-- fragment -->
|
|
1325
1325
|
</div>
|
|
1326
1326
|
</div>
|
|
@@ -1355,7 +1355,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1355
1355
|
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8cpp_source.html#l00773">773</a> of file <a class="el" href="VersionedFlowSensitive_8cpp_source.html">VersionedFlowSensitive.cpp</a>.</p>
|
|
1356
1356
|
<div class="fragment"><div class="line"><a name="l00774"></a><span class="lineno"> 774</span> {</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  std::vector<std::pair<unsigned, unsigned>> keys;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> pit = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); pit != <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++pit)</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  {</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keywordtype">unsigned</span> occ = 1;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <span class="keywordtype">unsigned</span> v = pit->first;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#af34d8a738db4f40addc1de930e79654f">Options::PredictPtOcc</a> && <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(v) != <span class="keyword">nullptr</span>) occ = <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438">stmtReliance</a>[v].size() + 1;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  assert(occ != 0);</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  keys.push_back(std::make_pair(v, occ));</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  }</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> </div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">PointsTo::MappingPtr</a> nodeMapping =</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  std::make_shared<std::vector<NodeID>>(<a class="code" href="classSVF_1_1NodeIDAllocator_1_1Clusterer.html#a33d502a0bd49307cd824e34b73157b9b">NodeIDAllocator::Clusterer::cluster</a>(<a class="code" href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d">ander</a>, keys, <a class="code" href="classSVF_1_1FlowSensitive.html#adba7ffe68ae7edce9b3aa896f978da6b">candidateMappings</a>, <span class="stringliteral">"aux-ander"</span>));</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">PointsTo::MappingPtr</a> reverseNodeMapping =</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  std::make_shared<std::vector<NodeID>>(<a class="code" href="classSVF_1_1NodeIDAllocator_1_1Clusterer.html#a36b25188130f4c21d145c950a70d616f">NodeIDAllocator::Clusterer::getReverseNodeMapping</a>(*nodeMapping));</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span> </div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <a class="code" href="classSVF_1_1PointsTo.html#a84eca4c7fc833f8ca4d119cd4da08ca8">PointsTo::setCurrentBestNodeMapping</a>(nodeMapping, reverseNodeMapping);</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
|
|
1357
1357
|
<div class="ttc" id="classSVF_1_1Options_html_af34d8a738db4f40addc1de930e79654f"><div class="ttname"><a href="classSVF_1_1Options.html#af34d8a738db4f40addc1de930e79654f">SVF::Options::PredictPtOcc</a></div><div class="ttdeci">static const llvm::cl::opt< bool > PredictPtOcc</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00065">Options.h:65</a></div></div>
|
|
1358
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af0859eb2a5b46c45aa4314e6e54f4438"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438">SVF::VersionedFlowSensitive::stmtReliance</a></div><div class="ttdeci">Map< NodeID, Map< Version, NodeBS > > stmtReliance</div><div class="ttdoc">o x version -> statement nodes which rely on that o/version. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1358
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af0859eb2a5b46c45aa4314e6e54f4438"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438">SVF::VersionedFlowSensitive::stmtReliance</a></div><div class="ttdeci">Map< NodeID, Map< Version, NodeBS > > stmtReliance</div><div class="ttdoc">o x version -> statement nodes which rely on that o/version. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00196">VersionedFlowSensitive.h:196</a></div></div>
|
|
1359
1359
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
|
|
1360
1360
|
<div class="ttc" id="classSVF_1_1PointsTo_html_a849f670b38cb6f65fc23707a212591c7"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">SVF::PointsTo::MappingPtr</a></div><div class="ttdeci">std::shared_ptr< std::vector< NodeID > > MappingPtr</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00042">PointsTo.h:42</a></div></div>
|
|
1361
1361
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_ac213302cf5c7cdf3b66f7b18649d0fbc"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVF::GenericGraph< SVFVar, SVFStmt >::iterator</a></div><div class="ttdeci">IDToNodeMapTy::iterator iterator</div><div class="ttdoc">Node Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00342">GenericGraph.h:342</a></div></div>
|
|
@@ -1395,8 +1395,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1395
1395
|
|
|
1396
1396
|
<p>Create single instance of versioned flow-sensitive points-to analysis. </p>
|
|
1397
1397
|
|
|
1398
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
1399
|
-
<div class="fragment"><div class="line"><a name="
|
|
1398
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00081">81</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
1399
|
+
<div class="fragment"><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ab88b7a966177e620c552d507b3763e17">VersionedFlowSensitive</a>(_pag);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a>-><a class="code" href="classSVF_1_1FlowSensitive.html#a267f7198600dde3054feb40def7a6681">analyze</a>();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a53b8a881400d7b353133c68295812efb"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">SVF::VersionedFlowSensitive::vfspta</a></div><div class="ttdeci">static VersionedFlowSensitive * vfspta</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00241">VersionedFlowSensitive.h:241</a></div></div>
|
|
1400
1400
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_ab88b7a966177e620c552d507b3763e17"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#ab88b7a966177e620c552d507b3763e17">SVF::VersionedFlowSensitive::VersionedFlowSensitive</a></div><div class="ttdeci">VersionedFlowSensitive(SVFIR *_pag, PTATY type=VFS_WPA)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00030">VersionedFlowSensitive.cpp:30</a></div></div>
|
|
1401
1401
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a267f7198600dde3054feb40def7a6681"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a267f7198600dde3054feb40def7a6681">SVF::FlowSensitive::analyze</a></div><div class="ttdeci">virtual void analyze()</div><div class="ttdoc">Flow sensitive analysis. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00082">FlowSensitive.cpp:82</a></div></div>
|
|
1402
1402
|
</div><!-- fragment -->
|
|
@@ -1428,7 +1428,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1428
1428
|
<p>Returns true if l is a delta node, i.e., may get a new incoming indirect edge due to on-the-fly callgraph construction. </p>
|
|
1429
1429
|
|
|
1430
1430
|
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8cpp_source.html#l00432">432</a> of file <a class="el" href="VersionedFlowSensitive_8cpp_source.html">VersionedFlowSensitive.cpp</a>.</p>
|
|
1431
|
-
<div class="fragment"><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  assert(l < <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a11ddfa1faebf56e74e6dcc53e16142e1">deltaMap</a>.size() && <span class="stringliteral">"VFS::delta: deltaMap is missing SVFG nodes!"</span>);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a11ddfa1faebf56e74e6dcc53e16142e1">deltaMap</a>[l];</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a11ddfa1faebf56e74e6dcc53e16142e1"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a11ddfa1faebf56e74e6dcc53e16142e1">SVF::VersionedFlowSensitive::deltaMap</a></div><div class="ttdeci">std::vector< bool > deltaMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1431
|
+
<div class="fragment"><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  assert(l < <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a11ddfa1faebf56e74e6dcc53e16142e1">deltaMap</a>.size() && <span class="stringliteral">"VFS::delta: deltaMap is missing SVFG nodes!"</span>);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a11ddfa1faebf56e74e6dcc53e16142e1">deltaMap</a>[l];</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a11ddfa1faebf56e74e6dcc53e16142e1"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a11ddfa1faebf56e74e6dcc53e16142e1">SVF::VersionedFlowSensitive::deltaMap</a></div><div class="ttdeci">std::vector< bool > deltaMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00218">VersionedFlowSensitive.h:218</a></div></div>
|
|
1432
1432
|
</div><!-- fragment -->
|
|
1433
1433
|
</div>
|
|
1434
1434
|
</div>
|
|
@@ -1458,7 +1458,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1458
1458
|
<p>Returns true if l is a delta-source node, i.e., may get a new outgoing indirect edge to a delta node due to on-the-fly callgraph construction. </p>
|
|
1459
1459
|
|
|
1460
1460
|
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8cpp_source.html#l00438">438</a> of file <a class="el" href="VersionedFlowSensitive_8cpp_source.html">VersionedFlowSensitive.cpp</a>.</p>
|
|
1461
|
-
<div class="fragment"><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  assert(l < <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aee97e196225aaad29c0bd31d3ccbabf6">deltaSourceMap</a>.size() && <span class="stringliteral">"VFS::delta: deltaSourceMap is missing SVFG nodes!"</span>);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aee97e196225aaad29c0bd31d3ccbabf6">deltaSourceMap</a>[l];</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aee97e196225aaad29c0bd31d3ccbabf6"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aee97e196225aaad29c0bd31d3ccbabf6">SVF::VersionedFlowSensitive::deltaSourceMap</a></div><div class="ttdeci">std::vector< bool > deltaSourceMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1461
|
+
<div class="fragment"><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  assert(l < <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aee97e196225aaad29c0bd31d3ccbabf6">deltaSourceMap</a>.size() && <span class="stringliteral">"VFS::delta: deltaSourceMap is missing SVFG nodes!"</span>);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aee97e196225aaad29c0bd31d3ccbabf6">deltaSourceMap</a>[l];</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aee97e196225aaad29c0bd31d3ccbabf6"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aee97e196225aaad29c0bd31d3ccbabf6">SVF::VersionedFlowSensitive::deltaSourceMap</a></div><div class="ttdeci">std::vector< bool > deltaSourceMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00223">VersionedFlowSensitive.h:223</a></div></div>
|
|
1462
1462
|
</div><!-- fragment -->
|
|
1463
1463
|
</div>
|
|
1464
1464
|
</div>
|
|
@@ -1491,14 +1491,14 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1491
1491
|
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8cpp_source.html#l00900">900</a> of file <a class="el" href="VersionedFlowSensitive_8cpp_source.html">VersionedFlowSensitive.cpp</a>.</p>
|
|
1492
1492
|
<div class="fragment"><div class="line"><a name="l00901"></a><span class="lineno"> 901</span> {</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"# LocVersion Maps\n"</span>;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVFG::iterator</a> it = <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  {</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> loc = it->first;</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <span class="keywordtype">bool</span> locPrinted = <span class="keyword">false</span>;</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aa689d29ead80303b1ef1e1a91f31c296">LocVersionMap</a> *lvm :</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  {</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  &<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">consume</a>, &<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a16224ee60494bb1fdf1c8a1026fbe7ab">yield</a></div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  })</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  {</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <span class="keywordflow">if</span> (lvm->at(loc).empty()) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <span class="keywordflow">if</span> (!locPrinted)</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  {</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">" "</span> << <span class="stringliteral">"SVFG node "</span> << loc << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  locPrinted = <span class="keyword">true</span>;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  }</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span> </div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">" "</span> << (lvm == &<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">consume</a> ? <span class="stringliteral">"Consume "</span> : <span class="stringliteral">"Yield "</span>) << <span class="stringliteral">": "</span>;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span> </div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <span class="keywordtype">bool</span> first = <span class="keyword">true</span>;</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> ObjToVersionMap::value_type &ov : lvm->at(loc))</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  {</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o = ov.first;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v = ov.second;</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << (first ? <span class="stringliteral">""</span> : <span class="stringliteral">", "</span>) << <span class="stringliteral">"<"</span> << o << <span class="stringliteral">", "</span> << v << <span class="stringliteral">">"</span>;</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  first = <span class="keyword">false</span>;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  }</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span> </div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  }</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  }</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span> </div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
|
|
1493
1493
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aae032e5f5d53b131d0112dc8faa464a9"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">SVF::FlowSensitive::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00246">FlowSensitive.h:246</a></div></div>
|
|
1494
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aa689d29ead80303b1ef1e1a91f31c296"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aa689d29ead80303b1ef1e1a91f31c296">SVF::VersionedFlowSensitive::LocVersionMap</a></div><div class="ttdeci">std::vector< ObjToVersionMap > LocVersionMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1494
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aa689d29ead80303b1ef1e1a91f31c296"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aa689d29ead80303b1ef1e1a91f31c296">SVF::VersionedFlowSensitive::LocVersionMap</a></div><div class="ttdeci">std::vector< ObjToVersionMap > LocVersionMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00043">VersionedFlowSensitive.h:43</a></div></div>
|
|
1495
1495
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
1496
1496
|
<div class="ttc" id="namespaceSVF_html_a9ec7a8dc63411ee3724a25a59191be0c"><div class="ttname"><a href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">SVF::Version</a></div><div class="ttdeci">unsigned Version</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00133">SVFBasicTypes.h:133</a></div></div>
|
|
1497
1497
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
|
|
1498
1498
|
<div class="ttc" id="classSVF_1_1VFG_html_a241d0489bf0315460e2b07db87e7847c"><div class="ttname"><a href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVF::VFG::iterator</a></div><div class="ttdeci">VFGNodeIDToNodeMapTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00080">VFG.h:80</a></div></div>
|
|
1499
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2e4e6a84cbfd553ad9cca8fdf9fd4a8d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">SVF::VersionedFlowSensitive::consume</a></div><div class="ttdeci">LocVersionMap consume</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1499
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2e4e6a84cbfd553ad9cca8fdf9fd4a8d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">SVF::VersionedFlowSensitive::consume</a></div><div class="ttdeci">LocVersionMap consume</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00189">VersionedFlowSensitive.h:189</a></div></div>
|
|
1500
1500
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
1501
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a16224ee60494bb1fdf1c8a1026fbe7ab"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a16224ee60494bb1fdf1c8a1026fbe7ab">SVF::VersionedFlowSensitive::yield</a></div><div class="ttdeci">LocVersionMap yield</div><div class="ttdoc">Actual yield map. Yield analogue to consume. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1501
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a16224ee60494bb1fdf1c8a1026fbe7ab"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a16224ee60494bb1fdf1c8a1026fbe7ab">SVF::VersionedFlowSensitive::yield</a></div><div class="ttdeci">LocVersionMap yield</div><div class="ttdoc">Actual yield map. Yield analogue to consume. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00191">VersionedFlowSensitive.h:191</a></div></div>
|
|
1502
1502
|
</div><!-- fragment -->
|
|
1503
1503
|
</div>
|
|
1504
1504
|
</div>
|
|
@@ -1563,8 +1563,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1563
1563
|
<div class="fragment"><div class="line"><a name="l00844"></a><span class="lineno"> 844</span> {</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"# Version reliances\n"</span>;</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a><<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a><<a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a>, std::vector<Version>>>::value_type &ovrv : <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a1dc6e3d4931b53e7e426c0f76d06aeb3">versionReliance</a>)</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  {</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o = ovrv.first;</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">" Object "</span> << o << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a><<a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a>, std::vector<Version>>::value_type& vrv : ovrv.second)</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  {</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v = vrv.first;</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">" Version "</span> << v << <span class="stringliteral">" is a reliance for: "</span>;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> </div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  <span class="keywordtype">bool</span> first = <span class="keyword">true</span>;</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> rv : vrv.second)</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  {</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="keywordflow">if</span> (!first)</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  {</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">", "</span>;</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  }</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> </div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << rv;</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  first = <span class="keyword">false</span>;</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  }</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span> </div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  }</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  }</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span> </div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"# Statement reliances\n"</span>;</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a><<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<Version, NodeBS></a>>::value_type &ovss : <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438">stmtReliance</a>)</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  {</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o = ovss.first;</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">" Object "</span> << o << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span> </div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<Version, NodeBS>::value_type</a> &vss : ovss.second)</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  {</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v = vss.first;</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">" Version "</span> << v << <span class="stringliteral">" is a reliance for statements: "</span>;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> </div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> &ss = vss.second;</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="keywordtype">bool</span> first = <span class="keyword">true</span>;</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> s : ss)</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  {</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keywordflow">if</span> (!first)</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  {</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">", "</span>;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  }</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span> </div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << s;</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  first = <span class="keyword">false</span>;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  }</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span> </div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  }</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  }</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span> }</div><div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
1564
1564
|
<div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00110">SVFBasicTypes.h:110</a></div></div>
|
|
1565
1565
|
<div class="ttc" id="namespaceSVF_html_a9ec7a8dc63411ee3724a25a59191be0c"><div class="ttname"><a href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">SVF::Version</a></div><div class="ttdeci">unsigned Version</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00133">SVFBasicTypes.h:133</a></div></div>
|
|
1566
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af0859eb2a5b46c45aa4314e6e54f4438"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438">SVF::VersionedFlowSensitive::stmtReliance</a></div><div class="ttdeci">Map< NodeID, Map< Version, NodeBS > > stmtReliance</div><div class="ttdoc">o x version -> statement nodes which rely on that o/version. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1567
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a1dc6e3d4931b53e7e426c0f76d06aeb3"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a1dc6e3d4931b53e7e426c0f76d06aeb3">SVF::VersionedFlowSensitive::versionReliance</a></div><div class="ttdeci">VersionRelianceMap versionReliance</div><div class="ttdoc">o -> (version -> versions which rely on it). </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1566
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af0859eb2a5b46c45aa4314e6e54f4438"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438">SVF::VersionedFlowSensitive::stmtReliance</a></div><div class="ttdeci">Map< NodeID, Map< Version, NodeBS > > stmtReliance</div><div class="ttdoc">o x version -> statement nodes which rely on that o/version. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00196">VersionedFlowSensitive.h:196</a></div></div>
|
|
1567
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a1dc6e3d4931b53e7e426c0f76d06aeb3"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a1dc6e3d4931b53e7e426c0f76d06aeb3">SVF::VersionedFlowSensitive::versionReliance</a></div><div class="ttdeci">VersionRelianceMap versionReliance</div><div class="ttdoc">o -> (version -> versions which rely on it). </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00194">VersionedFlowSensitive.h:194</a></div></div>
|
|
1568
1568
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
1569
1569
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
|
|
1570
1570
|
</div><!-- fragment -->
|
|
@@ -1639,7 +1639,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1639
1639
|
<p>Returns the consumed version of o at l. If no such version exists, returns invalidVersion. </p>
|
|
1640
1640
|
|
|
1641
1641
|
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8cpp_source.html#l00803">803</a> of file <a class="el" href="VersionedFlowSensitive_8cpp_source.html">VersionedFlowSensitive.cpp</a>.</p>
|
|
1642
|
-
<div class="fragment"><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> {</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a6b398d59fc276980dd2d6d48a8675068">getVersion</a>(l, o, <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">consume</a>);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2e4e6a84cbfd553ad9cca8fdf9fd4a8d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">SVF::VersionedFlowSensitive::consume</a></div><div class="ttdeci">LocVersionMap consume</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1642
|
+
<div class="fragment"><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> {</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a6b398d59fc276980dd2d6d48a8675068">getVersion</a>(l, o, <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">consume</a>);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2e4e6a84cbfd553ad9cca8fdf9fd4a8d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">SVF::VersionedFlowSensitive::consume</a></div><div class="ttdeci">LocVersionMap consume</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00189">VersionedFlowSensitive.h:189</a></div></div>
|
|
1643
1643
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a6b398d59fc276980dd2d6d48a8675068"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a6b398d59fc276980dd2d6d48a8675068">SVF::VersionedFlowSensitive::getVersion</a></div><div class="ttdeci">Version getVersion(const NodeID l, const NodeID o, const LocVersionMap &lvm) const</div><div class="ttdoc">Shared code for getConsume and getYield. They wrap this function. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00793">VersionedFlowSensitive.cpp:793</a></div></div>
|
|
1644
1644
|
</div><!-- fragment -->
|
|
1645
1645
|
</div>
|
|
@@ -1681,7 +1681,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1681
1681
|
<p>Returns the versions of o which rely on o:v. </p>
|
|
1682
1682
|
|
|
1683
1683
|
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8cpp_source.html#l00833">833</a> of file <a class="el" href="VersionedFlowSensitive_8cpp_source.html">VersionedFlowSensitive.cpp</a>.</p>
|
|
1684
|
-
<div class="fragment"><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> {</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a1dc6e3d4931b53e7e426c0f76d06aeb3">versionReliance</a>[o][v];</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a1dc6e3d4931b53e7e426c0f76d06aeb3"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a1dc6e3d4931b53e7e426c0f76d06aeb3">SVF::VersionedFlowSensitive::versionReliance</a></div><div class="ttdeci">VersionRelianceMap versionReliance</div><div class="ttdoc">o -> (version -> versions which rely on it). </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1684
|
+
<div class="fragment"><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> {</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a1dc6e3d4931b53e7e426c0f76d06aeb3">versionReliance</a>[o][v];</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a1dc6e3d4931b53e7e426c0f76d06aeb3"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a1dc6e3d4931b53e7e426c0f76d06aeb3">SVF::VersionedFlowSensitive::versionReliance</a></div><div class="ttdeci">VersionRelianceMap versionReliance</div><div class="ttdoc">o -> (version -> versions which rely on it). </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00194">VersionedFlowSensitive.h:194</a></div></div>
|
|
1685
1685
|
</div><!-- fragment -->
|
|
1686
1686
|
</div>
|
|
1687
1687
|
</div>
|
|
@@ -1722,7 +1722,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1722
1722
|
<p>Returns the statements which rely on o:v. </p>
|
|
1723
1723
|
|
|
1724
1724
|
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8cpp_source.html#l00838">838</a> of file <a class="el" href="VersionedFlowSensitive_8cpp_source.html">VersionedFlowSensitive.cpp</a>.</p>
|
|
1725
|
-
<div class="fragment"><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> {</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438">stmtReliance</a>[o][v];</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af0859eb2a5b46c45aa4314e6e54f4438"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438">SVF::VersionedFlowSensitive::stmtReliance</a></div><div class="ttdeci">Map< NodeID, Map< Version, NodeBS > > stmtReliance</div><div class="ttdoc">o x version -> statement nodes which rely on that o/version. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1725
|
+
<div class="fragment"><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> {</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438">stmtReliance</a>[o][v];</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af0859eb2a5b46c45aa4314e6e54f4438"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438">SVF::VersionedFlowSensitive::stmtReliance</a></div><div class="ttdeci">Map< NodeID, Map< Version, NodeBS > > stmtReliance</div><div class="ttdoc">o x version -> statement nodes which rely on that o/version. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00196">VersionedFlowSensitive.h:196</a></div></div>
|
|
1726
1726
|
</div><!-- fragment -->
|
|
1727
1727
|
</div>
|
|
1728
1728
|
</div>
|
|
@@ -1770,10 +1770,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1770
1770
|
|
|
1771
1771
|
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8cpp_source.html#l00793">793</a> of file <a class="el" href="VersionedFlowSensitive_8cpp_source.html">VersionedFlowSensitive.cpp</a>.</p>
|
|
1772
1772
|
<div class="fragment"><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> {</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, NodeID>::const_iterator</a> canonObjectIt = <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2d451d89f99a4bff828b682723df477f">equivalentObject</a>.find(o);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op = canonObjectIt == <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2d451d89f99a4bff828b682723df477f">equivalentObject</a>.end() ? o : canonObjectIt->second;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span> </div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af9a43f48b7d99cc6694f3ae3248fd8e0">ObjToVersionMap</a> &ovm = lvm[l];</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <span class="keyword">const</span> ObjToVersionMap::const_iterator foundVersion = ovm.find(op);</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <span class="keywordflow">return</span> foundVersion == ovm.end() ? <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">invalidVersion</a> : foundVersion->second;</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span> }</div><div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
1773
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2d451d89f99a4bff828b682723df477f"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2d451d89f99a4bff828b682723df477f">SVF::VersionedFlowSensitive::equivalentObject</a></div><div class="ttdeci">Map< NodeID, NodeID > equivalentObject</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1773
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2d451d89f99a4bff828b682723df477f"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2d451d89f99a4bff828b682723df477f">SVF::VersionedFlowSensitive::equivalentObject</a></div><div class="ttdeci">Map< NodeID, NodeID > equivalentObject</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00205">VersionedFlowSensitive.h:205</a></div></div>
|
|
1774
1774
|
<div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00110">SVFBasicTypes.h:110</a></div></div>
|
|
1775
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af9a43f48b7d99cc6694f3ae3248fd8e0"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af9a43f48b7d99cc6694f3ae3248fd8e0">SVF::VersionedFlowSensitive::ObjToVersionMap</a></div><div class="ttdeci">Map< NodeID, Version > ObjToVersionMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1776
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3d44a343a2e3f5d276fd1b069c92e112"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">SVF::VersionedFlowSensitive::invalidVersion</a></div><div class="ttdeci">static const Version invalidVersion</div><div class="ttdoc">If this version appears, there has been an error. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1775
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af9a43f48b7d99cc6694f3ae3248fd8e0"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af9a43f48b7d99cc6694f3ae3248fd8e0">SVF::VersionedFlowSensitive::ObjToVersionMap</a></div><div class="ttdeci">Map< NodeID, Version > ObjToVersionMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00040">VersionedFlowSensitive.h:40</a></div></div>
|
|
1776
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3d44a343a2e3f5d276fd1b069c92e112"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">SVF::VersionedFlowSensitive::invalidVersion</a></div><div class="ttdeci">static const Version invalidVersion</div><div class="ttdoc">If this version appears, there has been an error. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00048">VersionedFlowSensitive.h:48</a></div></div>
|
|
1777
1777
|
</div><!-- fragment -->
|
|
1778
1778
|
</div>
|
|
1779
1779
|
</div>
|
|
@@ -1815,9 +1815,9 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1815
1815
|
|
|
1816
1816
|
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8cpp_source.html#l00808">808</a> of file <a class="el" href="VersionedFlowSensitive_8cpp_source.html">VersionedFlowSensitive.cpp</a>.</p>
|
|
1817
1817
|
<div class="fragment"><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="comment">// Non-store: consume == yield.</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aac920c9a5f13dd147e3c130425e005eb">isStore</a>(l)) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a6b398d59fc276980dd2d6d48a8675068">getVersion</a>(l, o, <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a16224ee60494bb1fdf1c8a1026fbe7ab">yield</a>);</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a6b398d59fc276980dd2d6d48a8675068">getVersion</a>(l, o, <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">consume</a>);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aac920c9a5f13dd147e3c130425e005eb"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aac920c9a5f13dd147e3c130425e005eb">SVF::VersionedFlowSensitive::isStore</a></div><div class="ttdeci">virtual bool isStore(const NodeID l) const</div><div class="ttdoc">Returns true if l is a store node. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00455">VersionedFlowSensitive.cpp:455</a></div></div>
|
|
1818
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2e4e6a84cbfd553ad9cca8fdf9fd4a8d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">SVF::VersionedFlowSensitive::consume</a></div><div class="ttdeci">LocVersionMap consume</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1818
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2e4e6a84cbfd553ad9cca8fdf9fd4a8d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">SVF::VersionedFlowSensitive::consume</a></div><div class="ttdeci">LocVersionMap consume</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00189">VersionedFlowSensitive.h:189</a></div></div>
|
|
1819
1819
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a6b398d59fc276980dd2d6d48a8675068"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a6b398d59fc276980dd2d6d48a8675068">SVF::VersionedFlowSensitive::getVersion</a></div><div class="ttdeci">Version getVersion(const NodeID l, const NodeID o, const LocVersionMap &lvm) const</div><div class="ttdoc">Shared code for getConsume and getYield. They wrap this function. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00793">VersionedFlowSensitive.cpp:793</a></div></div>
|
|
1820
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a16224ee60494bb1fdf1c8a1026fbe7ab"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a16224ee60494bb1fdf1c8a1026fbe7ab">SVF::VersionedFlowSensitive::yield</a></div><div class="ttdeci">LocVersionMap yield</div><div class="ttdoc">Actual yield map. Yield analogue to consume. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1820
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a16224ee60494bb1fdf1c8a1026fbe7ab"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a16224ee60494bb1fdf1c8a1026fbe7ab">SVF::VersionedFlowSensitive::yield</a></div><div class="ttdeci">LocVersionMap yield</div><div class="ttdoc">Actual yield map. Yield analogue to consume. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00191">VersionedFlowSensitive.h:191</a></div></div>
|
|
1821
1821
|
</div><!-- fragment -->
|
|
1822
1822
|
</div>
|
|
1823
1823
|
</div>
|
|
@@ -1854,14 +1854,14 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1854
1854
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a4859864a4c72d5e04c10305e4579e8ee"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a4859864a4c72d5e04c10305e4579e8ee">SVF::BVDataPTAImpl::getVersionedPTDataTy</a></div><div class="ttdeci">VersionedPTDataTy * getVersionedPTDataTy() const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00199">PointerAnalysisImpl.h:199</a></div></div>
|
|
1855
1855
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aae032e5f5d53b131d0112dc8faa464a9"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">SVF::FlowSensitive::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00246">FlowSensitive.h:246</a></div></div>
|
|
1856
1856
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a8c8d16036008f87c7811586047599858"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">SVF::GenericGraph::getTotalNodeNum</a></div><div class="ttdeci">u32_t getTotalNodeNum() const</div><div class="ttdoc">Get total number of node/edge. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00418">GenericGraph.h:418</a></div></div>
|
|
1857
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a03f5f16377daa0258166a73de3e21f07"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a03f5f16377daa0258166a73de3e21f07">SVF::VersionedFlowSensitive::vPtD</a></div><div class="ttdeci">BVDataPTAImpl::VersionedPTDataTy * vPtD</div><div class="ttdoc">Points-to DS for working with versions. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1857
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a03f5f16377daa0258166a73de3e21f07"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a03f5f16377daa0258166a73de3e21f07">SVF::VersionedFlowSensitive::vPtD</a></div><div class="ttdeci">BVDataPTAImpl::VersionedPTDataTy * vPtD</div><div class="ttdoc">Points-to DS for working with versions. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00214">VersionedFlowSensitive.h:214</a></div></div>
|
|
1858
1858
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_ad6243c1317503bed39411dab47c83da7"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ad6243c1317503bed39411dab47c83da7">SVF::FlowSensitive::initialize</a></div><div class="ttdeci">virtual void initialize()</div><div class="ttdoc">Initialize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00046">FlowSensitive.cpp:46</a></div></div>
|
|
1859
1859
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3407cc82ef9806e26b79edb677979014"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3407cc82ef9806e26b79edb677979014">SVF::VersionedFlowSensitive::buildDeltaMaps</a></div><div class="ttdeci">virtual void buildDeltaMaps(void)</div><div class="ttdoc">Fills in deltaMap and deltaSourceMap for the SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00467">VersionedFlowSensitive.cpp:467</a></div></div>
|
|
1860
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2e4e6a84cbfd553ad9cca8fdf9fd4a8d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">SVF::VersionedFlowSensitive::consume</a></div><div class="ttdeci">LocVersionMap consume</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1860
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2e4e6a84cbfd553ad9cca8fdf9fd4a8d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">SVF::VersionedFlowSensitive::consume</a></div><div class="ttdeci">LocVersionMap consume</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00189">VersionedFlowSensitive.h:189</a></div></div>
|
|
1861
1861
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a7d86bc18060c0114a783aa1c3a7e9dda"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a7d86bc18060c0114a783aa1c3a7e9dda">SVF::VersionedFlowSensitive::prelabel</a></div><div class="ttdeci">void prelabel(void)</div><div class="ttdoc">Prelabel the SVFG: set y(o) for stores and c(o) for delta nodes to a new version. ...</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00073">VersionedFlowSensitive.cpp:73</a></div></div>
|
|
1862
1862
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00150">PointerAnalysis.h:150</a></div></div>
|
|
1863
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aaee58f266762146e9fdc08ecfc326b29"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aaee58f266762146e9fdc08ecfc326b29">SVF::VersionedFlowSensitive::VersionedFlowSensitiveStat</a></div><div class="ttdeci">friend class VersionedFlowSensitiveStat</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1864
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a16224ee60494bb1fdf1c8a1026fbe7ab"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a16224ee60494bb1fdf1c8a1026fbe7ab">SVF::VersionedFlowSensitive::yield</a></div><div class="ttdeci">LocVersionMap yield</div><div class="ttdoc">Actual yield map. Yield analogue to consume. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1863
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aaee58f266762146e9fdc08ecfc326b29"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aaee58f266762146e9fdc08ecfc326b29">SVF::VersionedFlowSensitive::VersionedFlowSensitiveStat</a></div><div class="ttdeci">friend class VersionedFlowSensitiveStat</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00034">VersionedFlowSensitive.h:34</a></div></div>
|
|
1864
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a16224ee60494bb1fdf1c8a1026fbe7ab"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a16224ee60494bb1fdf1c8a1026fbe7ab">SVF::VersionedFlowSensitive::yield</a></div><div class="ttdeci">LocVersionMap yield</div><div class="ttdoc">Actual yield map. Yield analogue to consume. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00191">VersionedFlowSensitive.h:191</a></div></div>
|
|
1865
1865
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a275095f60640d862034ad173af3371c3"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a275095f60640d862034ad173af3371c3">SVF::VersionedFlowSensitive::removeAllIndirectSVFGEdges</a></div><div class="ttdeci">void removeAllIndirectSVFGEdges(void)</div><div class="ttdoc">Removes all indirect edges in the SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00524">VersionedFlowSensitive.cpp:524</a></div></div>
|
|
1866
1866
|
</div><!-- fragment -->
|
|
1867
1867
|
</div>
|
|
@@ -1893,7 +1893,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1893
1893
|
<p>Returns true if l is a load node. </p>
|
|
1894
1894
|
|
|
1895
1895
|
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8cpp_source.html#l00461">461</a> of file <a class="el" href="VersionedFlowSensitive_8cpp_source.html">VersionedFlowSensitive.cpp</a>.</p>
|
|
1896
|
-
<div class="fragment"><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  assert(l < <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a6bb3db072db0b899f306b37f1146f83d">isLoadMap</a>.size() && <span class="stringliteral">"VFS::isLoad: isLoadMap is missing SVFG nodes!"</span>);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a6bb3db072db0b899f306b37f1146f83d">isLoadMap</a>[l];</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a6bb3db072db0b899f306b37f1146f83d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a6bb3db072db0b899f306b37f1146f83d">SVF::VersionedFlowSensitive::isLoadMap</a></div><div class="ttdeci">std::vector< bool > isLoadMap</div><div class="ttdoc">isLoadMap[l] means SVFG node l is a load node. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1896
|
+
<div class="fragment"><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  assert(l < <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a6bb3db072db0b899f306b37f1146f83d">isLoadMap</a>.size() && <span class="stringliteral">"VFS::isLoad: isLoadMap is missing SVFG nodes!"</span>);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a6bb3db072db0b899f306b37f1146f83d">isLoadMap</a>[l];</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a6bb3db072db0b899f306b37f1146f83d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a6bb3db072db0b899f306b37f1146f83d">SVF::VersionedFlowSensitive::isLoadMap</a></div><div class="ttdeci">std::vector< bool > isLoadMap</div><div class="ttdoc">isLoadMap[l] means SVFG node l is a load node. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00229">VersionedFlowSensitive.h:229</a></div></div>
|
|
1897
1897
|
</div><!-- fragment -->
|
|
1898
1898
|
</div>
|
|
1899
1899
|
</div>
|
|
@@ -1924,7 +1924,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1924
1924
|
<p>Returns true if l is a store node. </p>
|
|
1925
1925
|
|
|
1926
1926
|
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8cpp_source.html#l00455">455</a> of file <a class="el" href="VersionedFlowSensitive_8cpp_source.html">VersionedFlowSensitive.cpp</a>.</p>
|
|
1927
|
-
<div class="fragment"><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  assert(l < <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a18e25c3871d7cc1a6bb0592ceca90f88">isStoreMap</a>.size() && <span class="stringliteral">"VFS::isStore: isStoreMap is missing SVFG nodes!"</span>);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a18e25c3871d7cc1a6bb0592ceca90f88">isStoreMap</a>[l];</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a18e25c3871d7cc1a6bb0592ceca90f88"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a18e25c3871d7cc1a6bb0592ceca90f88">SVF::VersionedFlowSensitive::isStoreMap</a></div><div class="ttdeci">std::vector< bool > isStoreMap</div><div class="ttdoc">isStoreMap[l] means SVFG node l is a store node. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
1927
|
+
<div class="fragment"><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  assert(l < <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a18e25c3871d7cc1a6bb0592ceca90f88">isStoreMap</a>.size() && <span class="stringliteral">"VFS::isStore: isStoreMap is missing SVFG nodes!"</span>);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a18e25c3871d7cc1a6bb0592ceca90f88">isStoreMap</a>[l];</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a18e25c3871d7cc1a6bb0592ceca90f88"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a18e25c3871d7cc1a6bb0592ceca90f88">SVF::VersionedFlowSensitive::isStoreMap</a></div><div class="ttdeci">std::vector< bool > isStoreMap</div><div class="ttdoc">isStoreMap[l] means SVFG node l is a store node. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00226">VersionedFlowSensitive.h:226</a></div></div>
|
|
1928
1928
|
</div><!-- fragment -->
|
|
1929
1929
|
</div>
|
|
1930
1930
|
</div>
|
|
@@ -1998,43 +1998,43 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1998
1998
|
<div class="fragment"><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  assert(<a class="code" href="classSVF_1_1Options.html#adba18ce8f1496fe2e57a934f11c2dfd9">Options::VersioningThreads</a> > 0 && <span class="stringliteral">"VFS::meldLabel: number of versioning threads must be > 0!"</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// Nodes which have at least one object on them given a prelabel + the Andersen's points-to</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// set of interest so we don't keep calling getPts. For Store nodes, we'll fill that in, for</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// MR nodes, we won't as its getPointsTo is cheap.</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// TODO: preferably we cache both for ease and to avoid the dyn_cast/isa, but Andersen's points-to</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// sets are PointsTo and MR's sets are NodeBS, which are incompatible types. Maybe when we can</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// use std::option.</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  std::vector<std::pair<const SVFGNode *, const PointsTo *>> prelabeledNodes;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// Fast query for the above.</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  std::vector<bool> isPrelabeled(<a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">getTotalNodeNum</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">while</span> (!<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#adfefc0dfa4e7fb4d20fafeaf96a5fa67">vWorklist</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> = <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#adfefc0dfa4e7fb4d20fafeaf96a5fa67">vWorklist</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  isPrelabeled[<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>] = <span class="keyword">true</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> *sn = <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(n);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> *nPts = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a> *store = SVFUtil::dyn_cast<StoreSVFGNode>(sn))</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a> = store->getPAGDstNodeID();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  nPts = &(this-><a class="code" href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d">ander</a>-><a class="code" href="classSVF_1_1Andersen.html#a187285a5bdf9422d9188b2b11b667639">getPts</a>(p));</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  prelabeledNodes.push_back(std::make_pair(sn, nPts));</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// Delta, delta source, store, and load nodes, which require versions during</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">// solving, unlike other nodes with which we can make do with the reliance map.</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  std::vector<NodeID> nodesWhichNeedVersions;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFG.html#a225a91c04afac6a8fe198e9860890a52">SVFG::const_iterator</a> it = <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n = it->first;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a9f9b00551c157f42d1d995e8c4efb54b">delta</a>(n) || <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a3fa5afa4f54e0828ec090fde07b1bfa2">deltaSource</a>(n) || <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aac920c9a5f13dd147e3c130425e005eb">isStore</a>(n) || <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a984a4f929a18f97bfefac0102088a7fd">isLoad</a>(n)) nodesWhichNeedVersions.push_back(n);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  std::mutex *versionMutexes = <span class="keyword">new</span> std::mutex[nodesWhichNeedVersions.size()];</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// Map of footprints to the canonical object "owning" the footprint.</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<std::vector<const IndirectSVFGEdge *></a>, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>> footprintOwner;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  std::queue<NodeID> objectQueue;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aaae8c6858593ed050dcf2c9220228e3e">prelabeledObjects</a>)</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="comment">// "Touch" maps with o so we don't need to lock on them.</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a1dc6e3d4931b53e7e426c0f76d06aeb3">versionReliance</a>[o];</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438">stmtReliance</a>[o];</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  objectQueue.push(o);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  std::mutex objectQueueMutex;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  std::mutex footprintOwnerMutex;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">auto</span> meldVersionWorker = [<span class="keyword">this</span>, &footprintOwner, &objectQueue,</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  &objectQueueMutex, &footprintOwnerMutex, &versionMutexes,</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  &prelabeledNodes, &isPrelabeled, &nodesWhichNeedVersions]</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> thread)</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  std::lock_guard<std::mutex> guard(objectQueueMutex);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// No more objects? Done.</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">if</span> (objectQueue.empty()) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  o = objectQueue.front();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  objectQueue.pop();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="comment">// 1. Compute the SCCs for the nodes on the graph overlay of o.</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">// For starting nodes, we only need those which did prelabeling for o specifically.</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="comment">// TODO: maybe we should move this to prelabel with a map (o -> starting nodes).</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  std::vector<const SVFGNode *> osStartingNodes;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">for</span> (std::pair<const SVFGNode *, const PointsTo *> snPts : prelabeledNodes)</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> *sn = snPts.first;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> *pts = snPts.second;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span> (pts != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">if</span> (pts-><a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(o)) osStartingNodes.push_back(sn);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1MRSVFGNode.html">MRSVFGNode</a> *mr = SVFUtil::dyn_cast<MRSVFGNode>(sn))</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">if</span> (mr->getPointsTo().test(o)) osStartingNodes.push_back(sn);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"VFS::meldLabel: unexpected prelabeled node!"</span>);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  std::vector<int> partOf;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  std::vector<const IndirectSVFGEdge *> footprint;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordtype">unsigned</span> numSCCs = <a class="code" href="classSVF_1_1VersionedFlowSensitive_1_1SCC.html#ad52f6f586168ca4ceaf85cca8dfab825">SCC::detectSCCs</a>(<span class="keyword">this</span>, this-><a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>, o, osStartingNodes, partOf, footprint);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="comment">// 2. Skip any further processing of a footprint we have seen before.</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  std::lock_guard<std::mutex> guard(footprintOwnerMutex);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<std::vector<const IndirectSVFGEdge *></a>, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>>::const_iterator canonOwner</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  = footprintOwner.find(footprint);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span> (canonOwner == footprintOwner.end())</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  this-><a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2d451d89f99a4bff828b682723df477f">equivalentObject</a>[o] = o;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  footprintOwner[footprint] = o;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  this-><a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2d451d89f99a4bff828b682723df477f">equivalentObject</a>[o] = canonOwner->second;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">// Same version and stmt reliance as the canonical. During solving we cannot just reuse</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="comment">// the canonical object's reliance because it may change due to on-the-fly call graph</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="comment">// construction. Something like copy-on-write could be good... probably negligible.</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  this-><a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a1dc6e3d4931b53e7e426c0f76d06aeb3">versionReliance</a>.at(o) = this-><a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a1dc6e3d4931b53e7e426c0f76d06aeb3">versionReliance</a>.at(canonOwner->second);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  this-><a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438">stmtReliance</a>.at(o) = this-><a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438">stmtReliance</a>.at(canonOwner->second);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="comment">// 3. a. Initialise the MeldVersion of prelabeled nodes (SCCs).</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="comment">// b. Initialise a todo list of all the nodes we need to version,</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="comment">// sorted according to topological order.</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="comment">// We will use a map of sccs to meld versions for what is consumed.</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  std::vector<MeldVersion> sccToMeldVersion(numSCCs);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="comment">// At stores, what is consumed is different to what is yielded, so we</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="comment">// maintain that separately.</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, MeldVersion></a> storesYieldedMeldVersion;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="comment">// SVFG nodes of interest -- those part of an SCC from the starting nodes.</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  std::vector<NodeID> todoList;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordtype">unsigned</span> bit = 0;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="comment">// To calculate reachable nodes, we can see what nodes n exist where</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="comment">// partOf[n] != -1. Since the SVFG can be large this can be expensive.</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="comment">// Instead, we can gather this from the edges in the footprint and</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="comment">// the starting nodes (incase such nodes have no edges).</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="comment">// TODO: should be able to do this better: too many redundant inserts.</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<NodeID></a> reachableNodes;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> *sn : osStartingNodes) reachableNodes.insert(sn-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a> *se : footprint)</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  reachableNodes.insert(se->getSrcNode()->getId());</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  reachableNodes.insert(se->getDstNode()->getId());</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n : reachableNodes)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">if</span> (isPrelabeled[n])</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">if</span> (this-><a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aac920c9a5f13dd147e3c130425e005eb">isStore</a>(n)) storesYieldedMeldVersion[n].<span class="keyword">set</span>(bit);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">else</span> sccToMeldVersion[partOf[<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>]].set(bit);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  ++bit;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  todoList.push_back(n);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">// Sort topologically so each nodes is only visited once.</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keyword">auto</span> cmp = [&partOf](<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#a8a1a0a26c50cc4becfc754bb68d1dc6b">a</a>, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>)</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">return</span> partOf[<a class="code" href="cJSON_8cpp.html#a8a1a0a26c50cc4becfc754bb68d1dc6b">a</a>] > partOf[<a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>];</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  };</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  std::sort(todoList.begin(), todoList.end(), cmp);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="comment">// 4. a. Do meld versioning.</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">// b. Determine SCC reliances.</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="comment">// c. Build a footprint for o (all edges which it is found on).</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="comment">// d. Determine which SCCs belong to stores.</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> </div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="comment">// sccReliance[x] = { y_1, y_2, ... } if there exists an edge from a node</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="comment">// in SCC x to SCC y_i.</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  std::vector<Set<int>> sccReliance(numSCCs);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="comment">// Maps SCC to the store it corresponds to or -1 if it doesn't. TODO: unsigned vs signed -- nasty.</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  std::vector<int> storeSCC(numSCCs, -1);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < todoList.size(); ++i)</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n = todoList[i];</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> *sn = this-><a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(n);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> nIsStore = this-><a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aac920c9a5f13dd147e3c130425e005eb">isStore</a>(n);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordtype">int</span> nSCC = partOf[<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>];</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">if</span> (nIsStore) storeSCC[nSCC] = <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="comment">// Given n -> m, the yielded version of n will be melded into m.</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="comment">// For stores, that is in storesYieldedMeldVersion, otherwise, consume == yield and</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="comment">// we can just use sccToMeldVersion.</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a630eeca9c3344d24fa196f7de45bce18">MeldVersion</a> &nMV = nIsStore ? storesYieldedMeldVersion[<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>] : sccToMeldVersion[nSCC];</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a> *e : sn-><a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>())</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1IndirectSVFGEdge.html">IndirectSVFGEdge</a> *ie = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1IndirectSVFGEdge.html">IndirectSVFGEdge</a>>(e);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">if</span> (!ie) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> m = ie-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getId();</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="comment">// Ignoreedges which don't involve o.</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">if</span> (!ie-><a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a30aca718d25924f1babdf348bb0ace71">getPointsTo</a>().<a class="code" href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">test</a>(o)) <span class="keywordflow">continue</span>;</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>  <span class="keywordtype">int</span> mSCC = partOf[m];</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="comment">// There is an edge from the SCC n belongs to to that m belongs to.</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  sccReliance[nSCC].insert(mSCC);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="comment">// Ignore edges to delta nodes (prelabeled consume).</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="comment">// No point propagating when n's SCC == m's SCC (same meld version there)</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="comment">// except when it is a store, because we are actually propagating n's yielded</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="comment">// into m's consumed. Store nodes are in their own SCCs, so it is a self</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="comment">// loop on a store node.</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">if</span> (!this-><a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a9f9b00551c157f42d1d995e8c4efb54b">delta</a>(m) && (nSCC != mSCC || nIsStore))</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  sccToMeldVersion[mSCC] |= nMV;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="comment">// 5. Transform meld versions belonging to SCCs into versions.</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<MeldVersion, Version></a> mvv;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  std::vector<Version> sccToVersion(numSCCs, <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">invalidVersion</a>);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> curVersion = 0;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1WPASolver.html#a21709a0f33b6238afe735cc9fe49ff70">scc</a> = 0; <a class="code" href="classSVF_1_1WPASolver.html#a21709a0f33b6238afe735cc9fe49ff70">scc</a> < sccToMeldVersion.size(); ++<a class="code" href="classSVF_1_1WPASolver.html#a21709a0f33b6238afe735cc9fe49ff70">scc</a>)</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a630eeca9c3344d24fa196f7de45bce18">MeldVersion</a> &mv = sccToMeldVersion[<a class="code" href="classSVF_1_1WPASolver.html#a21709a0f33b6238afe735cc9fe49ff70">scc</a>];</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<MeldVersion, Version>::const_iterator</a> foundVersion = mvv.find(mv);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v = foundVersion == mvv.<a class="code" href="classSVF_1_1CoreBitVector.html#a93cdd9890522cc9fee2451567e0b1f0d">end</a>() ? mvv[mv] = ++curVersion : foundVersion->second;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  sccToVersion[<a class="code" href="classSVF_1_1WPASolver.html#a21709a0f33b6238afe735cc9fe49ff70">scc</a>] = v;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> </div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  sccToMeldVersion.clear();</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="comment">// Same for storesYieldedMeldVersion.</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, Version></a> storesYieldedVersion;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>& nmv : storesYieldedMeldVersion)</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n = nmv.first;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a630eeca9c3344d24fa196f7de45bce18">MeldVersion</a> &mv = nmv.second;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<MeldVersion, Version>::const_iterator</a> foundVersion = mvv.find(mv);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v = foundVersion == mvv.<a class="code" href="classSVF_1_1CoreBitVector.html#a93cdd9890522cc9fee2451567e0b1f0d">end</a>() ? mvv[mv] = ++curVersion : foundVersion->second;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  storesYieldedVersion[<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>] = v;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  storesYieldedMeldVersion.clear();</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  mvv.clear();</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="comment">// 6. From SCC reliance, determine version reliances.</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<Version, std::vector<Version></a>> &osVersionReliance = this-><a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a1dc6e3d4931b53e7e426c0f76d06aeb3">versionReliance</a>.at(o);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1WPASolver.html#a21709a0f33b6238afe735cc9fe49ff70">scc</a> = 0; <a class="code" href="classSVF_1_1WPASolver.html#a21709a0f33b6238afe735cc9fe49ff70">scc</a> < numSCCs; ++<a class="code" href="classSVF_1_1WPASolver.html#a21709a0f33b6238afe735cc9fe49ff70">scc</a>)</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">if</span> (sccReliance[<a class="code" href="classSVF_1_1WPASolver.html#a21709a0f33b6238afe735cc9fe49ff70">scc</a>].empty()) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="comment">// Some consume relies on a yield. When it's a store, we need to pick whether to</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="comment">// use the consume or yield unlike when it is not because they are the same.</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> version</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  = storeSCC[<a class="code" href="classSVF_1_1WPASolver.html#a21709a0f33b6238afe735cc9fe49ff70">scc</a>] != -1 ? storesYieldedVersion[storeSCC[<a class="code" href="classSVF_1_1WPASolver.html#a21709a0f33b6238afe735cc9fe49ff70">scc</a>]] : sccToVersion[<a class="code" href="classSVF_1_1WPASolver.html#a21709a0f33b6238afe735cc9fe49ff70">scc</a>];</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  std::vector<Version> &reliantVersions = osVersionReliance[version];</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">int</span> reliantSCC : sccReliance[<a class="code" href="classSVF_1_1WPASolver.html#a21709a0f33b6238afe735cc9fe49ff70">scc</a>])</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> reliantVersion = sccToVersion[reliantSCC];</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordflow">if</span> (version != reliantVersion)</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="comment">// sccReliance is a set, no need to worry about duplicates.</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  reliantVersions.push_back(reliantVersion);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="comment">// 7. a. Save versions for nodes which need them.</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="comment">// b. Fill in stmtReliance.</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="comment">// TODO: maybe randomise iteration order for less contention? Needs profiling.</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<Version, NodeBS></a> &osStmtReliance = this-><a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438">stmtReliance</a>.at(o);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < nodesWhichNeedVersions.size(); ++i)</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n = nodesWhichNeedVersions[i];</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  std::mutex &mutex = versionMutexes[i];</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> scc = partOf[<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>];</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">if</span> (scc == -1) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> </div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  std::lock_guard<std::mutex> guard(mutex);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> </div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> c = sccToVersion[<a class="code" href="classSVF_1_1WPASolver.html#a21709a0f33b6238afe735cc9fe49ff70">scc</a>];</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">if</span> (c != <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">invalidVersion</a>)</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  this-><a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aabc0a5a7a31b8d880e019773ba960741">setConsume</a>(n, o, c);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">if</span> (this-><a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aac920c9a5f13dd147e3c130425e005eb">isStore</a>(n) || this-><a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a984a4f929a18f97bfefac0102088a7fd">isLoad</a>(n)) osStmtReliance[c].set(n);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> </div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">if</span> (this-><a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aac920c9a5f13dd147e3c130425e005eb">isStore</a>(n))</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<NodeID, Version>::const_iterator</a> yIt = storesYieldedVersion.find(n);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">if</span> (yIt != storesYieldedVersion.end()) this-><a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ac33c7cef2d1d143950820ea48e97e806">setYield</a>(n, o, yIt->second);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  }</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  };</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> </div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  std::vector<std::thread> workers;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < <a class="code" href="classSVF_1_1Options.html#adba18ce8f1496fe2e57a934f11c2dfd9">Options::VersioningThreads</a>; ++i) workers.push_back(std::thread(meldVersionWorker, i));</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">for</span> (std::thread &worker : workers) worker.join();</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keyword">delete</span>[] versionMutexes;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> </div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a4a594c8d6ccaa27b5328c6388fdb258d">meldLabelingTime</a> = (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
|
|
1999
1999
|
<div class="ttc" id="cJSON_8cpp_html_a009ef1d888ab6dbe77e6b42b0b39f1ae"><div class="ttname"><a href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a></div><div class="ttdeci">cJSON * p</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02559">cJSON.cpp:2559</a></div></div>
|
|
2000
2000
|
<div class="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00240">VFGNode.h:240</a></div></div>
|
|
2001
|
-
<div class="ttc" id="classSVF_1_1Andersen_html_a187285a5bdf9422d9188b2b11b667639"><div class="ttname"><a href="classSVF_1_1Andersen.html#a187285a5bdf9422d9188b2b11b667639">SVF::Andersen::getPts</a></div><div class="ttdeci">virtual const PointsTo & getPts(NodeID id)</div><div class="ttdoc">Operation of points-to set. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#
|
|
2001
|
+
<div class="ttc" id="classSVF_1_1Andersen_html_a187285a5bdf9422d9188b2b11b667639"><div class="ttname"><a href="classSVF_1_1Andersen.html#a187285a5bdf9422d9188b2b11b667639">SVF::Andersen::getPts</a></div><div class="ttdeci">virtual const PointsTo & getPts(NodeID id)</div><div class="ttdoc">Operation of points-to set. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00213">Andersen.h:213</a></div></div>
|
|
2002
2002
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aae032e5f5d53b131d0112dc8faa464a9"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">SVF::FlowSensitive::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00246">FlowSensitive.h:246</a></div></div>
|
|
2003
2003
|
<div class="ttc" id="classSVF_1_1WPASolver_html_a21709a0f33b6238afe735cc9fe49ff70"><div class="ttname"><a href="classSVF_1_1WPASolver.html#a21709a0f33b6238afe735cc9fe49ff70">SVF::WPASolver::scc</a></div><div class="ttdeci">SCC * scc</div><div class="ttdoc">SCC. </div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00197">WPASolver.h:197</a></div></div>
|
|
2004
2004
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a8c8d16036008f87c7811586047599858"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">SVF::GenericGraph::getTotalNodeNum</a></div><div class="ttdeci">u32_t getTotalNodeNum() const</div><div class="ttdoc">Get total number of node/edge. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00418">GenericGraph.h:418</a></div></div>
|
|
2005
2005
|
<div class="ttc" id="classSVF_1_1VFG_html_a225a91c04afac6a8fe198e9860890a52"><div class="ttname"><a href="classSVF_1_1VFG.html#a225a91c04afac6a8fe198e9860890a52">SVF::VFG::const_iterator</a></div><div class="ttdeci">VFGNodeIDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00081">VFG.h:81</a></div></div>
|
|
2006
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_adfefc0dfa4e7fb4d20fafeaf96a5fa67"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#adfefc0dfa4e7fb4d20fafeaf96a5fa67">SVF::VersionedFlowSensitive::vWorklist</a></div><div class="ttdeci">FIFOWorkList< NodeID > vWorklist</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2006
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_adfefc0dfa4e7fb4d20fafeaf96a5fa67"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#adfefc0dfa4e7fb4d20fafeaf96a5fa67">SVF::VersionedFlowSensitive::vWorklist</a></div><div class="ttdeci">FIFOWorkList< NodeID > vWorklist</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00209">VersionedFlowSensitive.h:209</a></div></div>
|
|
2007
2007
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
2008
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2d451d89f99a4bff828b682723df477f"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2d451d89f99a4bff828b682723df477f">SVF::VersionedFlowSensitive::equivalentObject</a></div><div class="ttdeci">Map< NodeID, NodeID > equivalentObject</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2009
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a4a594c8d6ccaa27b5328c6388fdb258d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a4a594c8d6ccaa27b5328c6388fdb258d">SVF::VersionedFlowSensitive::meldLabelingTime</a></div><div class="ttdeci">double meldLabelingTime</div><div class="ttdoc">Time to meld label SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2008
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2d451d89f99a4bff828b682723df477f"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2d451d89f99a4bff828b682723df477f">SVF::VersionedFlowSensitive::equivalentObject</a></div><div class="ttdeci">Map< NodeID, NodeID > equivalentObject</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00205">VersionedFlowSensitive.h:205</a></div></div>
|
|
2009
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a4a594c8d6ccaa27b5328c6388fdb258d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a4a594c8d6ccaa27b5328c6388fdb258d">SVF::VersionedFlowSensitive::meldLabelingTime</a></div><div class="ttdeci">double meldLabelingTime</div><div class="ttdoc">Time to meld label SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00237">VersionedFlowSensitive.h:237</a></div></div>
|
|
2010
2010
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_ac33c7cef2d1d143950820ea48e97e806"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#ac33c7cef2d1d143950820ea48e97e806">SVF::VersionedFlowSensitive::setYield</a></div><div class="ttdeci">void setYield(const NodeID l, const NodeID o, const Version v)</div><div class="ttdoc">Sets the yielded version of o at l to v. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00826">VersionedFlowSensitive.cpp:826</a></div></div>
|
|
2011
2011
|
<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>
|
|
2012
2012
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a112f2ede1240c95f9fe810f2882fab80"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">SVF::SparseBitVector::test</a></div><div class="ttdeci">bool test(unsigned Idx) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00706">SparseBitVector.h:706</a></div></div>
|
|
2013
2013
|
<div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00150">SVFG.h:150</a></div></div>
|
|
2014
2014
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aac920c9a5f13dd147e3c130425e005eb"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aac920c9a5f13dd147e3c130425e005eb">SVF::VersionedFlowSensitive::isStore</a></div><div class="ttdeci">virtual bool isStore(const NodeID l) const</div><div class="ttdoc">Returns true if l is a store node. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00455">VersionedFlowSensitive.cpp:455</a></div></div>
|
|
2015
2015
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a9f9b00551c157f42d1d995e8c4efb54b"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a9f9b00551c157f42d1d995e8c4efb54b">SVF::VersionedFlowSensitive::delta</a></div><div class="ttdeci">virtual bool delta(const NodeID l) const</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00432">VersionedFlowSensitive.cpp:432</a></div></div>
|
|
2016
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aaae8c6858593ed050dcf2c9220228e3e"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aaae8c6858593ed050dcf2c9220228e3e">SVF::VersionedFlowSensitive::prelabeledObjects</a></div><div class="ttdeci">Set< NodeID > prelabeledObjects</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2016
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aaae8c6858593ed050dcf2c9220228e3e"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aaae8c6858593ed050dcf2c9220228e3e">SVF::VersionedFlowSensitive::prelabeledObjects</a></div><div class="ttdeci">Set< NodeID > prelabeledObjects</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00211">VersionedFlowSensitive.h:211</a></div></div>
|
|
2017
2017
|
<div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00110">SVFBasicTypes.h:110</a></div></div>
|
|
2018
2018
|
<div class="ttc" id="namespaceSVF_html_a9ec7a8dc63411ee3724a25a59191be0c"><div class="ttname"><a href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">SVF::Version</a></div><div class="ttdeci">unsigned Version</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00133">SVFBasicTypes.h:133</a></div></div>
|
|
2019
2019
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
|
|
2020
2020
|
<div class="ttc" id="classSVF_1_1PointsTo_html_af61271fefa574c39f405fdfee59a8b3f"><div class="ttname"><a href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">SVF::PointsTo::test</a></div><div class="ttdeci">bool test(u32_t n) const</div><div class="ttdoc">Returns true if n is in this set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00127">PointsTo.cpp:127</a></div></div>
|
|
2021
2021
|
<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>
|
|
2022
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af0859eb2a5b46c45aa4314e6e54f4438"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438">SVF::VersionedFlowSensitive::stmtReliance</a></div><div class="ttdeci">Map< NodeID, Map< Version, NodeBS > > stmtReliance</div><div class="ttdoc">o x version -> statement nodes which rely on that o/version. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2022
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af0859eb2a5b46c45aa4314e6e54f4438"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af0859eb2a5b46c45aa4314e6e54f4438">SVF::VersionedFlowSensitive::stmtReliance</a></div><div class="ttdeci">Map< NodeID, Map< Version, NodeBS > > stmtReliance</div><div class="ttdoc">o x version -> statement nodes which rely on that o/version. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00196">VersionedFlowSensitive.h:196</a></div></div>
|
|
2023
2023
|
<div class="ttc" id="cJSON_8cpp_html_ab6e2ea6dc7bd57d1483413449998230a"><div class="ttname"><a href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a></div><div class="ttdeci">cJSON * n</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02558">cJSON.cpp:2558</a></div></div>
|
|
2024
2024
|
<div class="ttc" id="classSVF_1_1MRSVFGNode_html"><div class="ttname"><a href="classSVF_1_1MRSVFGNode.html">SVF::MRSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00042">SVFGNode.h:42</a></div></div>
|
|
2025
2025
|
<div class="ttc" id="cJSON_8h_html_a1a175e87536301df98c805ac0636ad7c"><div class="ttname"><a href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a></div><div class="ttdeci">const cJSON *const b</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00255">cJSON.h:255</a></div></div>
|
|
2026
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a1dc6e3d4931b53e7e426c0f76d06aeb3"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a1dc6e3d4931b53e7e426c0f76d06aeb3">SVF::VersionedFlowSensitive::versionReliance</a></div><div class="ttdeci">VersionRelianceMap versionReliance</div><div class="ttdoc">o -> (version -> versions which rely on it). </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2026
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a1dc6e3d4931b53e7e426c0f76d06aeb3"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a1dc6e3d4931b53e7e426c0f76d06aeb3">SVF::VersionedFlowSensitive::versionReliance</a></div><div class="ttdeci">VersionRelianceMap versionReliance</div><div class="ttdoc">o -> (version -> versions which rely on it). </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00194">VersionedFlowSensitive.h:194</a></div></div>
|
|
2027
2027
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
|
|
2028
2028
|
<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#l00093">GenericGraph.h:93</a></div></div>
|
|
2029
2029
|
<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#l00105">SVFBasicTypes.h:105</a></div></div>
|
|
2030
2030
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a2d9cd758d6f8c5189d9b90b74f43e009"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">SVF::GenericNode::getOutEdges</a></div><div class="ttdeci">const GEdgeSetTy & getOutEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00182">GenericGraph.h:182</a></div></div>
|
|
2031
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a630eeca9c3344d24fa196f7de45bce18"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a630eeca9c3344d24fa196f7de45bce18">SVF::VersionedFlowSensitive::MeldVersion</a></div><div class="ttdeci">CoreBitVector MeldVersion</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2031
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a630eeca9c3344d24fa196f7de45bce18"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a630eeca9c3344d24fa196f7de45bce18">SVF::VersionedFlowSensitive::MeldVersion</a></div><div class="ttdeci">CoreBitVector MeldVersion</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00037">VersionedFlowSensitive.h:37</a></div></div>
|
|
2032
2032
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_1_1SCC_html_ad52f6f586168ca4ceaf85cca8dfab825"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive_1_1SCC.html#ad52f6f586168ca4ceaf85cca8dfab825">SVF::VersionedFlowSensitive::SCC::detectSCCs</a></div><div class="ttdeci">static unsigned detectSCCs(VersionedFlowSensitive *vfs, const SVFG *svfg, const NodeID object, const std::vector< const SVFGNode *> &startingNodes, std::vector< int > &partOf, std::vector< const IndirectSVFGEdge *> &footprint)</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00954">VersionedFlowSensitive.cpp:954</a></div></div>
|
|
2033
|
-
<div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#
|
|
2033
|
+
<div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00046">SVFStat.cpp:46</a></div></div>
|
|
2034
2034
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00150">PointerAnalysis.h:150</a></div></div>
|
|
2035
2035
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3fa5afa4f54e0828ec090fde07b1bfa2"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3fa5afa4f54e0828ec090fde07b1bfa2">SVF::VersionedFlowSensitive::deltaSource</a></div><div class="ttdeci">virtual bool deltaSource(const NodeID l) const</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00438">VersionedFlowSensitive.cpp:438</a></div></div>
|
|
2036
2036
|
<div class="ttc" id="classSVF_1_1CoreBitVector_html_a93cdd9890522cc9fee2451567e0b1f0d"><div class="ttname"><a href="classSVF_1_1CoreBitVector.html#a93cdd9890522cc9fee2451567e0b1f0d">SVF::CoreBitVector::end</a></div><div class="ttdeci">const_iterator end(void) const</div><div class="ttdef"><b>Definition:</b> <a href="CoreBitVector_8cpp_source.html#l00308">CoreBitVector.cpp:308</a></div></div>
|
|
2037
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3d44a343a2e3f5d276fd1b069c92e112"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">SVF::VersionedFlowSensitive::invalidVersion</a></div><div class="ttdeci">static const Version invalidVersion</div><div class="ttdoc">If this version appears, there has been an error. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2037
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3d44a343a2e3f5d276fd1b069c92e112"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">SVF::VersionedFlowSensitive::invalidVersion</a></div><div class="ttdeci">static const Version invalidVersion</div><div class="ttdoc">If this version appears, there has been an error. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00048">VersionedFlowSensitive.h:48</a></div></div>
|
|
2038
2038
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00182">SVFBasicTypes.h:182</a></div></div>
|
|
2039
2039
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aabc0a5a7a31b8d880e019773ba960741"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aabc0a5a7a31b8d880e019773ba960741">SVF::VersionedFlowSensitive::setConsume</a></div><div class="ttdeci">void setConsume(const NodeID l, const NodeID o, const Version v)</div><div class="ttdoc">Sets the consumed version of o at l to v. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00821">VersionedFlowSensitive.cpp:821</a></div></div>
|
|
2040
2040
|
<div class="ttc" id="cJSON_8cpp_html_a8a1a0a26c50cc4becfc754bb68d1dc6b"><div class="ttname"><a href="cJSON_8cpp.html#a8a1a0a26c50cc4becfc754bb68d1dc6b">a</a></div><div class="ttdeci">cJSON * a</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02560">cJSON.cpp:2560</a></div></div>
|
|
@@ -2081,24 +2081,24 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2081
2081
|
<div class="fragment"><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVFG::iterator</a> it = <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> l = it->first;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> *ln = it->second;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a> *stn = SVFUtil::dyn_cast<StoreSVFGNode>(ln))</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// l: *p = q.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// If p points to o (Andersen's), l yields a new version for o.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a> = stn->getPAGDstNodeID();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : <a class="code" href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d">ander</a>-><a class="code" href="classSVF_1_1Andersen.html#a187285a5bdf9422d9188b2b11b667639">getPts</a>(p))</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aaae8c6858593ed050dcf2c9220228e3e">prelabeledObjects</a>.insert(o);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#adfefc0dfa4e7fb4d20fafeaf96a5fa67">vWorklist</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(l);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d">ander</a>-><a class="code" href="classSVF_1_1Andersen.html#a187285a5bdf9422d9188b2b11b667639">getPts</a>(p).<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>() != 0) ++<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aff5029fca933376be1fa374bec790da6">numPrelabeledNodes</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a9f9b00551c157f42d1d995e8c4efb54b">delta</a>(l))</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">// The outgoing edges are not only what will later be propagated. SVFGOPT may</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">// move around nodes such that there can be an MRSVFGNode with no incoming or</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="comment">// outgoing edges which will be added at runtime. In essence, we can no</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// longer rely on the outgoing edges of a delta node when SVFGOPT is enabled.</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRSVFGNode.html">MRSVFGNode</a> *mr = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1MRSVFGNode.html">MRSVFGNode</a>>(ln);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span> (mr != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : mr-><a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>())</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aaae8c6858593ed050dcf2c9220228e3e">prelabeledObjects</a>.insert(o);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// Push into worklist because its consume == its yield.</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#adfefc0dfa4e7fb4d20fafeaf96a5fa67">vWorklist</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(l);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span> (mr-><a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>().<a class="code" href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">count</a>() != 0) ++<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aff5029fca933376be1fa374bec790da6">numPrelabeledNodes</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a77a5dd9578def9a8e2b48e8b90d9b996">prelabelingTime</a> = (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
|
|
2082
2082
|
<div class="ttc" id="cJSON_8cpp_html_a009ef1d888ab6dbe77e6b42b0b39f1ae"><div class="ttname"><a href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a></div><div class="ttdeci">cJSON * p</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02559">cJSON.cpp:2559</a></div></div>
|
|
2083
2083
|
<div class="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00240">VFGNode.h:240</a></div></div>
|
|
2084
|
-
<div class="ttc" id="classSVF_1_1Andersen_html_a187285a5bdf9422d9188b2b11b667639"><div class="ttname"><a href="classSVF_1_1Andersen.html#a187285a5bdf9422d9188b2b11b667639">SVF::Andersen::getPts</a></div><div class="ttdeci">virtual const PointsTo & getPts(NodeID id)</div><div class="ttdoc">Operation of points-to set. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#
|
|
2084
|
+
<div class="ttc" id="classSVF_1_1Andersen_html_a187285a5bdf9422d9188b2b11b667639"><div class="ttname"><a href="classSVF_1_1Andersen.html#a187285a5bdf9422d9188b2b11b667639">SVF::Andersen::getPts</a></div><div class="ttdeci">virtual const PointsTo & getPts(NodeID id)</div><div class="ttdoc">Operation of points-to set. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00213">Andersen.h:213</a></div></div>
|
|
2085
2085
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aae032e5f5d53b131d0112dc8faa464a9"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">SVF::FlowSensitive::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00246">FlowSensitive.h:246</a></div></div>
|
|
2086
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_adfefc0dfa4e7fb4d20fafeaf96a5fa67"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#adfefc0dfa4e7fb4d20fafeaf96a5fa67">SVF::VersionedFlowSensitive::vWorklist</a></div><div class="ttdeci">FIFOWorkList< NodeID > vWorklist</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2086
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_adfefc0dfa4e7fb4d20fafeaf96a5fa67"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#adfefc0dfa4e7fb4d20fafeaf96a5fa67">SVF::VersionedFlowSensitive::vWorklist</a></div><div class="ttdeci">FIFOWorkList< NodeID > vWorklist</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00209">VersionedFlowSensitive.h:209</a></div></div>
|
|
2087
2087
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
2088
2088
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a9f9b00551c157f42d1d995e8c4efb54b"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a9f9b00551c157f42d1d995e8c4efb54b">SVF::VersionedFlowSensitive::delta</a></div><div class="ttdeci">virtual bool delta(const NodeID l) const</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00432">VersionedFlowSensitive.cpp:432</a></div></div>
|
|
2089
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aaae8c6858593ed050dcf2c9220228e3e"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aaae8c6858593ed050dcf2c9220228e3e">SVF::VersionedFlowSensitive::prelabeledObjects</a></div><div class="ttdeci">Set< NodeID > prelabeledObjects</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2089
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aaae8c6858593ed050dcf2c9220228e3e"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aaae8c6858593ed050dcf2c9220228e3e">SVF::VersionedFlowSensitive::prelabeledObjects</a></div><div class="ttdeci">Set< NodeID > prelabeledObjects</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00211">VersionedFlowSensitive.h:211</a></div></div>
|
|
2090
2090
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a9f96e6a886fa69e07cda5dbfaed8b7c9"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">SVF::SparseBitVector::count</a></div><div class="ttdeci">unsigned count() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01102">SparseBitVector.h:1102</a></div></div>
|
|
2091
2091
|
<div class="ttc" id="classSVF_1_1MRSVFGNode_html"><div class="ttname"><a href="classSVF_1_1MRSVFGNode.html">SVF::MRSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00042">SVFGNode.h:42</a></div></div>
|
|
2092
2092
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
|
|
2093
2093
|
<div class="ttc" id="classSVF_1_1VFG_html_a241d0489bf0315460e2b07db87e7847c"><div class="ttname"><a href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVF::VFG::iterator</a></div><div class="ttdeci">VFGNodeIDToNodeMapTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00080">VFG.h:80</a></div></div>
|
|
2094
2094
|
<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>
|
|
2095
2095
|
<div class="ttc" id="classSVF_1_1PointsTo_html_a879783ba6629e500af9aa7dfcda2563d"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">SVF::PointsTo::count</a></div><div class="ttdeci">u32_t count(void) const</div><div class="ttdoc">Returns number of elements. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00107">PointsTo.cpp:107</a></div></div>
|
|
2096
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aff5029fca933376be1fa374bec790da6"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aff5029fca933376be1fa374bec790da6">SVF::VersionedFlowSensitive::numPrelabeledNodes</a></div><div class="ttdeci">u32_t numPrelabeledNodes</div><div class="ttdoc">Additional statistics. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2097
|
-
<div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#
|
|
2096
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aff5029fca933376be1fa374bec790da6"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aff5029fca933376be1fa374bec790da6">SVF::VersionedFlowSensitive::numPrelabeledNodes</a></div><div class="ttdeci">u32_t numPrelabeledNodes</div><div class="ttdoc">Additional statistics. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00233">VersionedFlowSensitive.h:233</a></div></div>
|
|
2097
|
+
<div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00046">SVFStat.cpp:46</a></div></div>
|
|
2098
2098
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00150">PointerAnalysis.h:150</a></div></div>
|
|
2099
2099
|
<div class="ttc" id="classSVF_1_1MRSVFGNode_html_a28fe266d0e4618aa4448aa218495a332"><div class="ttname"><a href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">SVF::MRSVFGNode::getPointsTo</a></div><div class="ttdeci">const NodeBS & getPointsTo() const</div><div class="ttdoc">Return points-to of the MR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00052">SVFGNode.h:52</a></div></div>
|
|
2100
2100
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00182">SVFBasicTypes.h:182</a></div></div>
|
|
2101
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a77a5dd9578def9a8e2b48e8b90d9b996"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a77a5dd9578def9a8e2b48e8b90d9b996">SVF::VersionedFlowSensitive::prelabelingTime</a></div><div class="ttdeci">double prelabelingTime</div><div class="ttdoc">Time to prelabel SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2101
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a77a5dd9578def9a8e2b48e8b90d9b996"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a77a5dd9578def9a8e2b48e8b90d9b996">SVF::VersionedFlowSensitive::prelabelingTime</a></div><div class="ttdeci">double prelabelingTime</div><div class="ttdoc">Time to prelabel SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00236">VersionedFlowSensitive.h:236</a></div></div>
|
|
2102
2102
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
2103
2103
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a5cfee013a1a5821ef0c449842dd8690d"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d">SVF::FlowSensitive::ander</a></div><div class="ttdeci">AndersenWaveDiff * ander</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00280">FlowSensitive.h:280</a></div></div>
|
|
2104
2104
|
<div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
|
|
@@ -2141,15 +2141,15 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2141
2141
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aab4f70210eb1e6447a24697d3b459067"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aab4f70210eb1e6447a24697d3b459067">SVF::FlowSensitive::loadTime</a></div><div class="ttdeci">double loadTime</div><div class="ttdoc">time of load edges </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00311">FlowSensitive.h:311</a></div></div>
|
|
2142
2142
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a59f3dd74ed8c3e2fc48b9353ba2452aa"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a59f3dd74ed8c3e2fc48b9353ba2452aa">SVF::VersionedFlowSensitive::atKey</a></div><div class="ttdeci">static VersionedVar atKey(NodeID, Version)</div><div class="ttdoc">Return key into vPtD for address-taken var of a specific version. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00024">VersionedFlowSensitive.cpp:24</a></div></div>
|
|
2143
2143
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
2144
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a03f5f16377daa0258166a73de3e21f07"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a03f5f16377daa0258166a73de3e21f07">SVF::VersionedFlowSensitive::vPtD</a></div><div class="ttdeci">BVDataPTAImpl::VersionedPTDataTy * vPtD</div><div class="ttdoc">Points-to DS for working with versions. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2144
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a03f5f16377daa0258166a73de3e21f07"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a03f5f16377daa0258166a73de3e21f07">SVF::VersionedFlowSensitive::vPtD</a></div><div class="ttdeci">BVDataPTAImpl::VersionedPTDataTy * vPtD</div><div class="ttdoc">Points-to DS for working with versions. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00214">VersionedFlowSensitive.h:214</a></div></div>
|
|
2145
2145
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a5d15e4b09784f438568ebe61f8aa5156"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">SVF::SVFIR::isConstantObj</a></div><div class="ttdeci">bool isConstantObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00392">SVFIR.h:392</a></div></div>
|
|
2146
2146
|
<div class="ttc" id="namespaceSVF_html_a9ec7a8dc63411ee3724a25a59191be0c"><div class="ttname"><a href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">SVF::Version</a></div><div class="ttdeci">unsigned Version</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00133">SVFBasicTypes.h:133</a></div></div>
|
|
2147
2147
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5dddd53b4ca9d7cc23d88ed9f3de9fde"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5dddd53b4ca9d7cc23d88ed9f3de9fde">SVF::PointerAnalysis::getAllFieldsObjVars</a></div><div class="ttdeci">virtual const NodeBS & getAllFieldsObjVars(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00345">PointerAnalysis.h:345</a></div></div>
|
|
2148
2148
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee289e298e421448caaa604b7eb34fcb"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">SVF::BVDataPTAImpl::getPts</a></div><div class="ttdeci">virtual const PointsTo & getPts(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00099">PointerAnalysisImpl.h:99</a></div></div>
|
|
2149
2149
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html_a791a01f5d3528f8a8bf19369b5c61c37"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">SVF::StmtVFGNode::getPAGSrcNodeID</a></div><div class="ttdeci">NodeID getPAGSrcNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00141">VFGNode.h:141</a></div></div>
|
|
2150
|
-
<div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#
|
|
2150
|
+
<div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00046">SVFStat.cpp:46</a></div></div>
|
|
2151
2151
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00150">PointerAnalysis.h:150</a></div></div>
|
|
2152
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3d44a343a2e3f5d276fd1b069c92e112"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">SVF::VersionedFlowSensitive::invalidVersion</a></div><div class="ttdeci">static const Version invalidVersion</div><div class="ttdoc">If this version appears, there has been an error. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2152
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3d44a343a2e3f5d276fd1b069c92e112"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">SVF::VersionedFlowSensitive::invalidVersion</a></div><div class="ttdeci">static const Version invalidVersion</div><div class="ttdoc">If this version appears, there has been an error. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00048">VersionedFlowSensitive.h:48</a></div></div>
|
|
2153
2153
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00182">SVFBasicTypes.h:182</a></div></div>
|
|
2154
2154
|
<div class="ttc" id="classSVF_1_1VersionedPTData_html_a8b9d50b5ad1c779b2ff231f07f3002ea"><div class="ttname"><a href="classSVF_1_1VersionedPTData.html#a8b9d50b5ad1c779b2ff231f07f3002ea">SVF::VersionedPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const VersionedKey &dstVar, const VersionedKey &srcVar)=0</div></div>
|
|
2155
2155
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
|
|
@@ -2242,19 +2242,19 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2242
2242
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
2243
2243
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a42a7e39e0e15576742f8ba7c32579ea2"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a42a7e39e0e15576742f8ba7c32579ea2">SVF::FlowSensitive::isStrongUpdate</a></div><div class="ttdeci">bool isStrongUpdate(const SVFGNode *node, NodeID &singleton)</div><div class="ttdoc">Return TRUE if this is a strong update STORE statement. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00612">FlowSensitive.cpp:612</a></div></div>
|
|
2244
2244
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_ad5337b5aeed50f8b7ffd56b14ee25c9f"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#ad5337b5aeed50f8b7ffd56b14ee25c9f">SVF::SparseBitVector::reset</a></div><div class="ttdeci">void reset(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00722">SparseBitVector.h:722</a></div></div>
|
|
2245
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a03f5f16377daa0258166a73de3e21f07"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a03f5f16377daa0258166a73de3e21f07">SVF::VersionedFlowSensitive::vPtD</a></div><div class="ttdeci">BVDataPTAImpl::VersionedPTDataTy * vPtD</div><div class="ttdoc">Points-to DS for working with versions. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2245
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a03f5f16377daa0258166a73de3e21f07"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a03f5f16377daa0258166a73de3e21f07">SVF::VersionedFlowSensitive::vPtD</a></div><div class="ttdeci">BVDataPTAImpl::VersionedPTDataTy * vPtD</div><div class="ttdoc">Points-to DS for working with versions. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00214">VersionedFlowSensitive.h:214</a></div></div>
|
|
2246
2246
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a5d15e4b09784f438568ebe61f8aa5156"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">SVF::SVFIR::isConstantObj</a></div><div class="ttdeci">bool isConstantObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00392">SVFIR.h:392</a></div></div>
|
|
2247
2247
|
<div class="ttc" id="namespaceSVF_html_a9ec7a8dc63411ee3724a25a59191be0c"><div class="ttname"><a href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">SVF::Version</a></div><div class="ttdeci">unsigned Version</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00133">SVFBasicTypes.h:133</a></div></div>
|
|
2248
2248
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a01a199e9fdb5759c7f78ee344dbc413c"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a01a199e9fdb5759c7f78ee344dbc413c">SVF::VersionedFlowSensitive::getYield</a></div><div class="ttdeci">Version getYield(const NodeID l, const NodeID o) const</div><div class="ttdoc">Returns the yielded version of o at l. If no such version exists, returns invalidVersion. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00808">VersionedFlowSensitive.cpp:808</a></div></div>
|
|
2249
2249
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee289e298e421448caaa604b7eb34fcb"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">SVF::BVDataPTAImpl::getPts</a></div><div class="ttdeci">virtual const PointsTo & getPts(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00099">PointerAnalysisImpl.h:99</a></div></div>
|
|
2250
2250
|
<div class="ttc" id="classSVF_1_1PointsTo_html_ac4688413177b49b37dbbfd3ed188d59b"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">SVF::PointsTo::empty</a></div><div class="ttdeci">bool empty(void) const</div><div class="ttdoc">Returns true if set is empty. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00094">PointsTo.cpp:94</a></div></div>
|
|
2251
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2e4e6a84cbfd553ad9cca8fdf9fd4a8d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">SVF::VersionedFlowSensitive::consume</a></div><div class="ttdeci">LocVersionMap consume</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2251
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2e4e6a84cbfd553ad9cca8fdf9fd4a8d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">SVF::VersionedFlowSensitive::consume</a></div><div class="ttdeci">LocVersionMap consume</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00189">VersionedFlowSensitive.h:189</a></div></div>
|
|
2252
2252
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html_a791a01f5d3528f8a8bf19369b5c61c37"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">SVF::StmtVFGNode::getPAGSrcNodeID</a></div><div class="ttdeci">NodeID getPAGSrcNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00141">VFGNode.h:141</a></div></div>
|
|
2253
|
-
<div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#
|
|
2253
|
+
<div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00046">SVFStat.cpp:46</a></div></div>
|
|
2254
2254
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00150">PointerAnalysis.h:150</a></div></div>
|
|
2255
2255
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3489def8e16e4d7c83d2c909d3287fc0"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3489def8e16e4d7c83d2c909d3287fc0">SVF::VersionedFlowSensitive::getStmtReliance</a></div><div class="ttdeci">NodeBS & getStmtReliance(const NodeID o, const Version v)</div><div class="ttdoc">Returns the statements which rely on o:v. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00838">VersionedFlowSensitive.cpp:838</a></div></div>
|
|
2256
2256
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a43e8ca2e69e6e8643c9abd1fa231d305"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a43e8ca2e69e6e8643c9abd1fa231d305">SVF::FlowSensitive::svfgHasSU</a></div><div class="ttdeci">NodeBS svfgHasSU</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00316">FlowSensitive.h:316</a></div></div>
|
|
2257
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3d44a343a2e3f5d276fd1b069c92e112"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">SVF::VersionedFlowSensitive::invalidVersion</a></div><div class="ttdeci">static const Version invalidVersion</div><div class="ttdoc">If this version appears, there has been an error. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2257
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3d44a343a2e3f5d276fd1b069c92e112"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">SVF::VersionedFlowSensitive::invalidVersion</a></div><div class="ttdeci">static const Version invalidVersion</div><div class="ttdoc">If this version appears, there has been an error. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00048">VersionedFlowSensitive.h:48</a></div></div>
|
|
2258
2258
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00182">SVFBasicTypes.h:182</a></div></div>
|
|
2259
2259
|
<div class="ttc" id="classSVF_1_1VersionedPTData_html_a8b9d50b5ad1c779b2ff231f07f3002ea"><div class="ttname"><a href="classSVF_1_1VersionedPTData.html#a8b9d50b5ad1c779b2ff231f07f3002ea">SVF::VersionedPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const VersionedKey &dstVar, const VersionedKey &srcVar)=0</div></div>
|
|
2260
2260
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
|
|
@@ -2307,8 +2307,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2307
2307
|
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8cpp_source.html#l00546">546</a> of file <a class="el" href="VersionedFlowSensitive_8cpp_source.html">VersionedFlowSensitive.cpp</a>.</p>
|
|
2308
2308
|
<div class="fragment"><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>();</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> </div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keyword">const</span> std::vector<Version> &reliantVersions = <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#ae83c62a01196991d116ef5c36cb51e31">getReliantVersions</a>(o, v);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> r : reliantVersions)</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  {</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a7a98162b69de90f80ce853a6ff43af56">propagateVersion</a>(o, v, r, <span class="keyword">false</span>);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  }</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> </div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>();</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af15bb6be283fee2fcc4b1fb7d8190451">versionPropTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a7a98162b69de90f80ce853a6ff43af56"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a7a98162b69de90f80ce853a6ff43af56">SVF::VersionedFlowSensitive::propagateVersion</a></div><div class="ttdeci">void propagateVersion(NodeID o, Version v)</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00546">VersionedFlowSensitive.cpp:546</a></div></div>
|
|
2309
2309
|
<div class="ttc" id="namespaceSVF_html_a9ec7a8dc63411ee3724a25a59191be0c"><div class="ttname"><a href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">SVF::Version</a></div><div class="ttdeci">unsigned Version</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00133">SVFBasicTypes.h:133</a></div></div>
|
|
2310
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af15bb6be283fee2fcc4b1fb7d8190451"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af15bb6be283fee2fcc4b1fb7d8190451">SVF::VersionedFlowSensitive::versionPropTime</a></div><div class="ttdeci">double versionPropTime</div><div class="ttdoc">Time to propagate versions to versions which rely on them. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2311
|
-
<div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#
|
|
2310
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af15bb6be283fee2fcc4b1fb7d8190451"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af15bb6be283fee2fcc4b1fb7d8190451">SVF::VersionedFlowSensitive::versionPropTime</a></div><div class="ttdeci">double versionPropTime</div><div class="ttdoc">Time to propagate versions to versions which rely on them. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00238">VersionedFlowSensitive.h:238</a></div></div>
|
|
2311
|
+
<div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00046">SVFStat.cpp:46</a></div></div>
|
|
2312
2312
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00150">PointerAnalysis.h:150</a></div></div>
|
|
2313
2313
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00182">SVFBasicTypes.h:182</a></div></div>
|
|
2314
2314
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_ae83c62a01196991d116ef5c36cb51e31"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#ae83c62a01196991d116ef5c36cb51e31">SVF::VersionedFlowSensitive::getReliantVersions</a></div><div class="ttdeci">std::vector< Version > & getReliantVersions(const NodeID o, const Version v)</div><div class="ttdoc">Returns the versions of o which rely on o:v. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00833">VersionedFlowSensitive.cpp:833</a></div></div>
|
|
@@ -2368,10 +2368,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2368
2368
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a59f3dd74ed8c3e2fc48b9353ba2452aa"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a59f3dd74ed8c3e2fc48b9353ba2452aa">SVF::VersionedFlowSensitive::atKey</a></div><div class="ttdeci">static VersionedVar atKey(NodeID, Version)</div><div class="ttdoc">Return key into vPtD for address-taken var of a specific version. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00024">VersionedFlowSensitive.cpp:24</a></div></div>
|
|
2369
2369
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
2370
2370
|
<div class="ttc" id="classSVF_1_1SVFG_html_a8dd513e8e5343beeb5d117c1ff4e45ea"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8dd513e8e5343beeb5d117c1ff4e45ea">SVF::SVFG::addDummyVersionPropSVFGNode</a></div><div class="ttdeci">const DummyVersionPropSVFGNode * addDummyVersionPropSVFGNode(const NodeID object, const NodeID version)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00257">SVFG.h:257</a></div></div>
|
|
2371
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a03f5f16377daa0258166a73de3e21f07"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a03f5f16377daa0258166a73de3e21f07">SVF::VersionedFlowSensitive::vPtD</a></div><div class="ttdeci">BVDataPTAImpl::VersionedPTDataTy * vPtD</div><div class="ttdoc">Points-to DS for working with versions. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2372
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af15bb6be283fee2fcc4b1fb7d8190451"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af15bb6be283fee2fcc4b1fb7d8190451">SVF::VersionedFlowSensitive::versionPropTime</a></div><div class="ttdeci">double versionPropTime</div><div class="ttdoc">Time to propagate versions to versions which rely on them. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2373
|
-
<div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#
|
|
2374
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af14a4cbc0b990389d31b2f88f50ad8eb"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af14a4cbc0b990389d31b2f88f50ad8eb">SVF::VersionedFlowSensitive::versionedVarToPropNode</a></div><div class="ttdeci">VarToPropNodeMap versionedVarToPropNode</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2371
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a03f5f16377daa0258166a73de3e21f07"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a03f5f16377daa0258166a73de3e21f07">SVF::VersionedFlowSensitive::vPtD</a></div><div class="ttdeci">BVDataPTAImpl::VersionedPTDataTy * vPtD</div><div class="ttdoc">Points-to DS for working with versions. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00214">VersionedFlowSensitive.h:214</a></div></div>
|
|
2372
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af15bb6be283fee2fcc4b1fb7d8190451"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af15bb6be283fee2fcc4b1fb7d8190451">SVF::VersionedFlowSensitive::versionPropTime</a></div><div class="ttdeci">double versionPropTime</div><div class="ttdoc">Time to propagate versions to versions which rely on them. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00238">VersionedFlowSensitive.h:238</a></div></div>
|
|
2373
|
+
<div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00046">SVFStat.cpp:46</a></div></div>
|
|
2374
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af14a4cbc0b990389d31b2f88f50ad8eb"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af14a4cbc0b990389d31b2f88f50ad8eb">SVF::VersionedFlowSensitive::versionedVarToPropNode</a></div><div class="ttdeci">VarToPropNodeMap versionedVarToPropNode</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00200">VersionedFlowSensitive.h:200</a></div></div>
|
|
2375
2375
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00150">PointerAnalysis.h:150</a></div></div>
|
|
2376
2376
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3489def8e16e4d7c83d2c909d3287fc0"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3489def8e16e4d7c83d2c909d3287fc0">SVF::VersionedFlowSensitive::getStmtReliance</a></div><div class="ttdeci">NodeBS & getStmtReliance(const NodeID o, const Version v)</div><div class="ttdoc">Returns the statements which rely on o:v. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00838">VersionedFlowSensitive.cpp:838</a></div></div>
|
|
2377
2377
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00182">SVFBasicTypes.h:182</a></div></div>
|
|
@@ -2410,8 +2410,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2410
2410
|
|
|
2411
2411
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#aeb1e002519123a67f8d18f78cda04bac">SVF::FlowSensitive</a>.</p>
|
|
2412
2412
|
|
|
2413
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
2414
|
-
<div class="fragment"><div class="line"><a name="
|
|
2413
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00106">106</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
2414
|
+
<div class="fragment"><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div></div><!-- fragment -->
|
|
2415
2415
|
</div>
|
|
2416
2416
|
</div>
|
|
2417
2417
|
<a id="a6e4964389f96667bd69354fd4a742720"></a>
|
|
@@ -2441,8 +2441,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2441
2441
|
|
|
2442
2442
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#a4f1a0d533381660055210be1e2d7d72a">SVF::FlowSensitive</a>.</p>
|
|
2443
2443
|
|
|
2444
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
2445
|
-
<div class="fragment"><div class="line"><a name="
|
|
2444
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00063">63</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
2445
|
+
<div class="fragment"><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">return</span> <span class="stringliteral">"VersionedFlowSensitive"</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div></div><!-- fragment -->
|
|
2446
2446
|
</div>
|
|
2447
2447
|
</div>
|
|
2448
2448
|
<a id="a754c77fff88e8f415dc7a2096d1bffe2"></a>
|
|
@@ -2470,8 +2470,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2470
2470
|
|
|
2471
2471
|
<p>Release flow-sensitive pointer analysis. </p>
|
|
2472
2472
|
|
|
2473
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
2474
|
-
<div class="fragment"><div class="line"><a name="
|
|
2473
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00093">93</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
2474
|
+
<div class="fragment"><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a>) <span class="keyword">delete</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">vfspta</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a53b8a881400d7b353133c68295812efb"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a53b8a881400d7b353133c68295812efb">SVF::VersionedFlowSensitive::vfspta</a></div><div class="ttdeci">static VersionedFlowSensitive * vfspta</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00241">VersionedFlowSensitive.h:241</a></div></div>
|
|
2475
2475
|
</div><!-- fragment -->
|
|
2476
2476
|
</div>
|
|
2477
2477
|
</div>
|
|
@@ -2558,7 +2558,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2558
2558
|
<p>Sets the consumed version of o at l to v. </p>
|
|
2559
2559
|
|
|
2560
2560
|
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8cpp_source.html#l00821">821</a> of file <a class="el" href="VersionedFlowSensitive_8cpp_source.html">VersionedFlowSensitive.cpp</a>.</p>
|
|
2561
|
-
<div class="fragment"><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> {</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#adf37ae1f6a07716bca6fbe1603b8a070">setVersion</a>(l, o, v, <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">consume</a>);</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2e4e6a84cbfd553ad9cca8fdf9fd4a8d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">SVF::VersionedFlowSensitive::consume</a></div><div class="ttdeci">LocVersionMap consume</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2561
|
+
<div class="fragment"><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> {</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#adf37ae1f6a07716bca6fbe1603b8a070">setVersion</a>(l, o, v, <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">consume</a>);</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2e4e6a84cbfd553ad9cca8fdf9fd4a8d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">SVF::VersionedFlowSensitive::consume</a></div><div class="ttdeci">LocVersionMap consume</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00189">VersionedFlowSensitive.h:189</a></div></div>
|
|
2562
2562
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_adf37ae1f6a07716bca6fbe1603b8a070"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#adf37ae1f6a07716bca6fbe1603b8a070">SVF::VersionedFlowSensitive::setVersion</a></div><div class="ttdeci">void setVersion(const NodeID l, const NodeID o, const Version v, LocVersionMap &lvm)</div><div class="ttdoc">Shared code for setConsume and setYield. They wrap this function. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00815">VersionedFlowSensitive.cpp:815</a></div></div>
|
|
2563
2563
|
</div><!-- fragment -->
|
|
2564
2564
|
</div>
|
|
@@ -2612,7 +2612,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2612
2612
|
<p>Shared code for setConsume and setYield. They wrap this function. </p>
|
|
2613
2613
|
|
|
2614
2614
|
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8cpp_source.html#l00815">815</a> of file <a class="el" href="VersionedFlowSensitive_8cpp_source.html">VersionedFlowSensitive.cpp</a>.</p>
|
|
2615
|
-
<div class="fragment"><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> {</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af9a43f48b7d99cc6694f3ae3248fd8e0">ObjToVersionMap</a> &ovm = lvm[l];</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  ovm[o] = v;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af9a43f48b7d99cc6694f3ae3248fd8e0"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af9a43f48b7d99cc6694f3ae3248fd8e0">SVF::VersionedFlowSensitive::ObjToVersionMap</a></div><div class="ttdeci">Map< NodeID, Version > ObjToVersionMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2615
|
+
<div class="fragment"><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> {</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af9a43f48b7d99cc6694f3ae3248fd8e0">ObjToVersionMap</a> &ovm = lvm[l];</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  ovm[o] = v;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af9a43f48b7d99cc6694f3ae3248fd8e0"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af9a43f48b7d99cc6694f3ae3248fd8e0">SVF::VersionedFlowSensitive::ObjToVersionMap</a></div><div class="ttdeci">Map< NodeID, Version > ObjToVersionMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00040">VersionedFlowSensitive.h:40</a></div></div>
|
|
2616
2616
|
</div><!-- fragment -->
|
|
2617
2617
|
</div>
|
|
2618
2618
|
</div>
|
|
@@ -2660,8 +2660,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2660
2660
|
|
|
2661
2661
|
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8cpp_source.html#l00826">826</a> of file <a class="el" href="VersionedFlowSensitive_8cpp_source.html">VersionedFlowSensitive.cpp</a>.</p>
|
|
2662
2662
|
<div class="fragment"><div class="line"><a name="l00827"></a><span class="lineno"> 827</span> {</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="comment">// Non-store: consume == yield.</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aac920c9a5f13dd147e3c130425e005eb">isStore</a>(l)) <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#adf37ae1f6a07716bca6fbe1603b8a070">setVersion</a>(l, o, v, <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a16224ee60494bb1fdf1c8a1026fbe7ab">yield</a>);</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="keywordflow">else</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#adf37ae1f6a07716bca6fbe1603b8a070">setVersion</a>(l, o, v, <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">consume</a>);</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> }</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aac920c9a5f13dd147e3c130425e005eb"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aac920c9a5f13dd147e3c130425e005eb">SVF::VersionedFlowSensitive::isStore</a></div><div class="ttdeci">virtual bool isStore(const NodeID l) const</div><div class="ttdoc">Returns true if l is a store node. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00455">VersionedFlowSensitive.cpp:455</a></div></div>
|
|
2663
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2e4e6a84cbfd553ad9cca8fdf9fd4a8d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">SVF::VersionedFlowSensitive::consume</a></div><div class="ttdeci">LocVersionMap consume</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2664
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a16224ee60494bb1fdf1c8a1026fbe7ab"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a16224ee60494bb1fdf1c8a1026fbe7ab">SVF::VersionedFlowSensitive::yield</a></div><div class="ttdeci">LocVersionMap yield</div><div class="ttdoc">Actual yield map. Yield analogue to consume. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2663
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a2e4e6a84cbfd553ad9cca8fdf9fd4a8d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">SVF::VersionedFlowSensitive::consume</a></div><div class="ttdeci">LocVersionMap consume</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00189">VersionedFlowSensitive.h:189</a></div></div>
|
|
2664
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a16224ee60494bb1fdf1c8a1026fbe7ab"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a16224ee60494bb1fdf1c8a1026fbe7ab">SVF::VersionedFlowSensitive::yield</a></div><div class="ttdeci">LocVersionMap yield</div><div class="ttdoc">Actual yield map. Yield analogue to consume. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00191">VersionedFlowSensitive.h:191</a></div></div>
|
|
2665
2665
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_adf37ae1f6a07716bca6fbe1603b8a070"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#adf37ae1f6a07716bca6fbe1603b8a070">SVF::VersionedFlowSensitive::setVersion</a></div><div class="ttdeci">void setVersion(const NodeID l, const NodeID o, const Version v, LocVersionMap &lvm)</div><div class="ttdoc">Shared code for setConsume and setYield. They wrap this function. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00815">VersionedFlowSensitive.cpp:815</a></div></div>
|
|
2666
2666
|
</div><!-- fragment -->
|
|
2667
2667
|
</div>
|
|
@@ -2707,7 +2707,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2707
2707
|
<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>
|
|
2708
2708
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a01a199e9fdb5759c7f78ee344dbc413c"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a01a199e9fdb5759c7f78ee344dbc413c">SVF::VersionedFlowSensitive::getYield</a></div><div class="ttdeci">Version getYield(const NodeID l, const NodeID o) const</div><div class="ttdoc">Returns the yielded version of o at l. If no such version exists, returns invalidVersion. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00808">VersionedFlowSensitive.cpp:808</a></div></div>
|
|
2709
2709
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3fa5afa4f54e0828ec090fde07b1bfa2"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3fa5afa4f54e0828ec090fde07b1bfa2">SVF::VersionedFlowSensitive::deltaSource</a></div><div class="ttdeci">virtual bool deltaSource(const NodeID l) const</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00438">VersionedFlowSensitive.cpp:438</a></div></div>
|
|
2710
|
-
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3d44a343a2e3f5d276fd1b069c92e112"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">SVF::VersionedFlowSensitive::invalidVersion</a></div><div class="ttdeci">static const Version invalidVersion</div><div class="ttdoc">If this version appears, there has been an error. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#
|
|
2710
|
+
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3d44a343a2e3f5d276fd1b069c92e112"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3d44a343a2e3f5d276fd1b069c92e112">SVF::VersionedFlowSensitive::invalidVersion</a></div><div class="ttdeci">static const Version invalidVersion</div><div class="ttdoc">If this version appears, there has been an error. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00048">VersionedFlowSensitive.h:48</a></div></div>
|
|
2711
2711
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
|
|
2712
2712
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
|
|
2713
2713
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af93e65faae99459621ae45cf9d36005d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af93e65faae99459621ae45cf9d36005d">SVF::VersionedFlowSensitive::getConsume</a></div><div class="ttdeci">Version getConsume(const NodeID l, const NodeID o) const</div><div class="ttdoc">Returns the consumed version of o at l. If no such version exists, returns invalidVersion. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00803">VersionedFlowSensitive.cpp:803</a></div></div>
|
|
@@ -2740,7 +2740,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2740
2740
|
</table>
|
|
2741
2741
|
</div><div class="memdoc">
|
|
2742
2742
|
|
|
2743
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
2743
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00034">34</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
2744
2744
|
|
|
2745
2745
|
</div>
|
|
2746
2746
|
</div>
|
|
@@ -2766,7 +2766,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2766
2766
|
</div><div class="memdoc">
|
|
2767
2767
|
<p>Maps locations to objects to a version. The object version is what is consumed at that location. </p>
|
|
2768
2768
|
|
|
2769
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
2769
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00189">189</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
2770
2770
|
|
|
2771
2771
|
</div>
|
|
2772
2772
|
</div>
|
|
@@ -2791,7 +2791,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2791
2791
|
</div><div class="memdoc">
|
|
2792
2792
|
<p>deltaMap[l] means <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node l is a delta node, i.e., may get new incoming edges due to OTF callgraph construction. </p>
|
|
2793
2793
|
|
|
2794
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
2794
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00218">218</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
2795
2795
|
|
|
2796
2796
|
</div>
|
|
2797
2797
|
</div>
|
|
@@ -2816,7 +2816,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2816
2816
|
</div><div class="memdoc">
|
|
2817
2817
|
<p>deltaSourceMap[l] means <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node l <em>may</em> be a source to a delta node through an dge added as a result of on-the-fly callgraph construction. </p>
|
|
2818
2818
|
|
|
2819
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
2819
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00223">223</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
2820
2820
|
|
|
2821
2821
|
</div>
|
|
2822
2822
|
</div>
|
|
@@ -2840,7 +2840,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2840
2840
|
</table>
|
|
2841
2841
|
</div><div class="memdoc">
|
|
2842
2842
|
|
|
2843
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
2843
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00205">205</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
2844
2844
|
|
|
2845
2845
|
</div>
|
|
2846
2846
|
</div>
|
|
@@ -2866,7 +2866,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2866
2866
|
|
|
2867
2867
|
<p>If this version appears, there has been an error. </p>
|
|
2868
2868
|
|
|
2869
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
2869
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00048">48</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
2870
2870
|
|
|
2871
2871
|
</div>
|
|
2872
2872
|
</div>
|
|
@@ -2892,7 +2892,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2892
2892
|
|
|
2893
2893
|
<p>isLoadMap[l] means <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node l is a load node. </p>
|
|
2894
2894
|
|
|
2895
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
2895
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00229">229</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
2896
2896
|
|
|
2897
2897
|
</div>
|
|
2898
2898
|
</div>
|
|
@@ -2918,7 +2918,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2918
2918
|
|
|
2919
2919
|
<p>isStoreMap[l] means <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node l is a store node. </p>
|
|
2920
2920
|
|
|
2921
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
2921
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00226">226</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
2922
2922
|
|
|
2923
2923
|
</div>
|
|
2924
2924
|
</div>
|
|
@@ -2944,7 +2944,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2944
2944
|
|
|
2945
2945
|
<p>Time to meld label <a class="el" href="classSVF_1_1SVFG.html">SVFG</a>. </p>
|
|
2946
2946
|
|
|
2947
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
2947
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00237">237</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
2948
2948
|
|
|
2949
2949
|
</div>
|
|
2950
2950
|
</div>
|
|
@@ -2971,7 +2971,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2971
2971
|
<p>Additional statistics. </p>
|
|
2972
2972
|
<p>Number of prelabeled nodes. </p>
|
|
2973
2973
|
|
|
2974
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
2974
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00233">233</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
2975
2975
|
|
|
2976
2976
|
</div>
|
|
2977
2977
|
</div>
|
|
@@ -2997,7 +2997,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2997
2997
|
|
|
2998
2998
|
<p>Number of versions created during prelabeling. </p>
|
|
2999
2999
|
|
|
3000
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
3000
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00234">234</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
3001
3001
|
|
|
3002
3002
|
</div>
|
|
3003
3003
|
</div>
|
|
@@ -3021,7 +3021,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
3021
3021
|
</table>
|
|
3022
3022
|
</div><div class="memdoc">
|
|
3023
3023
|
|
|
3024
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
3024
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00211">211</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
3025
3025
|
|
|
3026
3026
|
</div>
|
|
3027
3027
|
</div>
|
|
@@ -3047,7 +3047,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
3047
3047
|
|
|
3048
3048
|
<p>Time to prelabel <a class="el" href="classSVF_1_1SVFG.html">SVFG</a>. </p>
|
|
3049
3049
|
|
|
3050
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
3050
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00236">236</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
3051
3051
|
|
|
3052
3052
|
</div>
|
|
3053
3053
|
</div>
|
|
@@ -3073,7 +3073,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
3073
3073
|
|
|
3074
3074
|
<p>o x version -> statement nodes which rely on that o/version. </p>
|
|
3075
3075
|
|
|
3076
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
3076
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00196">196</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
3077
3077
|
|
|
3078
3078
|
</div>
|
|
3079
3079
|
</div>
|
|
@@ -3098,7 +3098,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
3098
3098
|
</div><div class="memdoc">
|
|
3099
3099
|
<p>Maps an <object, version> pair to the <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node indicating that pair needs to be propagated. </p>
|
|
3100
3100
|
|
|
3101
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
3101
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00200">200</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
3102
3102
|
|
|
3103
3103
|
</div>
|
|
3104
3104
|
</div>
|
|
@@ -3124,7 +3124,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
3124
3124
|
|
|
3125
3125
|
<p>Time to propagate versions to versions which rely on them. </p>
|
|
3126
3126
|
|
|
3127
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
3127
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00238">238</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
3128
3128
|
|
|
3129
3129
|
</div>
|
|
3130
3130
|
</div>
|
|
@@ -3150,7 +3150,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
3150
3150
|
|
|
3151
3151
|
<p>o -> (version -> versions which rely on it). </p>
|
|
3152
3152
|
|
|
3153
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
3153
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00194">194</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
3154
3154
|
|
|
3155
3155
|
</div>
|
|
3156
3156
|
</div>
|
|
@@ -3174,7 +3174,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
3174
3174
|
</table>
|
|
3175
3175
|
</div><div class="memdoc">
|
|
3176
3176
|
|
|
3177
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
3177
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00241">241</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
3178
3178
|
|
|
3179
3179
|
</div>
|
|
3180
3180
|
</div>
|
|
@@ -3200,7 +3200,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
3200
3200
|
|
|
3201
3201
|
<p>Points-to DS for working with versions. </p>
|
|
3202
3202
|
|
|
3203
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
3203
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00214">214</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
3204
3204
|
|
|
3205
3205
|
</div>
|
|
3206
3206
|
</div>
|
|
@@ -3225,7 +3225,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
3225
3225
|
</div><div class="memdoc">
|
|
3226
3226
|
<p>Worklist for performing meld labeling, takes <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node l. Nodes are added when the version they yield is changed. </p>
|
|
3227
3227
|
|
|
3228
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
3228
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00209">209</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
3229
3229
|
|
|
3230
3230
|
</div>
|
|
3231
3231
|
</div>
|
|
@@ -3251,7 +3251,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
3251
3251
|
|
|
3252
3252
|
<p>Actual yield map. Yield analogue to consume. </p>
|
|
3253
3253
|
|
|
3254
|
-
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#
|
|
3254
|
+
<p class="definition">Definition at line <a class="el" href="VersionedFlowSensitive_8h_source.html#l00191">191</a> of file <a class="el" href="VersionedFlowSensitive_8h_source.html">VersionedFlowSensitive.h</a>.</p>
|
|
3255
3255
|
|
|
3256
3256
|
</div>
|
|
3257
3257
|
</div>
|