svf-tools 1.0.560 → 1.0.561
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 +16 -16
- 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/ConditionalPT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +44 -44
- 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 +51 -51
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +51 -51
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +111 -111
- 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/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/FlowSensitive_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +6 -6
- 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 +34 -34
- 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 +94 -94
- 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 +33 -33
- package/SVF-doxygen/html/html/MTAStat_8h_source.html +14 -14
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +28 -28
- 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 +59 -59
- 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/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/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 +19 -19
- package/SVF-doxygen/html/html/SVFGStat_8h_source.html +1 -1
- 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/SVFStatements_8h_source.html +1 -1
- 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 +2 -2
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +25 -25
- 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/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 +102 -102
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +19 -19
- 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_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 +100 -100
- 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.html +165 -165
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +286 -286
- 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_1FSMPTA.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +71 -71
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
- 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_1InterDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +7 -7
- 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 +334 -334
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +246 -246
- 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 +53 -53
- 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.html +44 -44
- package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +267 -267
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +18 -18
- 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_1PCG.html +131 -131
- 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_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 +100 -100
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +8 -8
- 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 +2 -2
- package/SVF-doxygen/html/html/dda_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/mta_8cpp.html +2 -2
- package/SVF-doxygen/html/html/mta_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/namespaceSVF.html +11 -11
- 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 +1 -1
- package/SVF-doxygen/html/html/svf-ex_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 +22 -0
- 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/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 +22 -0
- package/lib/MTA/MHP.cpp +23 -1
- 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/WPA/Steensgaard.cpp +22 -0
- package/lib/WPA/TypeAnalysis.cpp +1 -1
- package/lib/WPA/WPAPass.cpp +1 -1
- package/package.json +1 -1
|
@@ -66,44 +66,44 @@ $(function() {
|
|
|
66
66
|
<div class="title">MTA.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="MTA_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * RaceDetector.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Created on: May 14, 2014</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * Author: Yulei Sui, Peng Di</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#ifndef MTA_H_</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#define MTA_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include "<a class="code" href="Util_2BasicTypes_8h.html">Util/BasicTypes.h</a>"</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "<a class="code" href="SVF-FE_2BasicTypes_8h.html">SVF-FE/BasicTypes.h</a>"</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">class </span>PointerAnalysis;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">class </span>AndersenWaveDiff;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="keyword">class </span>ThreadCallGraph;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">class </span>MTAStat;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span>TCT;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">class </span>MHP;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">class </span>LockAnalysis;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">class </span>SVFModule;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html"> 31</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MTA.html">MTA</a>: <span class="keyword">public</span> <a class="code" href="namespaceSVF.html#ac226d84f86637126d17f6814632c8a90">ModulePass</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> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a80356495b6c45bac59dc15fd7a99730b"> 35</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const LoadInst*></a> <a class="code" href="classSVF_1_1MTA.html#a80356495b6c45bac59dc15fd7a99730b">LoadSet</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a891e56104b9c2daa8b052e3821e85b9b"> 36</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const StoreInst*></a> <a class="code" href="classSVF_1_1MTA.html#a891e56104b9c2daa8b052e3821e85b9b">StoreSet</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a2c92809f1395aa064c80aef0c3e4c944"> 37</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const Function*, ScalarEvolution*></a> <a class="code" href="classSVF_1_1MTA.html#a2c92809f1395aa064c80aef0c3e4c944">FunToSEMap</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a2473be56f2861ad101f65a65e02dff8d"> 38</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const Function*, LoopInfo*></a> <a class="code" href="classSVF_1_1MTA.html#a2473be56f2861ad101f65a65e02dff8d">FunToLoopInfoMap</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a5ce0b3247bd412e5267a42be0646471b"> 41</a></span>  <span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="classSVF_1_1MTA.html#a5ce0b3247bd412e5267a42be0646471b">ID</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a3dd09dcdcf58ae8ee1745634cefbb8aa"> 43</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ac226d84f86637126d17f6814632c8a90">ModulePass</a>* <a class="code" href="classSVF_1_1MTA.html#a3dd09dcdcf58ae8ee1745634cefbb8aa">modulePass</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classSVF_1_1MTA.html#ab25d605ed6040a9ad6ed6fcec4e8d338">MTA</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MTA.html#a77b2f1d3de217219ea9346b5bbce4b5f">~MTA</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTA.html#a9c4b9eb2c04de305a30114019c3b1dae">runOnModule</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& module);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTA.html#a9c4b9eb2c04de305a30114019c3b1dae">runOnModule</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MHP.html">MHP</a>* <a class="code" href="classSVF_1_1MTA.html#a4f2f17975aabd2c4b9a3b2fbf3b1a487">computeMHP</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>* <a class="code" href="classSVF_1_1MTA.html#a0f4805f195ebd42d81127b1a79333c75">computeLocksets</a>(<a class="code" href="classSVF_1_1TCT.html">TCT</a>* <a class="code" href="classSVF_1_1MTA.html#a9c9a42fb8a8ada910cdb9a8fb55d7c36">tct</a>);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTA.html#af9558955c068ce922872c259dde1786e">detect</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a7cb3bc9f1fa9897e36ffd8b781b9ad85"> 65</a></span>  <span class="keyword">virtual</span> llvm::StringRef <a class="code" href="classSVF_1_1MTA.html#a7cb3bc9f1fa9897e36ffd8b781b9ad85">getPassName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> <span class="stringliteral">"Multi threaded program analysis pass"</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTA.html#a2ced024c7e0785d3d78d19c3c52d0f75">dump</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &module, <a class="code" href="classSVF_1_1MHP.html">MHP</a> *mhp, <a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a> *lsa);</div><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="comment">// Get ScalarEvolution for Function F.</span></div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a7cb2fd230ed5839b59f650cc87de192e"> 73</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad8794eb3c00de3d3b5c5e43dded3fb42">ScalarEvolution</a>* <a class="code" href="classSVF_1_1MTA.html#a7cb2fd230ed5839b59f650cc87de192e">getSE</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><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>  FunToSEMap::iterator it = <a class="code" href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">func2ScevMap</a>.find(F);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">func2ScevMap</a>.end())</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="namespaceSVF.html#a9f1aca0384166e42d14e2608009ebc01">ScalarEvolutionWrapperPass</a> *scev = &modulePass->getAnalysis<<a class="code" href="namespaceSVF.html#a9f1aca0384166e42d14e2608009ebc01">ScalarEvolutionWrapperPass</a>>(*const_cast<Function*>(F));</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">func2ScevMap</a>[<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>] = &scev->getSE();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">return</span> &scev->getSE();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</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="keyword">private</span>:</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a308ca0fa99b3c95f3e62b27522b6aeaa"> 84</a></span>  <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>* <a class="code" href="classSVF_1_1MTA.html#a308ca0fa99b3c95f3e62b27522b6aeaa">tcg</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a9c9a42fb8a8ada910cdb9a8fb55d7c36"> 85</a></span>  <a class="code" href="classSVF_1_1TCT.html">TCT</a>* <a class="code" href="classSVF_1_1MTA.html#a9c9a42fb8a8ada910cdb9a8fb55d7c36">tct</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59"> 86</a></span>  <a class="code" href="classSVF_1_1MTAStat.html">MTAStat</a>* <a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5"> 87</a></span>  <span class="keyword">static</span> FunToSEMap <a class="code" href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">func2ScevMap</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a427ebcf1f00b601087e5b098c18cc29a"> 88</a></span>  <span class="keyword">static</span> FunToLoopInfoMap <a class="code" href="classSVF_1_1MTA.html#a427ebcf1f00b601087e5b098c18cc29a">func2LoopInfoMap</a>;</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> } <span class="comment">// End namespace SVF</span></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="preprocessor">#endif </span><span class="comment">/* MTA_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1MHP_html"><div class="ttname"><a href="classSVF_1_1MHP.html">SVF::MHP</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00024">MHP.h:24</a></div></div>
|
|
70
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a80356495b6c45bac59dc15fd7a99730b"><div class="ttname"><a href="classSVF_1_1MTA.html#a80356495b6c45bac59dc15fd7a99730b">SVF::MTA::LoadSet</a></div><div class="ttdeci">Set< const LoadInst * > LoadSet</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
71
|
-
<div class="ttc" id="classSVF_1_1MTAStat_html"><div class="ttname"><a href="classSVF_1_1MTAStat.html">SVF::MTAStat</a></div><div class="ttdef"><b>Definition:</b> <a href="MTAStat_8h_source.html#
|
|
72
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a9c9a42fb8a8ada910cdb9a8fb55d7c36"><div class="ttname"><a href="classSVF_1_1MTA.html#a9c9a42fb8a8ada910cdb9a8fb55d7c36">SVF::MTA::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
69
|
+
<a href="MTA_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- MTA.h -- Analysis of multithreaded programs-------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * MTA.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: May 14, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui, Peng Di</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> *</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * The implementation is based on</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> * Yulei Sui, Peng Di, and Jingling Xue. "Sparse Flow-Sensitive Pointer Analysis for Multithreaded Programs".</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * 2016 International Symposium on Code Generation and Optimization (CGO'16)</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> */</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#ifndef MTA_H_</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#define MTA_H_</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="preprocessor">#include <set></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "<a class="code" href="Util_2BasicTypes_8h.html">Util/BasicTypes.h</a>"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "<a class="code" href="SVF-FE_2BasicTypes_8h.html">SVF-FE/BasicTypes.h</a>"</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> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">class </span>PointerAnalysis;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">class </span>AndersenWaveDiff;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">class </span>ThreadCallGraph;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">class </span>MTAStat;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">class </span>TCT;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">class </span>MHP;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">class </span>LockAnalysis;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">class </span>SVFModule;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html"> 57</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MTA.html">MTA</a>: <span class="keyword">public</span> <a class="code" href="namespaceSVF.html#ac226d84f86637126d17f6814632c8a90">ModulePass</a></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a80356495b6c45bac59dc15fd7a99730b"> 61</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const LoadInst*></a> <a class="code" href="classSVF_1_1MTA.html#a80356495b6c45bac59dc15fd7a99730b">LoadSet</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a891e56104b9c2daa8b052e3821e85b9b"> 62</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const StoreInst*></a> <a class="code" href="classSVF_1_1MTA.html#a891e56104b9c2daa8b052e3821e85b9b">StoreSet</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a2c92809f1395aa064c80aef0c3e4c944"> 63</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const Function*, ScalarEvolution*></a> <a class="code" href="classSVF_1_1MTA.html#a2c92809f1395aa064c80aef0c3e4c944">FunToSEMap</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a2473be56f2861ad101f65a65e02dff8d"> 64</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const Function*, LoopInfo*></a> <a class="code" href="classSVF_1_1MTA.html#a2473be56f2861ad101f65a65e02dff8d">FunToLoopInfoMap</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a5ce0b3247bd412e5267a42be0646471b"> 67</a></span>  <span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="classSVF_1_1MTA.html#a5ce0b3247bd412e5267a42be0646471b">ID</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a3dd09dcdcf58ae8ee1745634cefbb8aa"> 69</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ac226d84f86637126d17f6814632c8a90">ModulePass</a>* <a class="code" href="classSVF_1_1MTA.html#a3dd09dcdcf58ae8ee1745634cefbb8aa">modulePass</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="classSVF_1_1MTA.html#ab25d605ed6040a9ad6ed6fcec4e8d338">MTA</a>();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MTA.html#a77b2f1d3de217219ea9346b5bbce4b5f">~MTA</a>();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTA.html#a9c4b9eb2c04de305a30114019c3b1dae">runOnModule</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& module);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTA.html#a9c4b9eb2c04de305a30114019c3b1dae">runOnModule</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MHP.html">MHP</a>* <a class="code" href="classSVF_1_1MTA.html#a4f2f17975aabd2c4b9a3b2fbf3b1a487">computeMHP</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>* <a class="code" href="classSVF_1_1MTA.html#a0f4805f195ebd42d81127b1a79333c75">computeLocksets</a>(<a class="code" href="classSVF_1_1TCT.html">TCT</a>* <a class="code" href="classSVF_1_1MTA.html#a9c9a42fb8a8ada910cdb9a8fb55d7c36">tct</a>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTA.html#af9558955c068ce922872c259dde1786e">detect</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a7cb3bc9f1fa9897e36ffd8b781b9ad85"> 91</a></span>  <span class="keyword">virtual</span> llvm::StringRef <a class="code" href="classSVF_1_1MTA.html#a7cb3bc9f1fa9897e36ffd8b781b9ad85">getPassName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">return</span> <span class="stringliteral">"Multi threaded program analysis pass"</span>;</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> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTA.html#a2ced024c7e0785d3d78d19c3c52d0f75">dump</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &module, <a class="code" href="classSVF_1_1MHP.html">MHP</a> *mhp, <a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a> *lsa);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">// Get ScalarEvolution for Function F.</span></div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a7cb2fd230ed5839b59f650cc87de192e"> 99</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad8794eb3c00de3d3b5c5e43dded3fb42">ScalarEvolution</a>* <a class="code" href="classSVF_1_1MTA.html#a7cb2fd230ed5839b59f650cc87de192e">getSE</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  FunToSEMap::iterator it = <a class="code" href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">func2ScevMap</a>.find(F);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">func2ScevMap</a>.end())</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="namespaceSVF.html#a9f1aca0384166e42d14e2608009ebc01">ScalarEvolutionWrapperPass</a> *scev = &modulePass->getAnalysis<<a class="code" href="namespaceSVF.html#a9f1aca0384166e42d14e2608009ebc01">ScalarEvolutionWrapperPass</a>>(*const_cast<Function*>(F));</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">func2ScevMap</a>[<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>] = &scev->getSE();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> &scev->getSE();</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="keyword">private</span>:</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a308ca0fa99b3c95f3e62b27522b6aeaa"> 110</a></span>  <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>* <a class="code" href="classSVF_1_1MTA.html#a308ca0fa99b3c95f3e62b27522b6aeaa">tcg</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a9c9a42fb8a8ada910cdb9a8fb55d7c36"> 111</a></span>  <a class="code" href="classSVF_1_1TCT.html">TCT</a>* <a class="code" href="classSVF_1_1MTA.html#a9c9a42fb8a8ada910cdb9a8fb55d7c36">tct</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59"> 112</a></span>  <a class="code" href="classSVF_1_1MTAStat.html">MTAStat</a>* <a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a>;</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5"> 113</a></span>  <span class="keyword">static</span> FunToSEMap <a class="code" href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">func2ScevMap</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a427ebcf1f00b601087e5b098c18cc29a"> 114</a></span>  <span class="keyword">static</span> FunToLoopInfoMap <a class="code" href="classSVF_1_1MTA.html#a427ebcf1f00b601087e5b098c18cc29a">func2LoopInfoMap</a>;</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> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor">#endif </span><span class="comment">/* MTA_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1MHP_html"><div class="ttname"><a href="classSVF_1_1MHP.html">SVF::MHP</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00046">MHP.h:46</a></div></div>
|
|
70
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a80356495b6c45bac59dc15fd7a99730b"><div class="ttname"><a href="classSVF_1_1MTA.html#a80356495b6c45bac59dc15fd7a99730b">SVF::MTA::LoadSet</a></div><div class="ttdeci">Set< const LoadInst * > LoadSet</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00061">MTA.h:61</a></div></div>
|
|
71
|
+
<div class="ttc" id="classSVF_1_1MTAStat_html"><div class="ttname"><a href="classSVF_1_1MTAStat.html">SVF::MTAStat</a></div><div class="ttdef"><b>Definition:</b> <a href="MTAStat_8h_source.html#l00046">MTAStat.h:46</a></div></div>
|
|
72
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a9c9a42fb8a8ada910cdb9a8fb55d7c36"><div class="ttname"><a href="classSVF_1_1MTA.html#a9c9a42fb8a8ada910cdb9a8fb55d7c36">SVF::MTA::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00111">MTA.h:111</a></div></div>
|
|
73
73
|
<div class="ttc" id="namespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00041">BasicTypes.h:41</a></div></div>
|
|
74
74
|
<div class="ttc" id="namespaceSVF_html_ad8794eb3c00de3d3b5c5e43dded3fb42"><div class="ttname"><a href="namespaceSVF.html#ad8794eb3c00de3d3b5c5e43dded3fb42">SVF::ScalarEvolution</a></div><div class="ttdeci">llvm::ScalarEvolution ScalarEvolution</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00168">BasicTypes.h:168</a></div></div>
|
|
75
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a2473be56f2861ad101f65a65e02dff8d"><div class="ttname"><a href="classSVF_1_1MTA.html#a2473be56f2861ad101f65a65e02dff8d">SVF::MTA::FunToLoopInfoMap</a></div><div class="ttdeci">Map< const Function *, LoopInfo * > FunToLoopInfoMap</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
76
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a7cb2fd230ed5839b59f650cc87de192e"><div class="ttname"><a href="classSVF_1_1MTA.html#a7cb2fd230ed5839b59f650cc87de192e">SVF::MTA::getSE</a></div><div class="ttdeci">static ScalarEvolution * getSE(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
75
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a2473be56f2861ad101f65a65e02dff8d"><div class="ttname"><a href="classSVF_1_1MTA.html#a2473be56f2861ad101f65a65e02dff8d">SVF::MTA::FunToLoopInfoMap</a></div><div class="ttdeci">Map< const Function *, LoopInfo * > FunToLoopInfoMap</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00064">MTA.h:64</a></div></div>
|
|
76
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a7cb2fd230ed5839b59f650cc87de192e"><div class="ttname"><a href="classSVF_1_1MTA.html#a7cb2fd230ed5839b59f650cc87de192e">SVF::MTA::getSE</a></div><div class="ttdeci">static ScalarEvolution * getSE(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00099">MTA.h:99</a></div></div>
|
|
77
77
|
<div class="ttc" id="namespaceSVF_html_ac226d84f86637126d17f6814632c8a90"><div class="ttname"><a href="namespaceSVF.html#ac226d84f86637126d17f6814632c8a90">SVF::ModulePass</a></div><div class="ttdeci">llvm::ModulePass ModulePass</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00033">BasicTypes.h:33</a></div></div>
|
|
78
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a4f2f17975aabd2c4b9a3b2fbf3b1a487"><div class="ttname"><a href="classSVF_1_1MTA.html#a4f2f17975aabd2c4b9a3b2fbf3b1a487">SVF::MTA::computeMHP</a></div><div class="ttdeci">virtual MHP * computeMHP(SVFModule *module)</div><div class="ttdoc">Compute MHP. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#
|
|
78
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a4f2f17975aabd2c4b9a3b2fbf3b1a487"><div class="ttname"><a href="classSVF_1_1MTA.html#a4f2f17975aabd2c4b9a3b2fbf3b1a487">SVF::MTA::computeMHP</a></div><div class="ttdeci">virtual MHP * computeMHP(SVFModule *module)</div><div class="ttdoc">Compute MHP. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#l00141">MTA.cpp:141</a></div></div>
|
|
79
79
|
<div class="ttc" id="Util_2BasicTypes_8h_html"><div class="ttname"><a href="Util_2BasicTypes_8h.html">BasicTypes.h</a></div></div>
|
|
80
80
|
<div class="ttc" id="namespaceSVF_html_a9f1aca0384166e42d14e2608009ebc01"><div class="ttname"><a href="namespaceSVF.html#a9f1aca0384166e42d14e2608009ebc01">SVF::ScalarEvolutionWrapperPass</a></div><div class="ttdeci">llvm::ScalarEvolutionWrapperPass ScalarEvolutionWrapperPass</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00165">BasicTypes.h:165</a></div></div>
|
|
81
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a5ce0b3247bd412e5267a42be0646471b"><div class="ttname"><a href="classSVF_1_1MTA.html#a5ce0b3247bd412e5267a42be0646471b">SVF::MTA::ID</a></div><div class="ttdeci">static char ID</div><div class="ttdoc">Pass ID. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
82
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a891e56104b9c2daa8b052e3821e85b9b"><div class="ttname"><a href="classSVF_1_1MTA.html#a891e56104b9c2daa8b052e3821e85b9b">SVF::MTA::StoreSet</a></div><div class="ttdeci">Set< const StoreInst * > StoreSet</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
81
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a5ce0b3247bd412e5267a42be0646471b"><div class="ttname"><a href="classSVF_1_1MTA.html#a5ce0b3247bd412e5267a42be0646471b">SVF::MTA::ID</a></div><div class="ttdeci">static char ID</div><div class="ttdoc">Pass ID. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00067">MTA.h:67</a></div></div>
|
|
82
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a891e56104b9c2daa8b052e3821e85b9b"><div class="ttname"><a href="classSVF_1_1MTA.html#a891e56104b9c2daa8b052e3821e85b9b">SVF::MTA::StoreSet</a></div><div class="ttdeci">Set< const StoreInst * > StoreSet</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00062">MTA.h:62</a></div></div>
|
|
83
83
|
<div class="ttc" id="classSVF_1_1MTA_html_a2ced024c7e0785d3d78d19c3c52d0f75"><div class="ttname"><a href="classSVF_1_1MTA.html#a2ced024c7e0785d3d78d19c3c52d0f75">SVF::MTA::dump</a></div><div class="ttdeci">void dump(Module &module, MHP *mhp, LockAnalysis *lsa)</div></div>
|
|
84
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a77b2f1d3de217219ea9346b5bbce4b5f"><div class="ttname"><a href="classSVF_1_1MTA.html#a77b2f1d3de217219ea9346b5bbce4b5f">SVF::MTA::~MTA</a></div><div class="ttdeci">virtual ~MTA()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#
|
|
84
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a77b2f1d3de217219ea9346b5bbce4b5f"><div class="ttname"><a href="classSVF_1_1MTA.html#a77b2f1d3de217219ea9346b5bbce4b5f">SVF::MTA::~MTA</a></div><div class="ttdeci">virtual ~MTA()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#l00059">MTA.cpp:59</a></div></div>
|
|
85
85
|
<div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
|
|
86
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a8c0f7a777b7fd6b388678be63190ee59"><div class="ttname"><a href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">SVF::MTA::stat</a></div><div class="ttdeci">MTAStat * stat</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
86
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a8c0f7a777b7fd6b388678be63190ee59"><div class="ttname"><a href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">SVF::MTA::stat</a></div><div class="ttdeci">MTAStat * stat</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00112">MTA.h:112</a></div></div>
|
|
87
87
|
<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>
|
|
88
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a0f4805f195ebd42d81127b1a79333c75"><div class="ttname"><a href="classSVF_1_1MTA.html#a0f4805f195ebd42d81127b1a79333c75">SVF::MTA::computeLocksets</a></div><div class="ttdeci">virtual LockAnalysis * computeLocksets(TCT *tct)</div><div class="ttdoc">Compute locksets. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#
|
|
89
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a7cb3bc9f1fa9897e36ffd8b781b9ad85"><div class="ttname"><a href="classSVF_1_1MTA.html#a7cb3bc9f1fa9897e36ffd8b781b9ad85">SVF::MTA::getPassName</a></div><div class="ttdeci">virtual llvm::StringRef getPassName() const</div><div class="ttdoc">Pass name. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
90
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a3dd09dcdcf58ae8ee1745634cefbb8aa"><div class="ttname"><a href="classSVF_1_1MTA.html#a3dd09dcdcf58ae8ee1745634cefbb8aa">SVF::MTA::modulePass</a></div><div class="ttdeci">static ModulePass * modulePass</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
88
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a0f4805f195ebd42d81127b1a79333c75"><div class="ttname"><a href="classSVF_1_1MTA.html#a0f4805f195ebd42d81127b1a79333c75">SVF::MTA::computeLocksets</a></div><div class="ttdeci">virtual LockAnalysis * computeLocksets(TCT *tct)</div><div class="ttdoc">Compute locksets. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#l00134">MTA.cpp:134</a></div></div>
|
|
89
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a7cb3bc9f1fa9897e36ffd8b781b9ad85"><div class="ttname"><a href="classSVF_1_1MTA.html#a7cb3bc9f1fa9897e36ffd8b781b9ad85">SVF::MTA::getPassName</a></div><div class="ttdeci">virtual llvm::StringRef getPassName() const</div><div class="ttdoc">Pass name. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00091">MTA.h:91</a></div></div>
|
|
90
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a3dd09dcdcf58ae8ee1745634cefbb8aa"><div class="ttname"><a href="classSVF_1_1MTA.html#a3dd09dcdcf58ae8ee1745634cefbb8aa">SVF::MTA::modulePass</a></div><div class="ttdeci">static ModulePass * modulePass</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00069">MTA.h:69</a></div></div>
|
|
91
91
|
<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>
|
|
92
92
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
93
93
|
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html">BasicTypes.h</a></div></div>
|
|
94
|
-
<div class="ttc" id="classSVF_1_1LockAnalysis_html"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html">SVF::LockAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
94
|
+
<div class="ttc" id="classSVF_1_1LockAnalysis_html"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html">SVF::LockAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00045">LockAnalysis.h:45</a></div></div>
|
|
95
95
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html">SVF::ThreadCallGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00160">ThreadCallGraph.h:160</a></div></div>
|
|
96
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a9c4b9eb2c04de305a30114019c3b1dae"><div class="ttname"><a href="classSVF_1_1MTA.html#a9c4b9eb2c04de305a30114019c3b1dae">SVF::MTA::runOnModule</a></div><div class="ttdeci">virtual bool runOnModule(Module &module)</div><div class="ttdoc">We start the pass here. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#
|
|
97
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a427ebcf1f00b601087e5b098c18cc29a"><div class="ttname"><a href="classSVF_1_1MTA.html#a427ebcf1f00b601087e5b098c18cc29a">SVF::MTA::func2LoopInfoMap</a></div><div class="ttdeci">static FunToLoopInfoMap func2LoopInfoMap</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
96
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a9c4b9eb2c04de305a30114019c3b1dae"><div class="ttname"><a href="classSVF_1_1MTA.html#a9c4b9eb2c04de305a30114019c3b1dae">SVF::MTA::runOnModule</a></div><div class="ttdeci">virtual bool runOnModule(Module &module)</div><div class="ttdoc">We start the pass here. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#l00067">MTA.cpp:67</a></div></div>
|
|
97
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a427ebcf1f00b601087e5b098c18cc29a"><div class="ttname"><a href="classSVF_1_1MTA.html#a427ebcf1f00b601087e5b098c18cc29a">SVF::MTA::func2LoopInfoMap</a></div><div class="ttdeci">static FunToLoopInfoMap func2LoopInfoMap</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00114">MTA.h:114</a></div></div>
|
|
98
98
|
<div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
|
|
99
|
-
<div class="ttc" id="classSVF_1_1TCT_html"><div class="ttname"><a href="classSVF_1_1TCT.html">SVF::TCT</a></div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
99
|
+
<div class="ttc" id="classSVF_1_1TCT_html"><div class="ttname"><a href="classSVF_1_1TCT.html">SVF::TCT</a></div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00137">TCT.h:137</a></div></div>
|
|
100
100
|
<div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
|
|
101
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a308ca0fa99b3c95f3e62b27522b6aeaa"><div class="ttname"><a href="classSVF_1_1MTA.html#a308ca0fa99b3c95f3e62b27522b6aeaa">SVF::MTA::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
102
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a7a879943a817d0283971b5588cfa83d5"><div class="ttname"><a href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">SVF::MTA::func2ScevMap</a></div><div class="ttdeci">static FunToSEMap func2ScevMap</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
103
|
-
<div class="ttc" id="classSVF_1_1MTA_html_af9558955c068ce922872c259dde1786e"><div class="ttname"><a href="classSVF_1_1MTA.html#af9558955c068ce922872c259dde1786e">SVF::MTA::detect</a></div><div class="ttdeci">virtual void detect(SVFModule *module)</div><div class="ttdoc">Perform detection. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#
|
|
104
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a2c92809f1395aa064c80aef0c3e4c944"><div class="ttname"><a href="classSVF_1_1MTA.html#a2c92809f1395aa064c80aef0c3e4c944">SVF::MTA::FunToSEMap</a></div><div class="ttdeci">Map< const Function *, ScalarEvolution * > FunToSEMap</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
105
|
-
<div class="ttc" id="classSVF_1_1MTA_html"><div class="ttname"><a href="classSVF_1_1MTA.html">SVF::MTA</a></div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
106
|
-
<div class="ttc" id="classSVF_1_1MTA_html_ab25d605ed6040a9ad6ed6fcec4e8d338"><div class="ttname"><a href="classSVF_1_1MTA.html#ab25d605ed6040a9ad6ed6fcec4e8d338">SVF::MTA::MTA</a></div><div class="ttdeci">MTA()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#
|
|
101
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a308ca0fa99b3c95f3e62b27522b6aeaa"><div class="ttname"><a href="classSVF_1_1MTA.html#a308ca0fa99b3c95f3e62b27522b6aeaa">SVF::MTA::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00110">MTA.h:110</a></div></div>
|
|
102
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a7a879943a817d0283971b5588cfa83d5"><div class="ttname"><a href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">SVF::MTA::func2ScevMap</a></div><div class="ttdeci">static FunToSEMap func2ScevMap</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00113">MTA.h:113</a></div></div>
|
|
103
|
+
<div class="ttc" id="classSVF_1_1MTA_html_af9558955c068ce922872c259dde1786e"><div class="ttname"><a href="classSVF_1_1MTA.html#af9558955c068ce922872c259dde1786e">SVF::MTA::detect</a></div><div class="ttdeci">virtual void detect(SVFModule *module)</div><div class="ttdoc">Perform detection. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#l00188">MTA.cpp:188</a></div></div>
|
|
104
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a2c92809f1395aa064c80aef0c3e4c944"><div class="ttname"><a href="classSVF_1_1MTA.html#a2c92809f1395aa064c80aef0c3e4c944">SVF::MTA::FunToSEMap</a></div><div class="ttdeci">Map< const Function *, ScalarEvolution * > FunToSEMap</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00063">MTA.h:63</a></div></div>
|
|
105
|
+
<div class="ttc" id="classSVF_1_1MTA_html"><div class="ttname"><a href="classSVF_1_1MTA.html">SVF::MTA</a></div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00057">MTA.h:57</a></div></div>
|
|
106
|
+
<div class="ttc" id="classSVF_1_1MTA_html_ab25d605ed6040a9ad6ed6fcec4e8d338"><div class="ttname"><a href="classSVF_1_1MTA.html#ab25d605ed6040a9ad6ed6fcec4e8d338">SVF::MTA::MTA</a></div><div class="ttdeci">MTA()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#l00053">MTA.cpp:53</a></div></div>
|
|
107
107
|
</div><!-- fragment --></div><!-- contents -->
|
|
108
108
|
<!-- start footer part -->
|
|
109
109
|
<hr class="footer"/><address class="footer"><small>
|
|
@@ -78,10 +78,10 @@ $(function() {
|
|
|
78
78
|
<div class="ttc" id="MemPartition_8h_html"><div class="ttname"><a href="MemPartition_8h.html">MemPartition.h</a></div></div>
|
|
79
79
|
<div class="ttc" id="classSVF_1_1IntraDisjointMRG_html_adb3ed119aee3f1bc62b9679ee095580d"><div class="ttname"><a href="classSVF_1_1IntraDisjointMRG.html#adb3ed119aee3f1bc62b9679ee095580d">SVF::IntraDisjointMRG::computeIntersections</a></div><div class="ttdeci">void computeIntersections(const NodeBS &cpts, PointsToList &inters)</div><div class="ttdoc">Compute intersections between cpts and computed cpts intersections before. </div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8cpp_source.html#l00152">MemPartition.cpp:152</a></div></div>
|
|
80
80
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_abbd0e0cf759fad7858224ed8a63aade8"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">SVF::SparseBitVector::contains</a></div><div class="ttdeci">bool contains(const SparseBitVector< ElementSize > &RHS) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01071">SparseBitVector.h:1071</a></div></div>
|
|
81
|
-
<div class="ttc" id="classSVF_1_1MRGenerator_html_af94bd8155a23273aab2396334d905119"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#af94bd8155a23273aab2396334d905119">SVF::MRGenerator::memRegSet</a></div><div class="ttdeci">MRSet memRegSet</div><div class="ttdoc">A set of All memory regions. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#
|
|
81
|
+
<div class="ttc" id="classSVF_1_1MRGenerator_html_af94bd8155a23273aab2396334d905119"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#af94bd8155a23273aab2396334d905119">SVF::MRGenerator::memRegSet</a></div><div class="ttdeci">MRSet memRegSet</div><div class="ttdoc">A set of All memory regions. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00278">MemRegion.h:278</a></div></div>
|
|
82
82
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a1b5abe09fd0fcd337385653cb47343c1"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">SVF::SparseBitVector::end</a></div><div class="ttdeci">iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01118">SparseBitVector.h:1118</a></div></div>
|
|
83
|
-
<div class="ttc" id="classSVF_1_1MRGenerator_html_a1331e6f0941838064d77a5adaa5c6303"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a1331e6f0941838064d77a5adaa5c6303">SVF::MRGenerator::getFunToPointsToList</a></div><div class="ttdeci">FunToPointsTosMap & getFunToPointsToList()</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#
|
|
84
|
-
<div class="ttc" id="classSVF_1_1MRGenerator_html_a8b254a0c5063e25f297d1b00fb0b515e"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">SVF::MRGenerator::PointsToList</a></div><div class="ttdeci">OrderedSet< NodeBS, SVFUtil::equalNodeBS > PointsToList</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#
|
|
83
|
+
<div class="ttc" id="classSVF_1_1MRGenerator_html_a1331e6f0941838064d77a5adaa5c6303"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a1331e6f0941838064d77a5adaa5c6303">SVF::MRGenerator::getFunToPointsToList</a></div><div class="ttdeci">FunToPointsTosMap & getFunToPointsToList()</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00371">MemRegion.h:371</a></div></div>
|
|
84
|
+
<div class="ttc" id="classSVF_1_1MRGenerator_html_a8b254a0c5063e25f297d1b00fb0b515e"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">SVF::MRGenerator::PointsToList</a></div><div class="ttdeci">OrderedSet< NodeBS, SVFUtil::equalNodeBS > PointsToList</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00143">MemRegion.h:143</a></div></div>
|
|
85
85
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a16756e0545fd3d50ab89f45a2e83bb79"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a16756e0545fd3d50ab89f45a2e83bb79">SVF::SparseBitVector::intersects</a></div><div class="ttdeci">bool intersects(const SparseBitVector< ElementSize > *RHS) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01029">SparseBitVector.h:1029</a></div></div>
|
|
86
86
|
<div class="ttc" id="classSVF_1_1DistinctMRG_html_a4512ef21fa83988ad4d588831bfba482"><div class="ttname"><a href="classSVF_1_1DistinctMRG.html#a4512ef21fa83988ad4d588831bfba482">SVF::DistinctMRG::partitionMRs</a></div><div class="ttdeci">virtual void partitionMRs()</div><div class="ttdoc">Partition regions. </div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8cpp_source.html#l00042">MemPartition.cpp:42</a></div></div>
|
|
87
87
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_abf76d8157c49ddba24bdc9dab3655772"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">SVF::SparseBitVector::begin</a></div><div class="ttdeci">iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01113">SparseBitVector.h:1113</a></div></div>
|
|
@@ -90,13 +90,13 @@ $(function() {
|
|
|
90
90
|
<div class="ttc" id="classSVF_1_1IntraDisjointMRG_html_a17d0ad0c62982d2b03121e935469e7b2"><div class="ttname"><a href="classSVF_1_1IntraDisjointMRG.html#a17d0ad0c62982d2b03121e935469e7b2">SVF::IntraDisjointMRG::createDisjointMR</a></div><div class="ttdeci">void createDisjointMR(const SVFFunction *func, const NodeBS &cpts)</div><div class="ttdoc">Create disjoint memory region. </div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8cpp_source.html#l00232">MemPartition.cpp:232</a></div></div>
|
|
91
91
|
<div class="ttc" id="classSVF_1_1DistinctMRG_html_a74c36d4c98b95c2d40c9970e5f6aecc1"><div class="ttname"><a href="classSVF_1_1DistinctMRG.html#a74c36d4c98b95c2d40c9970e5f6aecc1">SVF::DistinctMRG::getMRsForCallSiteRef</a></div><div class="ttdeci">virtual void getMRsForCallSiteRef(MRSet &aliasMRs, const NodeBS &cpts, const SVFFunction *fun)</div><div class="ttdoc">Get memory regions to be inserted at a load statement. </div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8cpp_source.html#l00115">MemPartition.cpp:115</a></div></div>
|
|
92
92
|
<div class="ttc" id="classSVF_1_1InterDisjointMRG_html_a807cf159e53c2fb2903296207185dda0"><div class="ttname"><a href="classSVF_1_1InterDisjointMRG.html#a807cf159e53c2fb2903296207185dda0">SVF::InterDisjointMRG::partitionMRs</a></div><div class="ttdeci">virtual void partitionMRs()</div><div class="ttdoc">Partition regions. </div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8cpp_source.html#l00269">MemPartition.cpp:269</a></div></div>
|
|
93
|
-
<div class="ttc" id="classSVF_1_1MRGenerator_html_ab4d1ff0357d389a65ff1c2112ce631a1"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">SVF::MRGenerator::cptsToRepCPtsMap</a></div><div class="ttdeci">PtsToRepPtsSetMap cptsToRepCPtsMap</div><div class="ttdoc">Map a condition pts to its rep conditional pts (super set points-to) </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#
|
|
93
|
+
<div class="ttc" id="classSVF_1_1MRGenerator_html_ab4d1ff0357d389a65ff1c2112ce631a1"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">SVF::MRGenerator::cptsToRepCPtsMap</a></div><div class="ttdeci">PtsToRepPtsSetMap cptsToRepCPtsMap</div><div class="ttdoc">Map a condition pts to its rep conditional pts (super set points-to) </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00280">MemRegion.h:280</a></div></div>
|
|
94
94
|
<div class="ttc" id="classSVF_1_1IntraDisjointMRG_html_a6d2434f0e3a318b89b7b9fa4f5613b64"><div class="ttname"><a href="classSVF_1_1IntraDisjointMRG.html#a6d2434f0e3a318b89b7b9fa4f5613b64">SVF::IntraDisjointMRG::partitionMRs</a></div><div class="ttdeci">virtual void partitionMRs()</div><div class="ttdoc">Partition regions. </div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8cpp_source.html#l00122">MemPartition.cpp:122</a></div></div>
|
|
95
95
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00745">SparseBitVector.h:745</a></div></div>
|
|
96
|
-
<div class="ttc" id="classSVF_1_1MemRegion_html"><div class="ttname"><a href="classSVF_1_1MemRegion.html">SVF::MemRegion</a></div><div class="ttdoc">Memory Region class. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#
|
|
96
|
+
<div class="ttc" id="classSVF_1_1MemRegion_html"><div class="ttname"><a href="classSVF_1_1MemRegion.html">SVF::MemRegion</a></div><div class="ttdoc">Memory Region class. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00055">MemRegion.h:55</a></div></div>
|
|
97
97
|
<div class="ttc" id="classSVF_1_1DistinctMRG_html_a1a4fa7e9fb42a59fac2104b208a1e66b"><div class="ttname"><a href="classSVF_1_1DistinctMRG.html#a1a4fa7e9fb42a59fac2104b208a1e66b">SVF::DistinctMRG::getMRsForLoad</a></div><div class="ttdeci">virtual void getMRsForLoad(MRSet &aliasMRs, const NodeBS &cpts, const SVFFunction *fun)</div><div class="ttdoc">Get memory region at a load. </div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8cpp_source.html#l00091">MemPartition.cpp:91</a></div></div>
|
|
98
98
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_aea5389ad7e5fe4c8bef686940a1a6056"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#aea5389ad7e5fe4c8bef686940a1a6056">SVF::SparseBitVector::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01097">SparseBitVector.h:1097</a></div></div>
|
|
99
|
-
<div class="ttc" id="classSVF_1_1MRGenerator_html_a98ac3bf264e6a85d172c2c4264ea908f"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">SVF::MRGenerator::MRSet</a></div><div class="ttdeci">OrderedSet< const MemRegion *, MemRegion::equalMemRegion > MRSet</div><div class="ttdoc">Get typedef from Pointer Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#
|
|
99
|
+
<div class="ttc" id="classSVF_1_1MRGenerator_html_a98ac3bf264e6a85d172c2c4264ea908f"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">SVF::MRGenerator::MRSet</a></div><div class="ttdeci">OrderedSet< const MemRegion *, MemRegion::equalMemRegion > MRSet</div><div class="ttdoc">Get typedef from Pointer Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00141">MemRegion.h:141</a></div></div>
|
|
100
100
|
</div><!-- fragment --></div><!-- contents -->
|
|
101
101
|
<!-- start footer part -->
|
|
102
102
|
<hr class="footer"/><address class="footer"><small>
|
|
@@ -66,7 +66,7 @@ $(function() {
|
|
|
66
66
|
<div class="title">MemPartition.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="MemPartition_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- MemPartition.h -- Memory region partition-----------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * @file: DisnctMRGenerator.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * @author: yesen</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * @date: 07/12/2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * @version: 1.0</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> *</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * @section LICENSE</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> *</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * @section DESCRIPTION</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#ifndef DISNCTMRGENERATOR_H_</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define DISNCTMRGENERATOR_H_</span></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="preprocessor">#include "<a class="code" href="MemRegion_8h.html">MSSA/MemRegion.h</a>"</span></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> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1DistinctMRG.html"> 47</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1DistinctMRG.html">DistinctMRG</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1DistinctMRG.html#ad7e4959327aa45932fd788bacca0de01"> 50</a></span>  <a class="code" href="classSVF_1_1DistinctMRG.html#ad7e4959327aa45932fd788bacca0de01">DistinctMRG</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>, <span class="keywordtype">bool</span> ptrOnly) : <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a>(p, ptrOnly)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {}</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1DistinctMRG.html#abeb93eb39a51280afd9d55e8a09b1d9a"> 53</a></span>  <a class="code" href="classSVF_1_1DistinctMRG.html#abeb93eb39a51280afd9d55e8a09b1d9a">~DistinctMRG</a>() {}</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DistinctMRG.html#a4512ef21fa83988ad4d588831bfba482">partitionMRs</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DistinctMRG.html#a1a4fa7e9fb42a59fac2104b208a1e66b">getMRsForLoad</a>(<a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRSet</a>& aliasMRs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DistinctMRG.html#a74c36d4c98b95c2d40c9970e5f6aecc1">getMRsForCallSiteRef</a>(<a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRSet</a>& aliasMRs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DistinctMRG.html#a7a6ffa1c8dc8e624e3b42f97e6e4b393">createDistinctMR</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> };</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html"> 73</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1IntraDisjointMRG.html">IntraDisjointMRG</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a></div><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="keyword">public</span>:</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#a5ff8d1cade33445ef7c17f0aedd6a4d1"> 76</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<NodeBS, PointsToList></a> <a class="code" href="classSVF_1_1IntraDisjointMRG.html#a5ff8d1cade33445ef7c17f0aedd6a4d1">PtsToSubPtsMap</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#a824dec1bb1df5052252e7fe0dd55a894"> 77</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFFunction*, PtsToSubPtsMap></a> <a class="code" href="classSVF_1_1IntraDisjointMRG.html#a824dec1bb1df5052252e7fe0dd55a894">FunToPtsMap</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#ad59c11753db0b310246418df4c62f639"> 78</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFFunction*, PointsToList></a> <a class="code" href="classSVF_1_1IntraDisjointMRG.html#ad59c11753db0b310246418df4c62f639">FunToInterMap</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#ae4bc9b653e15ce876579741e91a463ae"> 80</a></span>  <a class="code" href="classSVF_1_1IntraDisjointMRG.html#ae4bc9b653e15ce876579741e91a463ae">IntraDisjointMRG</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>, <span class="keywordtype">bool</span> ptrOnly) : <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a>(p, ptrOnly)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {}</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#ad92695f6ff2cb62f58b48d68b0b6fb0e"> 83</a></span>  <a class="code" href="classSVF_1_1IntraDisjointMRG.html#ad92695f6ff2cb62f58b48d68b0b6fb0e">~IntraDisjointMRG</a>() {}</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> <span class="keyword">protected</span>:</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DistinctMRG.html#a4512ef21fa83988ad4d588831bfba482">partitionMRs</a>();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#ae577d4d6f3a6e6fb62f6eff49ca6be88"> 96</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IntraDisjointMRG.html#ae577d4d6f3a6e6fb62f6eff49ca6be88">getMRsForLoad</a>(<a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRSet</a>& aliasMRs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">PointsToList</a>& inters = getIntersList(fun);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  getMRsForLoadFromInterList(aliasMRs, cpts, inters);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">void</span> getMRsForLoadFromInterList(<a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRSet</a>& mrs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">PointsToList</a>& inters);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DistinctMRG.html#a74c36d4c98b95c2d40c9970e5f6aecc1">getMRsForCallSiteRef</a>(<a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRSet</a>& aliasMRs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">void</span> createDisjointMR(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordtype">void</span> computeIntersections(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts, <a class="code" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">PointsToList</a>& inters);</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> <span class="keyword">private</span>:</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#ae3c857c056f4e6e863843bafba7fdea1"> 115</a></span>  <span class="keyword">inline</span> PtsToSubPtsMap& <a class="code" href="classSVF_1_1IntraDisjointMRG.html#ae3c857c056f4e6e863843bafba7fdea1">getPtsSubSetMap</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> funcToPtsMap[func];</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#aa8c653e895ff0889615cdbf349be7652"> 120</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">PointsToList</a>& <a class="code" href="classSVF_1_1IntraDisjointMRG.html#aa8c653e895ff0889615cdbf349be7652">getIntersList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)</div><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="keywordflow">return</span> funcToInterMap[func];</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> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#ad0640ef6e02d9a90964ca495c0fd8f53"> 125</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> PtsToSubPtsMap& <a class="code" href="classSVF_1_1IntraDisjointMRG.html#ad0640ef6e02d9a90964ca495c0fd8f53">getPtsSubSetMap</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)<span class="keyword"> const</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  FunToPtsMap::const_iterator it = funcToPtsMap.find(func);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  assert(it != funcToPtsMap.end() && <span class="stringliteral">"can not find pts map for specified function"</span>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#a4b05180c942c1d049e70f8050f4186f6"> 132</a></span>  FunToPtsMap <a class="code" href="classSVF_1_1IntraDisjointMRG.html#a4b05180c942c1d049e70f8050f4186f6">funcToPtsMap</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#ac3873b9ae1339e8d502e85c217638078"> 133</a></span>  FunToInterMap <a class="code" href="classSVF_1_1IntraDisjointMRG.html#ac3873b9ae1339e8d502e85c217638078">funcToInterMap</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> };</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1InterDisjointMRG.html"> 139</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1InterDisjointMRG.html">InterDisjointMRG</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1IntraDisjointMRG.html">IntraDisjointMRG</a></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classSVF_1_1InterDisjointMRG.html#a91e89081103f451945baadaea370b428"> 142</a></span>  <a class="code" href="classSVF_1_1InterDisjointMRG.html#a91e89081103f451945baadaea370b428">InterDisjointMRG</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>, <span class="keywordtype">bool</span> ptrOnly) : <a class="code" href="classSVF_1_1IntraDisjointMRG.html">IntraDisjointMRG</a>(p, ptrOnly)</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> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classSVF_1_1InterDisjointMRG.html#a664e831aa98e3c894e794273fbb78591"> 145</a></span>  <a class="code" href="classSVF_1_1InterDisjointMRG.html#a664e831aa98e3c894e794273fbb78591">~InterDisjointMRG</a>() {}</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> <span class="keyword">protected</span>:</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DistinctMRG.html#a4512ef21fa83988ad4d588831bfba482">partitionMRs</a>();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classSVF_1_1InterDisjointMRG.html#ae7846579fc473ae5eb6c9a8fac712d9a"> 157</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1InterDisjointMRG.html#ae7846579fc473ae5eb6c9a8fac712d9a">getMRsForLoad</a>(<a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRSet</a>& aliasMRs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts,</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>*)</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>  getMRsForLoadFromInterList(aliasMRs, cpts, inters);</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> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classSVF_1_1InterDisjointMRG.html#a104134d0f7c8b16abe8f5f3899c3bbf0"> 164</a></span>  <a class="code" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">PointsToList</a> <a class="code" href="classSVF_1_1InterDisjointMRG.html#a104134d0f7c8b16abe8f5f3899c3bbf0">inters</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> };</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor">#endif </span><span class="comment">/* DISNCTMRGENERATOR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html">SVF::BVDataPTAImpl</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00042">PointerAnalysisImpl.h:42</a></div></div>
|
|
69
|
+
<a href="MemPartition_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- MemPartition.h -- Memory region partition-----------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * @file: DisnctMRGenerator.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * @author: yesen</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * @date: 07/12/2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * @version: 1.0</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> *</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * @section LICENSE</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> *</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * @section DESCRIPTION</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#ifndef DISNCTMRGENERATOR_H_</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define DISNCTMRGENERATOR_H_</span></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="preprocessor">#include "<a class="code" href="MemRegion_8h.html">MSSA/MemRegion.h</a>"</span></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> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1DistinctMRG.html"> 47</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1DistinctMRG.html">DistinctMRG</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1DistinctMRG.html#ad7e4959327aa45932fd788bacca0de01"> 50</a></span>  <a class="code" href="classSVF_1_1DistinctMRG.html#ad7e4959327aa45932fd788bacca0de01">DistinctMRG</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>, <span class="keywordtype">bool</span> ptrOnly) : <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a>(p, ptrOnly)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {}</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1DistinctMRG.html#abeb93eb39a51280afd9d55e8a09b1d9a"> 53</a></span>  <a class="code" href="classSVF_1_1DistinctMRG.html#abeb93eb39a51280afd9d55e8a09b1d9a">~DistinctMRG</a>() {}</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DistinctMRG.html#a4512ef21fa83988ad4d588831bfba482">partitionMRs</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DistinctMRG.html#a1a4fa7e9fb42a59fac2104b208a1e66b">getMRsForLoad</a>(<a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRSet</a>& aliasMRs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DistinctMRG.html#a74c36d4c98b95c2d40c9970e5f6aecc1">getMRsForCallSiteRef</a>(<a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRSet</a>& aliasMRs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DistinctMRG.html#a7a6ffa1c8dc8e624e3b42f97e6e4b393">createDistinctMR</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> };</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html"> 73</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1IntraDisjointMRG.html">IntraDisjointMRG</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a></div><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="keyword">public</span>:</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#a5ff8d1cade33445ef7c17f0aedd6a4d1"> 76</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<NodeBS, PointsToList></a> <a class="code" href="classSVF_1_1IntraDisjointMRG.html#a5ff8d1cade33445ef7c17f0aedd6a4d1">PtsToSubPtsMap</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#a824dec1bb1df5052252e7fe0dd55a894"> 77</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFFunction*, PtsToSubPtsMap></a> <a class="code" href="classSVF_1_1IntraDisjointMRG.html#a824dec1bb1df5052252e7fe0dd55a894">FunToPtsMap</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#ad59c11753db0b310246418df4c62f639"> 78</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFFunction*, PointsToList></a> <a class="code" href="classSVF_1_1IntraDisjointMRG.html#ad59c11753db0b310246418df4c62f639">FunToInterMap</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#ae4bc9b653e15ce876579741e91a463ae"> 80</a></span>  <a class="code" href="classSVF_1_1IntraDisjointMRG.html#ae4bc9b653e15ce876579741e91a463ae">IntraDisjointMRG</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>, <span class="keywordtype">bool</span> ptrOnly) : <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a>(p, ptrOnly)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {}</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#ad92695f6ff2cb62f58b48d68b0b6fb0e"> 83</a></span>  <a class="code" href="classSVF_1_1IntraDisjointMRG.html#ad92695f6ff2cb62f58b48d68b0b6fb0e">~IntraDisjointMRG</a>() {}</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> <span class="keyword">protected</span>:</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DistinctMRG.html#a4512ef21fa83988ad4d588831bfba482">partitionMRs</a>();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#ae577d4d6f3a6e6fb62f6eff49ca6be88"> 96</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IntraDisjointMRG.html#ae577d4d6f3a6e6fb62f6eff49ca6be88">getMRsForLoad</a>(<a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRSet</a>& aliasMRs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">PointsToList</a>& inters = getIntersList(fun);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  getMRsForLoadFromInterList(aliasMRs, cpts, inters);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">void</span> getMRsForLoadFromInterList(<a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRSet</a>& mrs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">PointsToList</a>& inters);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DistinctMRG.html#a74c36d4c98b95c2d40c9970e5f6aecc1">getMRsForCallSiteRef</a>(<a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRSet</a>& aliasMRs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">void</span> createDisjointMR(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordtype">void</span> computeIntersections(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts, <a class="code" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">PointsToList</a>& inters);</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> <span class="keyword">private</span>:</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#ae3c857c056f4e6e863843bafba7fdea1"> 115</a></span>  <span class="keyword">inline</span> PtsToSubPtsMap& <a class="code" href="classSVF_1_1IntraDisjointMRG.html#ae3c857c056f4e6e863843bafba7fdea1">getPtsSubSetMap</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> funcToPtsMap[func];</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#aa8c653e895ff0889615cdbf349be7652"> 120</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">PointsToList</a>& <a class="code" href="classSVF_1_1IntraDisjointMRG.html#aa8c653e895ff0889615cdbf349be7652">getIntersList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)</div><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="keywordflow">return</span> funcToInterMap[func];</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> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#ad0640ef6e02d9a90964ca495c0fd8f53"> 125</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> PtsToSubPtsMap& <a class="code" href="classSVF_1_1IntraDisjointMRG.html#ad0640ef6e02d9a90964ca495c0fd8f53">getPtsSubSetMap</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)<span class="keyword"> const</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  FunToPtsMap::const_iterator it = funcToPtsMap.find(func);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  assert(it != funcToPtsMap.end() && <span class="stringliteral">"can not find pts map for specified function"</span>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#a4b05180c942c1d049e70f8050f4186f6"> 132</a></span>  FunToPtsMap <a class="code" href="classSVF_1_1IntraDisjointMRG.html#a4b05180c942c1d049e70f8050f4186f6">funcToPtsMap</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraDisjointMRG.html#ac3873b9ae1339e8d502e85c217638078"> 133</a></span>  FunToInterMap <a class="code" href="classSVF_1_1IntraDisjointMRG.html#ac3873b9ae1339e8d502e85c217638078">funcToInterMap</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> };</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1InterDisjointMRG.html"> 139</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1InterDisjointMRG.html">InterDisjointMRG</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1IntraDisjointMRG.html">IntraDisjointMRG</a></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classSVF_1_1InterDisjointMRG.html#a91e89081103f451945baadaea370b428"> 142</a></span>  <a class="code" href="classSVF_1_1InterDisjointMRG.html#a91e89081103f451945baadaea370b428">InterDisjointMRG</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>, <span class="keywordtype">bool</span> ptrOnly) : <a class="code" href="classSVF_1_1IntraDisjointMRG.html">IntraDisjointMRG</a>(p, ptrOnly)</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> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classSVF_1_1InterDisjointMRG.html#a664e831aa98e3c894e794273fbb78591"> 145</a></span>  <a class="code" href="classSVF_1_1InterDisjointMRG.html#a664e831aa98e3c894e794273fbb78591">~InterDisjointMRG</a>() {}</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> <span class="keyword">protected</span>:</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DistinctMRG.html#a4512ef21fa83988ad4d588831bfba482">partitionMRs</a>();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classSVF_1_1InterDisjointMRG.html#ae7846579fc473ae5eb6c9a8fac712d9a"> 157</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1InterDisjointMRG.html#ae7846579fc473ae5eb6c9a8fac712d9a">getMRsForLoad</a>(<a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRSet</a>& aliasMRs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts,</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>*)</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>  getMRsForLoadFromInterList(aliasMRs, cpts, inters);</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> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classSVF_1_1InterDisjointMRG.html#a104134d0f7c8b16abe8f5f3899c3bbf0"> 164</a></span>  <a class="code" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">PointsToList</a> <a class="code" href="classSVF_1_1InterDisjointMRG.html#a104134d0f7c8b16abe8f5f3899c3bbf0">inters</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> };</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor">#endif </span><span class="comment">/* DISNCTMRGENERATOR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html">SVF::BVDataPTAImpl</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00042">PointerAnalysisImpl.h:42</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1IntraDisjointMRG_html"><div class="ttname"><a href="classSVF_1_1IntraDisjointMRG.html">SVF::IntraDisjointMRG</a></div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8h_source.html#l00073">MemPartition.h:73</a></div></div>
|
|
71
71
|
<div class="ttc" id="classSVF_1_1InterDisjointMRG_html_ae7846579fc473ae5eb6c9a8fac712d9a"><div class="ttname"><a href="classSVF_1_1InterDisjointMRG.html#ae7846579fc473ae5eb6c9a8fac712d9a">SVF::InterDisjointMRG::getMRsForLoad</a></div><div class="ttdeci">virtual void getMRsForLoad(MRSet &aliasMRs, const NodeBS &cpts, const SVFFunction *)</div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8h_source.html#l00157">MemPartition.h:157</a></div></div>
|
|
72
72
|
<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>
|
|
@@ -81,10 +81,10 @@ $(function() {
|
|
|
81
81
|
<div class="ttc" id="classSVF_1_1IntraDisjointMRG_html_ad0640ef6e02d9a90964ca495c0fd8f53"><div class="ttname"><a href="classSVF_1_1IntraDisjointMRG.html#ad0640ef6e02d9a90964ca495c0fd8f53">SVF::IntraDisjointMRG::getPtsSubSetMap</a></div><div class="ttdeci">const PtsToSubPtsMap & getPtsSubSetMap(const SVFFunction *func) const</div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8h_source.html#l00125">MemPartition.h:125</a></div></div>
|
|
82
82
|
<div class="ttc" id="classSVF_1_1IntraDisjointMRG_html_ae577d4d6f3a6e6fb62f6eff49ca6be88"><div class="ttname"><a href="classSVF_1_1IntraDisjointMRG.html#ae577d4d6f3a6e6fb62f6eff49ca6be88">SVF::IntraDisjointMRG::getMRsForLoad</a></div><div class="ttdeci">virtual void getMRsForLoad(MRSet &aliasMRs, const NodeBS &cpts, const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8h_source.html#l00096">MemPartition.h:96</a></div></div>
|
|
83
83
|
<div class="ttc" id="classSVF_1_1IntraDisjointMRG_html_ac3873b9ae1339e8d502e85c217638078"><div class="ttname"><a href="classSVF_1_1IntraDisjointMRG.html#ac3873b9ae1339e8d502e85c217638078">SVF::IntraDisjointMRG::funcToInterMap</a></div><div class="ttdeci">FunToInterMap funcToInterMap</div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8h_source.html#l00133">MemPartition.h:133</a></div></div>
|
|
84
|
-
<div class="ttc" id="classSVF_1_1MRGenerator_html"><div class="ttname"><a href="classSVF_1_1MRGenerator.html">SVF::MRGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#
|
|
84
|
+
<div class="ttc" id="classSVF_1_1MRGenerator_html"><div class="ttname"><a href="classSVF_1_1MRGenerator.html">SVF::MRGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00131">MemRegion.h:131</a></div></div>
|
|
85
85
|
<div class="ttc" id="classSVF_1_1InterDisjointMRG_html_a91e89081103f451945baadaea370b428"><div class="ttname"><a href="classSVF_1_1InterDisjointMRG.html#a91e89081103f451945baadaea370b428">SVF::InterDisjointMRG::InterDisjointMRG</a></div><div class="ttdeci">InterDisjointMRG(BVDataPTAImpl *p, bool ptrOnly)</div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8h_source.html#l00142">MemPartition.h:142</a></div></div>
|
|
86
86
|
<div class="ttc" id="classSVF_1_1IntraDisjointMRG_html_ae3c857c056f4e6e863843bafba7fdea1"><div class="ttname"><a href="classSVF_1_1IntraDisjointMRG.html#ae3c857c056f4e6e863843bafba7fdea1">SVF::IntraDisjointMRG::getPtsSubSetMap</a></div><div class="ttdeci">PtsToSubPtsMap & getPtsSubSetMap(const SVFFunction *func)</div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8h_source.html#l00115">MemPartition.h:115</a></div></div>
|
|
87
|
-
<div class="ttc" id="classSVF_1_1MRGenerator_html_a8b254a0c5063e25f297d1b00fb0b515e"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">SVF::MRGenerator::PointsToList</a></div><div class="ttdeci">OrderedSet< NodeBS, SVFUtil::equalNodeBS > PointsToList</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#
|
|
87
|
+
<div class="ttc" id="classSVF_1_1MRGenerator_html_a8b254a0c5063e25f297d1b00fb0b515e"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">SVF::MRGenerator::PointsToList</a></div><div class="ttdeci">OrderedSet< NodeBS, SVFUtil::equalNodeBS > PointsToList</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00143">MemRegion.h:143</a></div></div>
|
|
88
88
|
<div class="ttc" id="classSVF_1_1DistinctMRG_html"><div class="ttname"><a href="classSVF_1_1DistinctMRG.html">SVF::DistinctMRG</a></div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8h_source.html#l00047">MemPartition.h:47</a></div></div>
|
|
89
89
|
<div class="ttc" id="classSVF_1_1DistinctMRG_html_abeb93eb39a51280afd9d55e8a09b1d9a"><div class="ttname"><a href="classSVF_1_1DistinctMRG.html#abeb93eb39a51280afd9d55e8a09b1d9a">SVF::DistinctMRG::~DistinctMRG</a></div><div class="ttdeci">~DistinctMRG()</div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8h_source.html#l00053">MemPartition.h:53</a></div></div>
|
|
90
90
|
<div class="ttc" id="classSVF_1_1DistinctMRG_html_a4512ef21fa83988ad4d588831bfba482"><div class="ttname"><a href="classSVF_1_1DistinctMRG.html#a4512ef21fa83988ad4d588831bfba482">SVF::DistinctMRG::partitionMRs</a></div><div class="ttdeci">virtual void partitionMRs()</div><div class="ttdoc">Partition regions. </div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8cpp_source.html#l00042">MemPartition.cpp:42</a></div></div>
|
|
@@ -99,7 +99,7 @@ $(function() {
|
|
|
99
99
|
<div class="ttc" id="classSVF_1_1DistinctMRG_html_a1a4fa7e9fb42a59fac2104b208a1e66b"><div class="ttname"><a href="classSVF_1_1DistinctMRG.html#a1a4fa7e9fb42a59fac2104b208a1e66b">SVF::DistinctMRG::getMRsForLoad</a></div><div class="ttdeci">virtual void getMRsForLoad(MRSet &aliasMRs, const NodeBS &cpts, const SVFFunction *fun)</div><div class="ttdoc">Get memory region at a load. </div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8cpp_source.html#l00091">MemPartition.cpp:91</a></div></div>
|
|
100
100
|
<div class="ttc" id="classSVF_1_1IntraDisjointMRG_html_ae4bc9b653e15ce876579741e91a463ae"><div class="ttname"><a href="classSVF_1_1IntraDisjointMRG.html#ae4bc9b653e15ce876579741e91a463ae">SVF::IntraDisjointMRG::IntraDisjointMRG</a></div><div class="ttdeci">IntraDisjointMRG(BVDataPTAImpl *p, bool ptrOnly)</div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8h_source.html#l00080">MemPartition.h:80</a></div></div>
|
|
101
101
|
<div class="ttc" id="classSVF_1_1IntraDisjointMRG_html_a4b05180c942c1d049e70f8050f4186f6"><div class="ttname"><a href="classSVF_1_1IntraDisjointMRG.html#a4b05180c942c1d049e70f8050f4186f6">SVF::IntraDisjointMRG::funcToPtsMap</a></div><div class="ttdeci">FunToPtsMap funcToPtsMap</div><div class="ttdef"><b>Definition:</b> <a href="MemPartition_8h_source.html#l00132">MemPartition.h:132</a></div></div>
|
|
102
|
-
<div class="ttc" id="classSVF_1_1MRGenerator_html_a98ac3bf264e6a85d172c2c4264ea908f"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">SVF::MRGenerator::MRSet</a></div><div class="ttdeci">OrderedSet< const MemRegion *, MemRegion::equalMemRegion > MRSet</div><div class="ttdoc">Get typedef from Pointer Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#
|
|
102
|
+
<div class="ttc" id="classSVF_1_1MRGenerator_html_a98ac3bf264e6a85d172c2c4264ea908f"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">SVF::MRGenerator::MRSet</a></div><div class="ttdeci">OrderedSet< const MemRegion *, MemRegion::equalMemRegion > MRSet</div><div class="ttdoc">Get typedef from Pointer Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00141">MemRegion.h:141</a></div></div>
|
|
103
103
|
<div class="ttc" id="namespaceSVF_html_aedf0d6718ca176e0b9e17ab4b30729c6"><div class="ttname"><a href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">SVF::OrderedMap</a></div><div class="ttdeci">std::map< Key, Value, Compare, Allocator > OrderedMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00117">SVFBasicTypes.h:117</a></div></div>
|
|
104
104
|
</div><!-- fragment --></div><!-- contents -->
|
|
105
105
|
<!-- start footer part -->
|