svf-tools 1.0.633 → 1.0.635
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CMakeLists.txt +111 -90
- package/SVF-doxygen/html/html/CFL_2CMakeLists_8txt.html +102 -0
- package/SVF-doxygen/html/html/CMakeLists_8txt.html +73 -0
- package/SVF-doxygen/html/html/DDA_2CMakeLists_8txt.html +102 -0
- package/SVF-doxygen/html/html/Example_2CMakeLists_8txt.html +102 -0
- package/SVF-doxygen/html/html/LockResultValidator_8cpp.html +2 -3
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +6 -52
- package/SVF-doxygen/html/html/LockResultValidator_8h.html +2 -3
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +2 -26
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp.html +3 -3
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +3 -57
- package/SVF-doxygen/html/html/MTAAnnotator_8h.html +5 -6
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +2 -22
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp.html +2 -3
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +12 -72
- package/SVF-doxygen/html/html/MTAResultValidator_8h.html +6 -6
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +76 -114
- package/SVF-doxygen/html/html/MTA_2CMakeLists_8txt.html +102 -0
- package/SVF-doxygen/html/html/SABER_2CMakeLists_8txt.html +102 -0
- package/SVF-doxygen/html/html/WPA_2CMakeLists_8txt.html +102 -0
- package/SVF-doxygen/html/html/annotated.html +9 -468
- package/SVF-doxygen/html/html/cfl_8cpp.html +5 -10
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +2 -12
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +51 -119
- package/SVF-doxygen/html/html/classSVF_1_1MHPValidator-members.html +2 -14
- package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +14 -49
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator-members.html +25 -43
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +67 -187
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator-members.html +20 -48
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +345 -1317
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator-members.html +8 -23
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +137 -758
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator_1_1AccessPair-members.html +3 -7
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator_1_1AccessPair.html +37 -184
- package/SVF-doxygen/html/html/classSVF_1_1RaceValidator-members.html +1 -13
- package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +13 -48
- package/SVF-doxygen/html/html/classes.html +10 -123
- package/SVF-doxygen/html/html/dda_8cpp.html +172 -63
- package/SVF-doxygen/html/html/dda_8cpp_source.html +8 -20
- package/SVF-doxygen/html/html/dir_0c09191358c30c0f2d864382d285cb43.html +1 -1
- package/SVF-doxygen/html/html/files.html +19 -288
- package/SVF-doxygen/html/html/functions.html +322 -300
- package/SVF-doxygen/html/html/functions_func.html +171 -1020
- package/SVF-doxygen/html/html/functions_type.html +27 -17
- package/SVF-doxygen/html/html/functions_vars.html +151 -364
- package/SVF-doxygen/html/html/globals.html +53 -11
- package/SVF-doxygen/html/html/globals_func.html +22 -236
- package/SVF-doxygen/html/html/hierarchy.html +9 -543
- package/SVF-doxygen/html/html/menudata.js +44 -294
- package/SVF-doxygen/html/html/mta_8cpp.html +8 -16
- package/SVF-doxygen/html/html/mta_8cpp_source.html +4 -18
- package/SVF-doxygen/html/html/namespaceSVF.html +9 -6287
- package/SVF-doxygen/html/html/namespacemembers.html +3 -35
- package/SVF-doxygen/html/html/namespacemembers_type.html +3 -26
- package/SVF-doxygen/html/html/namespaces.html +2 -9
- package/SVF-doxygen/html/html/saber_8cpp.html +104 -53
- package/SVF-doxygen/html/html/saber_8cpp_source.html +5 -19
- package/SVF-doxygen/html/html/search/all_0.js +1 -131
- package/SVF-doxygen/html/html/search/all_1.js +4 -449
- package/SVF-doxygen/html/html/search/all_10.js +9 -310
- package/SVF-doxygen/html/html/search/all_11.js +1 -187
- package/SVF-doxygen/html/html/search/all_12.js +4 -474
- package/SVF-doxygen/html/html/search/all_2.js +17 -141
- package/SVF-doxygen/html/html/search/all_3.js +5 -592
- package/SVF-doxygen/html/html/search/all_4.js +3 -222
- package/SVF-doxygen/html/html/search/all_5.js +3 -141
- package/SVF-doxygen/html/html/search/all_6.js +12 -211
- package/SVF-doxygen/html/html/search/all_7.js +1 -923
- package/SVF-doxygen/html/html/search/all_8.js +17 -187
- package/SVF-doxygen/html/html/search/all_9.js +11 -553
- package/SVF-doxygen/html/html/search/all_a.js +17 -10
- package/SVF-doxygen/html/html/search/all_b.js +11 -21
- package/SVF-doxygen/html/html/search/all_c.js +5 -112
- package/SVF-doxygen/html/html/search/all_d.js +15 -190
- package/SVF-doxygen/html/html/search/all_e.js +7 -198
- package/SVF-doxygen/html/html/search/all_f.js +6 -122
- package/SVF-doxygen/html/html/search/classes_0.js +1 -25
- package/SVF-doxygen/html/html/search/classes_1.js +1 -7
- package/SVF-doxygen/html/html/search/classes_2.js +3 -69
- package/SVF-doxygen/html/html/search/classes_3.js +2 -32
- package/SVF-doxygen/html/html/search/files_0.js +2 -11
- package/SVF-doxygen/html/html/search/files_1.js +1 -5
- package/SVF-doxygen/html/html/search/files_2.js +2 -48
- package/SVF-doxygen/html/html/search/files_3.js +5 -14
- package/SVF-doxygen/html/html/search/files_4.js +2 -4
- package/SVF-doxygen/html/html/search/files_5.js +1 -13
- package/SVF-doxygen/html/html/search/functions_0.js +3 -339
- package/SVF-doxygen/html/html/search/functions_1.js +8 -73
- package/SVF-doxygen/html/html/search/functions_2.js +4 -228
- package/SVF-doxygen/html/html/search/functions_3.js +3 -69
- package/SVF-doxygen/html/html/search/functions_4.js +1 -50
- package/SVF-doxygen/html/html/search/functions_5.js +12 -49
- package/SVF-doxygen/html/html/search/functions_6.js +1 -766
- package/SVF-doxygen/html/html/search/functions_7.js +7 -143
- package/SVF-doxygen/html/html/search/functions_8.js +2 -393
- package/SVF-doxygen/html/html/search/functions_9.js +9 -4
- package/SVF-doxygen/html/html/search/functions_a.js +5 -1
- package/SVF-doxygen/html/html/search/functions_b.js +4 -20
- package/SVF-doxygen/html/html/search/functions_c.js +2 -72
- package/SVF-doxygen/html/html/search/functions_d.js +2 -31
- package/SVF-doxygen/html/html/search/functions_e.js +5 -58
- package/SVF-doxygen/html/html/search/functions_f.js +4 -132
- package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
- package/SVF-doxygen/html/html/search/searchdata.js +9 -21
- package/SVF-doxygen/html/html/search/typedefs_0.js +3 -15
- package/SVF-doxygen/html/html/search/typedefs_1.js +2 -24
- package/SVF-doxygen/html/html/search/typedefs_2.js +1 -120
- package/SVF-doxygen/html/html/search/typedefs_3.js +1 -41
- package/SVF-doxygen/html/html/search/typedefs_4.js +3 -15
- package/SVF-doxygen/html/html/search/typedefs_5.js +2 -41
- package/SVF-doxygen/html/html/search/variables_0.js +1 -131
- package/SVF-doxygen/html/html/search/variables_1.js +2 -66
- package/SVF-doxygen/html/html/search/variables_2.js +4 -30
- package/SVF-doxygen/html/html/search/variables_3.js +2 -136
- package/SVF-doxygen/html/html/search/variables_4.js +8 -54
- package/SVF-doxygen/html/html/search/variables_5.js +6 -35
- package/SVF-doxygen/html/html/search/variables_6.js +3 -66
- package/SVF-doxygen/html/html/search/variables_7.js +10 -30
- package/SVF-doxygen/html/html/search/variables_8.js +7 -8
- package/SVF-doxygen/html/html/search/variables_9.js +2 -68
- package/SVF-doxygen/html/html/search/variables_a.js +4 -3
- package/SVF-doxygen/html/html/search/variables_b.js +2 -10
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +31 -86
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -64
- package/SVF-doxygen/html/html/wpa_8cpp.html +6 -12
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +2 -14
- package/package.json +1 -1
- package/svf/CMakeLists.txt +26 -0
- package/{include → svf/include}/AbstractExecution/AbstractValue.h +0 -0
- package/{include → svf/include}/AbstractExecution/AddressValue.h +0 -0
- package/{include → svf/include}/AbstractExecution/ExeState.h +0 -0
- package/{include → svf/include}/AbstractExecution/IntervalExeState.h +0 -0
- package/{include → svf/include}/AbstractExecution/IntervalValue.h +0 -0
- package/{include → svf/include}/AbstractExecution/NumericLiteral.h +0 -0
- package/{include → svf/include}/AbstractExecution/RelExeState.h +0 -0
- package/{include → svf/include}/AbstractExecution/RelationSolver.h +0 -0
- package/{include → svf/include}/AbstractExecution/SVFIR2ItvExeState.h +0 -0
- package/{include → svf/include}/AbstractExecution/WTO.h +0 -0
- package/{include → svf/include}/CFL/CFGNormalizer.h +0 -0
- package/{include → svf/include}/CFL/CFLAlias.h +0 -0
- package/{include → svf/include}/CFL/CFLBase.h +0 -0
- package/{include → svf/include}/CFL/CFLData.h +0 -0
- package/{include → svf/include}/CFL/CFLDataBuilder.h +0 -0
- package/{include → svf/include}/CFL/CFLGramGraphChecker.h +0 -0
- package/{include → svf/include}/CFL/CFLGrammar.h +0 -0
- package/{include → svf/include}/CFL/CFLGrammar.txt +0 -0
- package/{include → svf/include}/CFL/CFLGraphBuilder.h +0 -0
- package/{include → svf/include}/CFL/CFLSolver.h +0 -0
- package/{include → svf/include}/CFL/CFLStat.h +0 -0
- package/{include → svf/include}/CFL/CFLVF.h +0 -0
- package/{include → svf/include}/CFL/GrammarBuilder.h +0 -0
- package/{include → svf/include}/CFL/PEGGrammar.txt +0 -0
- package/{include → svf/include}/CFL/VFG.txt +0 -0
- package/{include → svf/include}/DDA/ContextDDA.h +0 -0
- package/{include → svf/include}/DDA/DDAClient.h +0 -0
- package/{include → svf/include}/DDA/DDAPass.h +0 -0
- package/{include → svf/include}/DDA/DDAStat.h +0 -0
- package/{include → svf/include}/DDA/DDAVFSolver.h +0 -0
- package/{include → svf/include}/DDA/FlowDDA.h +0 -0
- package/{include → svf/include}/FastCluster/LICENSE.TXT +0 -0
- package/{include → svf/include}/FastCluster/fastcluster.h +0 -0
- package/{include → svf/include}/Graphs/CFLGraph.h +0 -0
- package/{include → svf/include}/Graphs/CHG.h +0 -0
- package/{include → svf/include}/Graphs/ConsG.h +0 -0
- package/{include → svf/include}/Graphs/ConsGEdge.h +0 -0
- package/{include → svf/include}/Graphs/ConsGNode.h +0 -0
- package/{include → svf/include}/Graphs/DOTGraphTraits.h +0 -0
- package/{include → svf/include}/Graphs/GenericGraph.h +0 -0
- package/{include → svf/include}/Graphs/GraphPrinter.h +0 -0
- package/{include → svf/include}/Graphs/GraphTraits.h +0 -0
- package/{include → svf/include}/Graphs/GraphWriter.h +0 -0
- package/{include → svf/include}/Graphs/ICFG.h +0 -0
- package/{include → svf/include}/Graphs/ICFGEdge.h +0 -0
- package/{include → svf/include}/Graphs/ICFGNode.h +0 -0
- package/{include → svf/include}/Graphs/ICFGStat.h +0 -0
- package/{include → svf/include}/Graphs/IRGraph.h +0 -0
- package/{include → svf/include}/Graphs/PTACallGraph.h +0 -0
- package/{include → svf/include}/Graphs/SVFG.h +0 -0
- package/{include → svf/include}/Graphs/SVFGEdge.h +0 -0
- package/{include → svf/include}/Graphs/SVFGNode.h +0 -0
- package/{include → svf/include}/Graphs/SVFGOPT.h +0 -0
- package/{include → svf/include}/Graphs/SVFGStat.h +0 -0
- package/{include → svf/include}/Graphs/ThreadCallGraph.h +0 -0
- package/{include → svf/include}/Graphs/VFG.h +0 -0
- package/{include → svf/include}/Graphs/VFGEdge.h +0 -0
- package/{include → svf/include}/Graphs/VFGNode.h +0 -0
- package/{include → svf/include}/MSSA/MSSAMuChi.h +0 -0
- package/{include → svf/include}/MSSA/MemPartition.h +0 -0
- package/{include → svf/include}/MSSA/MemRegion.h +0 -0
- package/{include → svf/include}/MSSA/MemSSA.h +0 -0
- package/{include → svf/include}/MSSA/SVFGBuilder.h +0 -0
- package/{include → svf/include}/MTA/FSMPTA.h +0 -0
- package/{include → svf/include}/MTA/LockAnalysis.h +0 -0
- package/{include → svf/include}/MTA/MHP.h +0 -0
- package/{include → svf/include}/MTA/MTA.h +0 -0
- package/{include → svf/include}/MTA/MTAResultValidator.h +0 -0
- package/{include → svf/include}/MTA/MTAStat.h +0 -0
- package/{include → svf/include}/MTA/PCG.h +0 -0
- package/{include → svf/include}/MTA/TCT.h +0 -0
- package/{include → svf/include}/MemoryModel/AbstractPointsToDS.h +0 -0
- package/{include → svf/include}/MemoryModel/ConditionalPT.h +0 -0
- package/{include → svf/include}/MemoryModel/LocationSet.h +0 -0
- package/{include → svf/include}/MemoryModel/MutablePointsToDS.h +0 -0
- package/{include → svf/include}/MemoryModel/PersistentPointsToCache.h +0 -0
- package/{include → svf/include}/MemoryModel/PersistentPointsToDS.h +0 -0
- package/{include → svf/include}/MemoryModel/PointerAnalysis.h +0 -0
- package/{include → svf/include}/MemoryModel/PointerAnalysisImpl.h +0 -0
- package/{include → svf/include}/MemoryModel/PointsTo.h +0 -0
- package/{include → svf/include}/MemoryModel/SVFLoop.h +0 -0
- package/{include → svf/include}/SABER/DoubleFreeChecker.h +0 -0
- package/{include → svf/include}/SABER/FileChecker.h +0 -0
- package/{include → svf/include}/SABER/LeakChecker.h +0 -0
- package/{include → svf/include}/SABER/ProgSlice.h +0 -0
- package/{include → svf/include}/SABER/SaberCheckerAPI.h +0 -0
- package/{include → svf/include}/SABER/SaberCondAllocator.h +0 -0
- package/{include → svf/include}/SABER/SaberSVFGBuilder.h +0 -0
- package/{include → svf/include}/SABER/SrcSnkDDA.h +0 -0
- package/{include → svf/include}/SABER/SrcSnkSolver.h +0 -0
- package/{include → svf/include}/SVFIR/PAGBuilderFromFile.h +0 -0
- package/{include → svf/include}/SVFIR/SVFIR.h +0 -0
- package/{include → svf/include}/SVFIR/SVFModule.h +0 -0
- package/{include → svf/include}/SVFIR/SVFStatements.h +0 -0
- package/{include → svf/include}/SVFIR/SVFType.h +12 -14
- package/{include → svf/include}/SVFIR/SVFValue.h +0 -0
- package/{include → svf/include}/SVFIR/SVFVariables.h +0 -0
- package/{include → svf/include}/SVFIR/SymbolTableInfo.h +0 -0
- package/{include → svf/include}/Util/Annotator.h +0 -0
- package/{include → svf/include}/Util/BitVector.h +0 -0
- package/{include → svf/include}/Util/CallGraphBuilder.h +0 -0
- package/{include → svf/include}/Util/Casting.h +0 -0
- package/{include → svf/include}/Util/CommandLine.h +0 -0
- package/{include → svf/include}/Util/CoreBitVector.h +0 -0
- package/{include → svf/include}/Util/CppUtil.h +0 -0
- package/{include → svf/include}/Util/CxtStmt.h +0 -0
- package/{include → svf/include}/Util/DPItem.h +0 -0
- package/{include → svf/include}/Util/ExtAPI.h +2 -2
- package/{include → svf/include}/Util/ExtAPI.json +0 -0
- package/{include → svf/include}/Util/GraphReachSolver.h +0 -0
- package/{include → svf/include}/Util/NodeIDAllocator.h +0 -0
- package/{include → svf/include}/Util/Options.h +0 -0
- package/{include → svf/include}/Util/PTAStat.h +0 -0
- package/{include → svf/include}/Util/SCC.h +0 -0
- package/{include → svf/include}/Util/SVFStat.h +0 -0
- package/{include → svf/include}/Util/SVFUtil.h +0 -0
- package/{include → svf/include}/Util/SparseBitVector.h +0 -0
- package/{include → svf/include}/Util/ThreadAPI.h +0 -0
- package/{include → svf/include}/Util/WorkList.h +0 -0
- package/{include → svf/include}/Util/Z3Expr.h +0 -0
- package/{include → svf/include}/Util/cJSON.h +0 -0
- package/{include → svf/include}/Util/iterator.h +0 -0
- package/{include → svf/include}/Util/iterator_range.h +0 -0
- package/{include → svf/include}/WPA/Andersen.h +0 -0
- package/{include → svf/include}/WPA/AndersenPWC.h +0 -0
- package/{include → svf/include}/WPA/CSC.h +0 -0
- package/{include → svf/include}/WPA/FlowSensitive.h +0 -0
- package/{include → svf/include}/WPA/Steensgaard.h +0 -0
- package/{include → svf/include}/WPA/TypeAnalysis.h +0 -0
- package/{include → svf/include}/WPA/VersionedFlowSensitive.h +0 -0
- package/{include → svf/include}/WPA/WPAFSSolver.h +0 -0
- package/{include → svf/include}/WPA/WPAPass.h +0 -0
- package/{include → svf/include}/WPA/WPASolver.h +0 -0
- package/{include → svf/include}/WPA/WPAStat.h +0 -0
- package/{lib → svf/lib}/AbstractExecution/ExeState.cpp +0 -0
- package/{lib → svf/lib}/AbstractExecution/IntervalExeState.cpp +0 -0
- package/{lib → svf/lib}/AbstractExecution/RelExeState.cpp +0 -0
- package/{lib → svf/lib}/AbstractExecution/RelationSolver.cpp +0 -0
- package/{lib → svf/lib}/AbstractExecution/SVFIR2ItvExeState.cpp +0 -0
- package/{lib → svf/lib}/AbstractExecution/SVFIR2Relation.cpp +0 -0
- package/{lib → svf/lib}/CFL/CFGNormalizer.cpp +0 -0
- package/{lib → svf/lib}/CFL/CFLAlias.cpp +0 -0
- package/{lib → svf/lib}/CFL/CFLBase.cpp +0 -0
- package/{lib → svf/lib}/CFL/CFLGrammar.cpp +0 -0
- package/{lib → svf/lib}/CFL/CFLGraphBuilder.cpp +0 -0
- package/{lib → svf/lib}/CFL/CFLSolver.cpp +0 -0
- package/{lib → svf/lib}/CFL/CFLStat.cpp +0 -0
- package/{lib → svf/lib}/CFL/CFLVF.cpp +0 -0
- package/{lib → svf/lib}/CFL/GrammarBuilder.cpp +6 -1
- package/{lib → svf/lib}/DDA/ContextDDA.cpp +0 -0
- package/{lib → svf/lib}/DDA/DDAClient.cpp +0 -0
- package/{lib → svf/lib}/DDA/DDAPass.cpp +0 -0
- package/{lib → svf/lib}/DDA/DDAStat.cpp +0 -0
- package/{lib → svf/lib}/DDA/FlowDDA.cpp +0 -0
- package/{lib → svf/lib}/FastCluster/LICENSE.TXT +0 -0
- package/{lib → svf/lib}/FastCluster/fastcluster.cpp +0 -0
- package/{lib → svf/lib}/FastCluster/fastcluster_R_dm.cpp.inc +0 -0
- package/{lib → svf/lib}/FastCluster/fastcluster_dm.cpp.inc +0 -0
- package/{lib → svf/lib}/Graphs/CFLGraph.cpp +0 -0
- package/{lib → svf/lib}/Graphs/CHG.cpp +0 -0
- package/{lib → svf/lib}/Graphs/ConsG.cpp +0 -0
- package/{lib → svf/lib}/Graphs/GraphWriter.cpp +0 -0
- package/{lib → svf/lib}/Graphs/ICFG.cpp +0 -0
- package/{lib → svf/lib}/Graphs/IRGraph.cpp +0 -0
- package/{lib → svf/lib}/Graphs/PTACallGraph.cpp +0 -0
- package/{lib → svf/lib}/Graphs/SVFG.cpp +0 -0
- package/{lib → svf/lib}/Graphs/SVFGOPT.cpp +0 -0
- package/{lib → svf/lib}/Graphs/SVFGReadWrite.cpp +0 -0
- package/{lib → svf/lib}/Graphs/SVFGStat.cpp +0 -0
- package/{lib → svf/lib}/Graphs/ThreadCallGraph.cpp +0 -0
- package/{lib → svf/lib}/Graphs/VFG.cpp +0 -0
- package/{lib → svf/lib}/MSSA/MemPartition.cpp +0 -0
- package/{lib → svf/lib}/MSSA/MemRegion.cpp +0 -0
- package/{lib → svf/lib}/MSSA/MemSSA.cpp +0 -0
- package/{lib → svf/lib}/MSSA/SVFGBuilder.cpp +0 -0
- package/{lib → svf/lib}/MTA/FSMPTA.cpp +0 -0
- package/{lib → svf/lib}/MTA/LockAnalysis.cpp +0 -0
- package/{lib → svf/lib}/MTA/MHP.cpp +0 -0
- package/{lib → svf/lib}/MTA/MTA.cpp +0 -0
- package/{lib → svf/lib}/MTA/MTAStat.cpp +0 -0
- package/{lib → svf/lib}/MTA/PCG.cpp +0 -0
- package/{lib → svf/lib}/MTA/TCT.cpp +0 -0
- package/{lib → svf/lib}/MemoryModel/LocationSet.cpp +0 -0
- package/{lib → svf/lib}/MemoryModel/PointerAnalysis.cpp +0 -0
- package/{lib → svf/lib}/MemoryModel/PointerAnalysisImpl.cpp +0 -0
- package/{lib → svf/lib}/MemoryModel/PointsTo.cpp +0 -0
- package/{lib → svf/lib}/SABER/DoubleFreeChecker.cpp +0 -0
- package/{lib → svf/lib}/SABER/FileChecker.cpp +0 -0
- package/{lib → svf/lib}/SABER/LeakChecker.cpp +0 -0
- package/{lib → svf/lib}/SABER/ProgSlice.cpp +0 -0
- package/{lib → svf/lib}/SABER/SaberCheckerAPI.cpp +0 -0
- package/{lib → svf/lib}/SABER/SaberCondAllocator.cpp +0 -0
- package/{lib → svf/lib}/SABER/SaberSVFGBuilder.cpp +0 -0
- package/{lib → svf/lib}/SABER/SrcSnkDDA.cpp +0 -0
- package/{lib → svf/lib}/SVFIR/PAGBuilderFromFile.cpp +0 -0
- package/{lib → svf/lib}/SVFIR/SVFIR.cpp +0 -0
- package/{lib → svf/lib}/SVFIR/SVFModule.cpp +0 -0
- package/{lib → svf/lib}/SVFIR/SVFStatements.cpp +0 -0
- package/{lib → svf/lib}/SVFIR/SVFValue.cpp +0 -0
- package/{lib → svf/lib}/SVFIR/SVFVariables.cpp +0 -0
- package/{lib → svf/lib}/SVFIR/SymbolTableInfo.cpp +0 -0
- package/{lib → svf/lib}/Util/BitVector.cpp +0 -0
- package/{lib → svf/lib}/Util/CallGraphBuilder.cpp +0 -0
- package/{lib → svf/lib}/Util/CoreBitVector.cpp +0 -0
- package/{lib → svf/lib}/Util/CppUtil.cpp +0 -0
- package/{lib → svf/lib}/Util/ExtAPI.cpp +64 -58
- package/{lib → svf/lib}/Util/NodeIDAllocator.cpp +0 -0
- package/{lib → svf/lib}/Util/Options.cpp +0 -0
- package/{lib → svf/lib}/Util/PTAStat.cpp +0 -0
- package/{lib → svf/lib}/Util/SVFStat.cpp +0 -0
- package/{lib → svf/lib}/Util/SVFUtil.cpp +0 -0
- package/{lib → svf/lib}/Util/ThreadAPI.cpp +0 -0
- package/{lib → svf/lib}/Util/Z3Expr.cpp +0 -0
- package/{lib → svf/lib}/Util/cJSON.cpp +0 -0
- package/{lib → svf/lib}/WPA/Andersen.cpp +0 -0
- package/{lib → svf/lib}/WPA/AndersenSCD.cpp +0 -0
- package/{lib → svf/lib}/WPA/AndersenSFR.cpp +0 -0
- package/{lib → svf/lib}/WPA/AndersenStat.cpp +0 -0
- package/{lib → svf/lib}/WPA/AndersenWaveDiff.cpp +0 -0
- package/{lib → svf/lib}/WPA/CSC.cpp +0 -0
- package/{lib → svf/lib}/WPA/FlowSensitive.cpp +0 -0
- package/{lib → svf/lib}/WPA/FlowSensitiveStat.cpp +0 -0
- package/{lib → svf/lib}/WPA/Steensgaard.cpp +0 -0
- package/{lib → svf/lib}/WPA/TypeAnalysis.cpp +0 -0
- package/{lib → svf/lib}/WPA/VersionedFlowSensitive.cpp +0 -0
- package/{lib → svf/lib}/WPA/VersionedFlowSensitiveStat.cpp +0 -0
- package/{lib → svf/lib}/WPA/WPAPass.cpp +0 -0
- package/svf-llvm/CMakeLists.txt +21 -0
- package/{include → svf-llvm/include}/SVF-LLVM/BasicTypes.h +0 -0
- package/{include → svf-llvm/include}/SVF-LLVM/BreakConstantExpr.h +0 -0
- package/{include → svf-llvm/include}/SVF-LLVM/CHGBuilder.h +0 -0
- package/{include → svf-llvm/include}/SVF-LLVM/DCHG.h +0 -0
- package/{include → svf-llvm/include}/SVF-LLVM/GEPTypeBridgeIterator.h +0 -0
- package/{include → svf-llvm/include}/SVF-LLVM/ICFGBuilder.h +0 -0
- package/{include → svf-llvm/include}/SVF-LLVM/LLVMLoopAnalysis.h +0 -0
- package/{include → svf-llvm/include}/SVF-LLVM/LLVMModule.h +0 -0
- package/{include → svf-llvm/include}/SVF-LLVM/LLVMUtil.h +0 -0
- package/{include → svf-llvm/include}/SVF-LLVM/SVFIRBuilder.h +0 -0
- package/{include → svf-llvm/include}/SVF-LLVM/SymbolTableBuilder.h +0 -0
- package/{lib/SVF-LLVM → svf-llvm/lib}/BreakConstantExpr.cpp +0 -0
- package/{lib/SVF-LLVM → svf-llvm/lib}/CHGBuilder.cpp +0 -0
- package/{lib/SVF-LLVM → svf-llvm/lib}/DCHG.cpp +0 -0
- package/{lib/SVF-LLVM → svf-llvm/lib}/ICFGBuilder.cpp +0 -0
- package/{lib/SVF-LLVM → svf-llvm/lib}/LLVMLoopAnalysis.cpp +0 -0
- package/{lib/SVF-LLVM → svf-llvm/lib}/LLVMModule.cpp +0 -0
- package/{lib/SVF-LLVM → svf-llvm/lib}/LLVMUtil.cpp +0 -0
- package/{lib/SVF-LLVM → svf-llvm/lib}/SVFIRBuilder.cpp +0 -0
- package/{lib/SVF-LLVM → svf-llvm/lib}/SymbolTableBuilder.cpp +0 -0
- package/tools/CFL/CMakeLists.txt +18 -7
- package/tools/CMakeLists.txt +2 -1
- package/tools/DDA/CMakeLists.txt +18 -7
- package/tools/Example/CMakeLists.txt +18 -7
- package/tools/Example/svf-ex.cpp +0 -1
- package/tools/MTA/CMakeLists.txt +20 -9
- package/tools/SABER/CMakeLists.txt +18 -7
- package/tools/WPA/CMakeLists.txt +18 -8
- package/lib/CMakeLists.txt +0 -55
|
@@ -66,73 +66,19 @@ $(function() {
|
|
|
66
66
|
<div class="title">MTAAnnotator.cpp</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="MTAAnnotator_8cpp.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"> * MTAAnnotator.cpp</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 4, 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">#include "<a class="code" href="Options_8h.html">Util/Options.h</a>"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "<a class="code" href="MTAAnnotator_8h.html">MTAAnnotator.h</a>"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include "<a class="code" href="LockAnalysis_8h.html">MTA/LockAnalysis.h</a>"</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</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"><a class="line" href="classSVF_1_1MTAAnnotator.html#a5513a9f2a5b89ab5f90549552fb2b20f"> 18</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAAnnotator.html#a5513a9f2a5b89ab5f90549552fb2b20f">MTAAnnotator::annotateDRCheck</a>(<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> {</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  std::stringstream rawstr(str);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  rawstr << DR_CHECK;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* st = SVFUtil::dyn_cast<StoreInst>(inst))</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  numOfAnnotatedSt++;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  addMDTag(inst, st->getPointerOperand(), rawstr.str());</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  }</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* ld = SVFUtil::dyn_cast<LoadInst>(inst))</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  numOfAnnotatedLd++;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  addMDTag(inst, ld->getPointerOperand(), rawstr.str());</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> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#ab84e4295f1137090bdf9e0608a4c2077"> 37</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAAnnotator.html#ab84e4295f1137090bdf9e0608a4c2077">MTAAnnotator::collectLoadStoreInst</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* mod)</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> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getLLVMModules())</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="keywordflow">for</span> (Module::const_iterator F = M.begin(), E = M.end(); F != E; ++F)</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>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFFunction(&*F)))</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a032e8478a7b6a8bb0b7755c98a7bce91">const_inst_iterator</a> II = inst_begin(*F), E = inst_end(*F); II != E; ++II)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &*II;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span> (SVFUtil::isa<LoadInst>(inst))</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>  loadset.insert(inst);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<StoreInst>(inst))</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>  storeset.insert(inst);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isMemset(inst))</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>  storeset.insert(inst);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isMemcpy(inst))</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  storeset.insert(inst);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  loadset.insert(inst);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</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="l00070"></a><span class="lineno"> 70</span>  numOfAllSt = storeset.size();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  numOfAllLd = loadset.size();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a49434afd0d7beb9f5d6580e8f672889c"> 74</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1MTAAnnotator.html#a49434afd0d7beb9f5d6580e8f672889c">MTAAnnotator::getStoreOperand</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* st = SVFUtil::dyn_cast<StoreInst>(inst))</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> st->getPointerOperand();</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="keywordflow">else</span> <span class="keywordflow">if</span> (isMemset(inst))</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>  <span class="keywordflow">return</span> inst->getOperand(0);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isMemcpy(inst))</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> inst->getOperand(0);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  assert(<span class="keyword">false</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> }</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a399e53d065bc34af428a1ba89a04972b"> 92</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1MTAAnnotator.html#a399e53d065bc34af428a1ba89a04972b">MTAAnnotator::getLoadOperand</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* ld = SVFUtil::dyn_cast<LoadInst>(inst))</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="keywordflow">return</span> ld->getPointerOperand();</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="keywordflow">else</span> <span class="keywordflow">if</span> (isMemcpy(inst))</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> inst->getOperand(1);</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>  assert(<span class="keyword">false</span>);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a108616cc98f15af3010ca45b91f32c04"> 107</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAAnnotator.html#a108616cc98f15af3010ca45b91f32c04">MTAAnnotator::initialize</a>(<a class="code" href="classSVF_1_1MHP.html">MHP</a>* m, <a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>* la)</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>  mhp = m;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  lsa = la;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1Options.html#a279f634c0ba3b01beed6a55b01d6eae7">Options::AnnoFlag</a>())</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  collectLoadStoreInst(mhp->getTCT()->getPTA()->getModule());</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#af469d79fcc3bebd9360f72696a242d4e"> 116</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAAnnotator.html#af469d79fcc3bebd9360f72696a242d4e">MTAAnnotator::pruneThreadLocal</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">bool</span> AnnoLocal = <a class="code" href="classSVF_1_1Options.html#a279f634c0ba3b01beed6a55b01d6eae7">Options::AnnoFlag</a>() & ANNO_LOCAL;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">if</span> (!AnnoLocal)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span>;</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>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">"Run annotator prune thread local pairs\n"</span>));</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> nonlocalobjs;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> worklist;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>& forkedges = pag-><a class="code" href="classSVF_1_1SVFIR.html#a65a4af3d6f0bfc11e31f020bb2966576">getPTASVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::const_iterator it = forkedges.begin(), eit = forkedges.end(); it != eit; ++it)</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>  <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *it;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  worklist |= pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">getPts</a>(edge-><a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>());</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  worklist |= pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">getPts</a>(edge-><a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</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="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1IRGraph.html#a28ea8f85b0923d00364a010c1fd4e416">SVFIR::SVFStmtSet</a>& globaledges = pag-><a class="code" href="classSVF_1_1SVFIR.html#a5c5adab1f68520a304fbf70ca40f7687">getGlobalSVFStmtSet</a>();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">for</span> (SVFIR::SVFStmtSet::const_iterator it = globaledges.begin(), eit = globaledges.end(); it != eit; ++it)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *it;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">if</span> (edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a>)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  worklist.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(edge-><a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>());</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1PointsTo.html#a13746982a11d0cab57e5919d53bfbec8">empty</a>())</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> obj = worklist.<a class="code" href="classSVF_1_1PointsTo.html#a17c66a466bbea93598bca73d82c95479">find_first</a>();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  nonlocalobjs.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(obj);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  worklist.<a class="code" href="classSVF_1_1PointsTo.html#a1ef805e714cfc29f0f3fa56c5ee964f6">reset</a>(obj);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts = pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">getPts</a>(obj);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> pit = pts.<a class="code" href="classSVF_1_1PointsTo.html#ad5b582d2672617806c61e6170d0b5a7e">begin</a>(), epit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a6e2ff63437d07a30cc6db35de032728a">end</a>(); pit != epit; ++pit)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span> (!nonlocalobjs.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(*pit))</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  worklist.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(*pit);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> fields = pag-><a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(obj);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> pit = fields.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), epit = fields.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>(); pit != epit; ++pit)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">if</span> (!nonlocalobjs.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(*pit))</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  worklist.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(*pit);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="classSVF_1_1MTAAnnotator.html#a95f4607624dac40e9d62f37e6b16fcf0">InstSet</a> needannost;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="classSVF_1_1MTAAnnotator.html#a95f4607624dac40e9d62f37e6b16fcf0">InstSet</a> needannold;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">for</span> (InstSet::iterator it = storeset.begin(), eit = storeset.end(); it != eit; ++it)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts = pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">getPts</a>(pag-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(getStoreOperand(*it))));</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> pit = pts.<a class="code" href="classSVF_1_1PointsTo.html#ad5b582d2672617806c61e6170d0b5a7e">begin</a>(), epit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a6e2ff63437d07a30cc6db35de032728a">end</a>(); pit != epit; ++pit)</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span> (nonlocalobjs.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(*pit))</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  needannost.insert(*it);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">for</span> (InstSet::iterator it = loadset.begin(), eit = loadset.end(); it != eit; ++it)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts = pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">getPts</a>(pag-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(getLoadOperand(*it))));</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> pit = pts.<a class="code" href="classSVF_1_1PointsTo.html#ad5b582d2672617806c61e6170d0b5a7e">begin</a>(), epit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a6e2ff63437d07a30cc6db35de032728a">end</a>(); pit != epit; ++pit)</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">if</span> (nonlocalobjs.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(*pit))</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  needannold.insert(*it);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  storeset = needannost;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  loadset = needannold;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  numOfNonLocalSt = storeset.size();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  numOfNonLocalLd = loadset.size();</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> }</div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a0ed08b6a94483a750c95eef6c2523dc6"> 202</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAAnnotator.html#a0ed08b6a94483a750c95eef6c2523dc6">MTAAnnotator::pruneAliasMHP</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta)</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordtype">bool</span> AnnoMHP = <a class="code" href="classSVF_1_1Options.html#a279f634c0ba3b01beed6a55b01d6eae7">Options::AnnoFlag</a>() & ANNO_MHP;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordtype">bool</span> AnnoAlias = <a class="code" href="classSVF_1_1Options.html#a279f634c0ba3b01beed6a55b01d6eae7">Options::AnnoFlag</a>() & ANNO_ALIAS;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span> (!AnnoMHP && !AnnoAlias)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">"Run annotator prune Alias or MHP pairs\n"</span>));</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="classSVF_1_1MTAAnnotator.html#a95f4607624dac40e9d62f37e6b16fcf0">InstSet</a> needannost;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <a class="code" href="classSVF_1_1MTAAnnotator.html#a95f4607624dac40e9d62f37e6b16fcf0">InstSet</a> needannold;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">for</span> (InstSet::iterator it1 = storeset.begin(), eit1 = storeset.end(); it1 != eit1; ++it1)</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst1 = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(*it1);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">for</span> (InstSet::iterator it2 = it1, eit2 = storeset.end(); it2 != eit2; ++it2)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst2 = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(*it2);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* v1 = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(getStoreOperand(*it1));</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* v2 = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(getStoreOperand(*it2));</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">if</span>(!pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#ae1323233941cdc9b99332e4b954a2217">alias</a>(v1, v2))</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span> (AnnoMHP)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">if</span> (mhp->mayHappenInParallel(inst1, inst2) && !lsa->isProtectedByCommonLock(inst1, inst2))</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  needannost.insert(*it1);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  needannost.insert(*it2);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  needannost.insert(*it1);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  needannost.insert(*it2);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">for</span> (InstSet::iterator it2 = loadset.begin(), eit2 = loadset.end(); it2 != eit2; ++it2)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst2 = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(*it2);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* v1 = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(getStoreOperand(*it1));</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* v2 = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(getLoadOperand(*it2));</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">if</span>(!pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#ae1323233941cdc9b99332e4b954a2217">alias</a>(v1,v2))</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">if</span> (AnnoMHP)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">if</span> (mhp->mayHappenInParallel(inst1, inst2) && !lsa->isProtectedByCommonLock(inst1, inst2))</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  needannost.insert(*it1);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  needannold.insert(*it2);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  needannost.insert(*it1);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  needannold.insert(*it2);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  storeset = needannost;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  loadset = needannold;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">if</span> (AnnoMHP)</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  numOfMHPSt = storeset.size();</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  numOfMHPLd = loadset.size();</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (AnnoAlias)</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  numOfAliasSt = storeset.size();</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  numOfAliasLd = loadset.size();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> }</div><div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a4e25b3ef3e4e91f14c35841d0138d888"> 281</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAAnnotator.html#a4e25b3ef3e4e91f14c35841d0138d888">MTAAnnotator::performAnnotate</a>()</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1Options.html#a279f634c0ba3b01beed6a55b01d6eae7">Options::AnnoFlag</a>())</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">for</span> (InstSet::iterator it = storeset.begin(), eit = storeset.end(); it != eit; ++it)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  annotateDRCheck(const_cast<Instruction*>(*it));</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">for</span> (InstSet::iterator it = loadset.begin(), eit = loadset.end(); it != eit; ++it)</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  annotateDRCheck(const_cast<Instruction*>(*it));</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</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#l00045">MHP.h:45</a></div></div>
|
|
70
|
-
<div class="ttc" id="
|
|
71
|
-
<div class="ttc" id="classSVF_1_1GenericEdge_html_abe8525c542def8162b094c169a01993b"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">SVF::GenericEdge::getEdgeKind</a></div><div class="ttdeci">GEdgeKind getEdgeKind() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00082">GenericGraph.h:82</a></div></div>
|
|
72
|
-
<div class="ttc" id="classSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00570">SVFValue.h:570</a></div></div>
|
|
73
|
-
<div class="ttc" id="namespaceSVF_html_ab696aab940eb187dc81217efe8649af5"><div class="ttname"><a href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">SVF::StoreInst</a></div><div class="ttdeci">llvm::StoreInst StoreInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00123">BasicTypes.h:123</a></div></div>
|
|
74
|
-
<div class="ttc" id="classSVF_1_1PointsTo_html_a13746982a11d0cab57e5919d53bfbec8"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a13746982a11d0cab57e5919d53bfbec8">SVF::PointsTo::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdoc">Returns true if set is empty. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00098">PointsTo.cpp:98</a></div></div>
|
|
75
|
-
<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="BasicTypes_8h_source.html#l00060">BasicTypes.h:60</a></div></div>
|
|
76
|
-
<div class="ttc" id="classSVF_1_1MTAAnnotator_html_ab84e4295f1137090bdf9e0608a4c2077"><div class="ttname"><a href="classSVF_1_1MTAAnnotator.html#ab84e4295f1137090bdf9e0608a4c2077">SVF::MTAAnnotator::collectLoadStoreInst</a></div><div class="ttdeci">void collectLoadStoreInst(SVFModule *mod)</div><div class="ttdoc">Collect all load and store instruction. </div><div class="ttdef"><b>Definition:</b> <a href="MTAAnnotator_8cpp_source.html#l00037">MTAAnnotator.cpp:37</a></div></div>
|
|
77
|
-
<div class="ttc" id="namespaceSVF_html_a032e8478a7b6a8bb0b7755c98a7bce91"><div class="ttname"><a href="namespaceSVF.html#a032e8478a7b6a8bb0b7755c98a7bce91">SVF::const_inst_iterator</a></div><div class="ttdeci">llvm::const_inst_iterator const_inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00220">BasicTypes.h:220</a></div></div>
|
|
78
|
-
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a4dfb43679e9fa794ebad99b6584c32ec"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">SVF::PointerAnalysis::getPts</a></div><div class="ttdeci">virtual const PointsTo & getPts(NodeID ptr)=0</div><div class="ttdoc">Get points-to targets of a pointer. It needs to be implemented in child class. </div></div>
|
|
79
|
-
<div class="ttc" id="namespaceSVF_html_a350ae9bf8606bdfe23c8679681b969dc"><div class="ttname"><a href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="include_2MTA_2MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
69
|
+
<a href="MTAAnnotator_8cpp.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"> * MTAAnnotator.cpp</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 4, 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">#include "Util/Options.h"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "<a class="code" href="MTAAnnotator_8h.html">MTAAnnotator.h</a>"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include "MTA/LockAnalysis.h"</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "MemoryModel/PointsTo.h"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</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"><a class="line" href="classSVF_1_1MTAAnnotator.html#a5513a9f2a5b89ab5f90549552fb2b20f"> 18</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAAnnotator.html#a5513a9f2a5b89ab5f90549552fb2b20f">MTAAnnotator::annotateDRCheck</a>(Instruction* inst)</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> {</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  std::string str;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  std::stringstream rawstr(str);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  rawstr << DR_CHECK;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">if</span> (StoreInst* st = SVFUtil::dyn_cast<StoreInst>(inst))</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  numOfAnnotatedSt++;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  addMDTag(inst, st->getPointerOperand(), rawstr.str());</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  }</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (LoadInst* ld = SVFUtil::dyn_cast<LoadInst>(inst))</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  numOfAnnotatedLd++;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  addMDTag(inst, ld->getPointerOperand(), rawstr.str());</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> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#ab84e4295f1137090bdf9e0608a4c2077"> 37</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAAnnotator.html#ab84e4295f1137090bdf9e0608a4c2077">MTAAnnotator::collectLoadStoreInst</a>(SVFModule* mod)</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> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">for</span> (Module& M : LLVMModuleSet::getLLVMModuleSet()->getLLVMModules())</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="keywordflow">for</span> (Module::const_iterator F = M.begin(), E = M.end(); F != E; ++F)</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>  <span class="keywordflow">if</span> (SVFUtil::isExtCall(LLVMModuleSet::getLLVMModuleSet()->getSVFFunction(&*F)))</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">for</span> (const_inst_iterator II = inst_begin(*F), E = inst_end(*F); II != E; ++II)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">const</span> Instruction* inst = &*II;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span> (SVFUtil::isa<LoadInst>(inst))</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>  loadset.insert(inst);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<StoreInst>(inst))</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>  storeset.insert(inst);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isMemset(inst))</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>  storeset.insert(inst);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isMemcpy(inst))</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  storeset.insert(inst);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  loadset.insert(inst);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</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="l00070"></a><span class="lineno"> 70</span>  numOfAllSt = storeset.size();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  numOfAllLd = loadset.size();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a49434afd0d7beb9f5d6580e8f672889c"> 74</a></span> <span class="keyword">const</span> Value* <a class="code" href="classSVF_1_1MTAAnnotator.html#a49434afd0d7beb9f5d6580e8f672889c">MTAAnnotator::getStoreOperand</a>(<span class="keyword">const</span> Instruction* inst)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> StoreInst* st = SVFUtil::dyn_cast<StoreInst>(inst))</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> st->getPointerOperand();</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="keywordflow">else</span> <span class="keywordflow">if</span> (isMemset(inst))</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>  <span class="keywordflow">return</span> inst->getOperand(0);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isMemcpy(inst))</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> inst->getOperand(0);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  assert(<span class="keyword">false</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> }</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a399e53d065bc34af428a1ba89a04972b"> 92</a></span> <span class="keyword">const</span> Value* <a class="code" href="classSVF_1_1MTAAnnotator.html#a399e53d065bc34af428a1ba89a04972b">MTAAnnotator::getLoadOperand</a>(<span class="keyword">const</span> Instruction* inst)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> LoadInst* ld = SVFUtil::dyn_cast<LoadInst>(inst))</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="keywordflow">return</span> ld->getPointerOperand();</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="keywordflow">else</span> <span class="keywordflow">if</span> (isMemcpy(inst))</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> inst->getOperand(1);</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>  assert(<span class="keyword">false</span>);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a108616cc98f15af3010ca45b91f32c04"> 107</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAAnnotator.html#a108616cc98f15af3010ca45b91f32c04">MTAAnnotator::initialize</a>(MHP* m, LockAnalysis* la)</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>  mhp = m;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  lsa = la;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span> (!Options::AnnoFlag())</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  collectLoadStoreInst(mhp->getTCT()->getPTA()->getModule());</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#af469d79fcc3bebd9360f72696a242d4e"> 116</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAAnnotator.html#af469d79fcc3bebd9360f72696a242d4e">MTAAnnotator::pruneThreadLocal</a>(PointerAnalysis* pta)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">bool</span> AnnoLocal = Options::AnnoFlag() & ANNO_LOCAL;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">if</span> (!AnnoLocal)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span>;</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>  DBOUT(DGENERAL, outs() << pasMsg(<span class="stringliteral">"Run annotator prune thread local pairs\n"</span>));</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  SVFIR* pag = pta->getPAG();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  PointsTo nonlocalobjs;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  PointsTo worklist;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">const</span> SVFStmt::SVFStmtSetTy& forkedges = pag->getPTASVFStmtSet(SVFStmt::ThreadFork);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::const_iterator it = forkedges.begin(), eit = forkedges.end(); it != eit; ++it)</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>  PAGEdge* edge = *it;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  worklist |= pta->getPts(edge->getDstID());</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  worklist |= pta->getPts(edge->getSrcID());</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="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">const</span> SVFIR::SVFStmtSet& globaledges = pag->getGlobalSVFStmtSet();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">for</span> (SVFIR::SVFStmtSet::const_iterator it = globaledges.begin(), eit = globaledges.end(); it != eit; ++it)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">const</span> PAGEdge* edge = *it;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">if</span> (edge->getEdgeKind() == SVFStmt::Addr)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  worklist.set(edge->getSrcID());</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">while</span> (!worklist.empty())</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> obj = worklist.find_first();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  nonlocalobjs.set(obj);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  worklist.reset(obj);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  PointsTo pts = pta->getPts(obj);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">for</span> (PointsTo::iterator pit = pts.begin(), epit = pts.end(); pit != epit; ++pit)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span> (!nonlocalobjs.test(*pit))</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  worklist.set(*pit);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  NodeBS fields = pag->getAllFieldsObjVars(obj);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">for</span> (NodeBS::iterator pit = fields.begin(), epit = fields.end(); pit != epit; ++pit)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">if</span> (!nonlocalobjs.test(*pit))</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  worklist.set(*pit);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="classSVF_1_1MTAAnnotator.html#a95f4607624dac40e9d62f37e6b16fcf0">InstSet</a> needannost;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="classSVF_1_1MTAAnnotator.html#a95f4607624dac40e9d62f37e6b16fcf0">InstSet</a> needannold;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">for</span> (InstSet::iterator it = storeset.begin(), eit = storeset.end(); it != eit; ++it)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  PointsTo pts = pta->getPts(pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(getStoreOperand(*it))));</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">for</span> (PointsTo::iterator pit = pts.begin(), epit = pts.end(); pit != epit; ++pit)</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span> (nonlocalobjs.test(*pit))</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  needannost.insert(*it);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">for</span> (InstSet::iterator it = loadset.begin(), eit = loadset.end(); it != eit; ++it)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  PointsTo pts = pta->getPts(pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(getLoadOperand(*it))));</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">for</span> (PointsTo::iterator pit = pts.begin(), epit = pts.end(); pit != epit; ++pit)</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">if</span> (nonlocalobjs.test(*pit))</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  needannold.insert(*it);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  storeset = needannost;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  loadset = needannold;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  numOfNonLocalSt = storeset.size();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  numOfNonLocalLd = loadset.size();</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> }</div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a0ed08b6a94483a750c95eef6c2523dc6"> 202</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAAnnotator.html#a0ed08b6a94483a750c95eef6c2523dc6">MTAAnnotator::pruneAliasMHP</a>(PointerAnalysis* pta)</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordtype">bool</span> AnnoMHP = Options::AnnoFlag() & ANNO_MHP;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordtype">bool</span> AnnoAlias = Options::AnnoFlag() & ANNO_ALIAS;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span> (!AnnoMHP && !AnnoAlias)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  DBOUT(DGENERAL, outs() << pasMsg(<span class="stringliteral">"Run annotator prune Alias or MHP pairs\n"</span>));</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="classSVF_1_1MTAAnnotator.html#a95f4607624dac40e9d62f37e6b16fcf0">InstSet</a> needannost;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <a class="code" href="classSVF_1_1MTAAnnotator.html#a95f4607624dac40e9d62f37e6b16fcf0">InstSet</a> needannold;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">for</span> (InstSet::iterator it1 = storeset.begin(), eit1 = storeset.end(); it1 != eit1; ++it1)</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">const</span> SVFInstruction* inst1 = LLVMModuleSet::getLLVMModuleSet()->getSVFInstruction(*it1);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">for</span> (InstSet::iterator it2 = it1, eit2 = storeset.end(); it2 != eit2; ++it2)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">const</span> SVFInstruction* inst2 = LLVMModuleSet::getLLVMModuleSet()->getSVFInstruction(*it2);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">const</span> SVFValue* v1 = LLVMModuleSet::getLLVMModuleSet()->getSVFValue(getStoreOperand(*it1));</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keyword">const</span> SVFValue* v2 = LLVMModuleSet::getLLVMModuleSet()->getSVFValue(getStoreOperand(*it2));</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">if</span>(!pta->alias(v1, v2))</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span> (AnnoMHP)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">if</span> (mhp->mayHappenInParallel(inst1, inst2) && !lsa->isProtectedByCommonLock(inst1, inst2))</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  needannost.insert(*it1);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  needannost.insert(*it2);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  needannost.insert(*it1);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  needannost.insert(*it2);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">for</span> (InstSet::iterator it2 = loadset.begin(), eit2 = loadset.end(); it2 != eit2; ++it2)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keyword">const</span> SVFInstruction* inst2 = LLVMModuleSet::getLLVMModuleSet()->getSVFInstruction(*it2);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keyword">const</span> SVFValue* v1 = LLVMModuleSet::getLLVMModuleSet()->getSVFValue(getStoreOperand(*it1));</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keyword">const</span> SVFValue* v2 = LLVMModuleSet::getLLVMModuleSet()->getSVFValue(getLoadOperand(*it2));</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">if</span>(!pta->alias(v1,v2))</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">if</span> (AnnoMHP)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">if</span> (mhp->mayHappenInParallel(inst1, inst2) && !lsa->isProtectedByCommonLock(inst1, inst2))</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  needannost.insert(*it1);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  needannold.insert(*it2);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  needannost.insert(*it1);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  needannold.insert(*it2);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  storeset = needannost;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  loadset = needannold;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">if</span> (AnnoMHP)</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  numOfMHPSt = storeset.size();</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  numOfMHPLd = loadset.size();</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (AnnoAlias)</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  numOfAliasSt = storeset.size();</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  numOfAliasLd = loadset.size();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> }</div><div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a4e25b3ef3e4e91f14c35841d0138d888"> 281</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAAnnotator.html#a4e25b3ef3e4e91f14c35841d0138d888">MTAAnnotator::performAnnotate</a>()</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">if</span> (!Options::AnnoFlag())</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">for</span> (InstSet::iterator it = storeset.begin(), eit = storeset.end(); it != eit; ++it)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  annotateDRCheck(const_cast<Instruction*>(*it));</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">for</span> (InstSet::iterator it = loadset.begin(), eit = loadset.end(); it != eit; ++it)</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  annotateDRCheck(const_cast<Instruction*>(*it));</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> }</div><div class="ttc" id="classSVF_1_1MTAAnnotator_html_ab84e4295f1137090bdf9e0608a4c2077"><div class="ttname"><a href="classSVF_1_1MTAAnnotator.html#ab84e4295f1137090bdf9e0608a4c2077">SVF::MTAAnnotator::collectLoadStoreInst</a></div><div class="ttdeci">void collectLoadStoreInst(SVFModule *mod)</div><div class="ttdoc">Collect all load and store instruction. </div><div class="ttdef"><b>Definition:</b> <a href="MTAAnnotator_8cpp_source.html#l00037">MTAAnnotator.cpp:37</a></div></div>
|
|
70
|
+
<div class="ttc" id="namespaceSVF_html_a350ae9bf8606bdfe23c8679681b969dc"><div class="ttname"><a href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
|
|
80
71
|
<div class="ttc" id="classSVF_1_1MTAAnnotator_html_a49434afd0d7beb9f5d6580e8f672889c"><div class="ttname"><a href="classSVF_1_1MTAAnnotator.html#a49434afd0d7beb9f5d6580e8f672889c">SVF::MTAAnnotator::getStoreOperand</a></div><div class="ttdeci">const Value * getStoreOperand(const Instruction *inst)</div><div class="ttdoc">Get operand of store and load. </div><div class="ttdef"><b>Definition:</b> <a href="MTAAnnotator_8cpp_source.html#l00074">MTAAnnotator.cpp:74</a></div></div>
|
|
81
|
-
<div class="ttc" id="classSVF_1_1PointsTo_html_a6e2ff63437d07a30cc6db35de032728a"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a6e2ff63437d07a30cc6db35de032728a">SVF::PointsTo::end</a></div><div class="ttdeci">const_iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00132">PointsTo.h:132</a></div></div>
|
|
82
|
-
<div class="ttc" id="classSVF_1_1GenericEdge_html_ad9edb45e74ae675d9da82f5acf02d56e"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">SVF::GenericEdge::getDstID</a></div><div class="ttdeci">NodeID getDstID() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00078">GenericGraph.h:78</a></div></div>
|
|
83
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00098">SVFUtil.cpp:98</a></div></div>
|
|
84
|
-
<div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVF::SVFStmt::Addr</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00060">SVFStatements.h:60</a></div></div>
|
|
85
|
-
<div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html">SVF::PointsTo::PointsToIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00181">PointsTo.h:181</a></div></div>
|
|
86
|
-
<div class="ttc" id="classSVF_1_1GenericEdge_html_ae6792506a0150a9400d635eceab7f9e7"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">SVF::GenericEdge::getSrcID</a></div><div class="ttdeci">NodeID getSrcID() const</div><div class="ttdoc">get methods of the components </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00074">GenericGraph.h:74</a></div></div>
|
|
87
|
-
<div class="ttc" id="SVFType_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFType_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00441">SVFType.h:441</a></div></div>
|
|
88
|
-
<div class="ttc" id="classSVF_1_1SVFStmt_html_a8cd7b6c6fd8b030b1421d95a086359f4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVF::SVFStmt::SVFStmtSetTy</a></div><div class="ttdeci">GenericNode< SVFVar, SVFStmt >::GEdgeSetTy SVFStmtSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00183">SVFStatements.h:183</a></div></div>
|
|
89
|
-
<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>
|
|
90
|
-
<div class="ttc" id="classSVF_1_1IRGraph_html_a43514023a4f4d0c32f536f51443b0efc"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const SVFValue *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00128">IRGraph.h:128</a></div></div>
|
|
91
|
-
<div class="ttc" id="classSVF_1_1PointsTo_html_af61271fefa574c39f405fdfee59a8b3f"><div class="ttname"><a href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">SVF::PointsTo::test</a></div><div class="ttdeci">bool test(u32_t n) const</div><div class="ttdoc">Returns true if n is in this set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00131">PointsTo.cpp:131</a></div></div>
|
|
92
|
-
<div class="ttc" id="classSVF_1_1SVFIR_html_a65a4af3d6f0bfc11e31f020bb2966576"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a65a4af3d6f0bfc11e31f020bb2966576">SVF::SVFIR::getPTASVFStmtSet</a></div><div class="ttdeci">SVFStmt::SVFStmtSetTy & getPTASVFStmtSet(SVFStmt::PEDGEK kind)</div><div class="ttdoc">Get PTA edges set according to its kind. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00186">SVFIR.h:186</a></div></div>
|
|
93
|
-
<div class="ttc" id="classSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00147">SVFValue.h:147</a></div></div>
|
|
94
72
|
<div class="ttc" id="classSVF_1_1MTAAnnotator_html_a4e25b3ef3e4e91f14c35841d0138d888"><div class="ttname"><a href="classSVF_1_1MTAAnnotator.html#a4e25b3ef3e4e91f14c35841d0138d888">SVF::MTAAnnotator::performAnnotate</a></div><div class="ttdeci">void performAnnotate()</div><div class="ttdoc">Perform annotation. </div><div class="ttdef"><b>Definition:</b> <a href="MTAAnnotator_8cpp_source.html#l00281">MTAAnnotator.cpp:281</a></div></div>
|
|
95
73
|
<div class="ttc" id="classSVF_1_1MTAAnnotator_html_a5513a9f2a5b89ab5f90549552fb2b20f"><div class="ttname"><a href="classSVF_1_1MTAAnnotator.html#a5513a9f2a5b89ab5f90549552fb2b20f">SVF::MTAAnnotator::annotateDRCheck</a></div><div class="ttdeci">void annotateDRCheck(Instruction *inst)</div><div class="ttdoc">Annotation. </div><div class="ttdef"><b>Definition:</b> <a href="MTAAnnotator_8cpp_source.html#l00018">MTAAnnotator.cpp:18</a></div></div>
|
|
96
74
|
<div class="ttc" id="classSVF_1_1MTAAnnotator_html_a0ed08b6a94483a750c95eef6c2523dc6"><div class="ttname"><a href="classSVF_1_1MTAAnnotator.html#a0ed08b6a94483a750c95eef6c2523dc6">SVF::MTAAnnotator::pruneAliasMHP</a></div><div class="ttdeci">void pruneAliasMHP(PointerAnalysis *pta)</div><div class="ttdoc">Prune candidate instructions that non-mhp and non-alias with others. </div><div class="ttdef"><b>Definition:</b> <a href="MTAAnnotator_8cpp_source.html#l00202">MTAAnnotator.cpp:202</a></div></div>
|
|
97
|
-
<div class="ttc" id="classSVF_1_1Options_html_a279f634c0ba3b01beed6a55b01d6eae7"><div class="ttname"><a href="classSVF_1_1Options.html#a279f634c0ba3b01beed6a55b01d6eae7">SVF::Options::AnnoFlag</a></div><div class="ttdeci">static const Option< u32_t > AnnoFlag</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00182">Options.h:182</a></div></div>
|
|
98
|
-
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00063">BasicTypes.h:63</a></div></div>
|
|
99
75
|
<div class="ttc" id="namespaceSVFUtil_html"><div class="ttname"><a href="namespaceSVFUtil.html">SVFUtil</a></div></div>
|
|
100
|
-
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a240219c2dc4f5cc5f85445e18c79b83b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">SVF::PointerAnalysis::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00201">PointerAnalysis.h:201</a></div></div>
|
|
101
76
|
<div class="ttc" id="classSVF_1_1MTAAnnotator_html_a399e53d065bc34af428a1ba89a04972b"><div class="ttname"><a href="classSVF_1_1MTAAnnotator.html#a399e53d065bc34af428a1ba89a04972b">SVF::MTAAnnotator::getLoadOperand</a></div><div class="ttdeci">const Value * getLoadOperand(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MTAAnnotator_8cpp_source.html#l00092">MTAAnnotator.cpp:92</a></div></div>
|
|
102
|
-
<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#l00044">LockAnalysis.h:44</a></div></div>
|
|
103
77
|
<div class="ttc" id="classSVF_1_1MTAAnnotator_html_a95f4607624dac40e9d62f37e6b16fcf0"><div class="ttname"><a href="classSVF_1_1MTAAnnotator.html#a95f4607624dac40e9d62f37e6b16fcf0">SVF::MTAAnnotator::InstSet</a></div><div class="ttdeci">Set< const Instruction * > InstSet</div><div class="ttdef"><b>Definition:</b> <a href="MTAAnnotator_8h_source.html#l00027">MTAAnnotator.h:27</a></div></div>
|
|
104
|
-
<div class="ttc" id="
|
|
105
|
-
<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#l01112">SparseBitVector.h:1112</a></div></div>
|
|
106
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
|
|
107
|
-
<div class="ttc" id="PointsTo_8h_html"><div class="ttname"><a href="PointsTo_8h.html">PointsTo.h</a></div></div>
|
|
108
|
-
<div class="ttc" id="classSVF_1_1SVFIR_html_a5c5adab1f68520a304fbf70ca40f7687"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5c5adab1f68520a304fbf70ca40f7687">SVF::SVFIR::getGlobalSVFStmtSet</a></div><div class="ttdeci">SVFStmtSet & getGlobalSVFStmtSet()</div><div class="ttdoc">Get global PAGEdges (not in a procedure) </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00218">SVFIR.h:218</a></div></div>
|
|
109
|
-
<div class="ttc" id="classSVF_1_1PointsTo_html_ab196d86cfb48d1c5d27a0c03c7497afa"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">SVF::PointsTo::set</a></div><div class="ttdeci">void set(u32_t n)</div><div class="ttdoc">Inserts n in the set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00157">PointsTo.cpp:157</a></div></div>
|
|
110
|
-
<div class="ttc" id="classSVF_1_1SVFIR_html_a7276e82b4648ed0e1b3d1b8b37b24089"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVF::SVFIR::getAllFieldsObjVars</a></div><div class="ttdeci">NodeBS & getAllFieldsObjVars(const MemObj *obj)</div><div class="ttdoc">Get all fields of an object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00475">SVFIR.cpp:475</a></div></div>
|
|
111
|
-
<div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
|
|
112
|
-
<div class="ttc" id="classSVF_1_1IRGraph_html_a28ea8f85b0923d00364a010c1fd4e416"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a28ea8f85b0923d00364a010c1fd4e416">SVF::IRGraph::SVFStmtSet</a></div><div class="ttdeci">Set< const SVFStmt * > SVFStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00051">IRGraph.h:51</a></div></div>
|
|
113
|
-
<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#l01107">SparseBitVector.h:1107</a></div></div>
|
|
114
|
-
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00096">LLVMModule.h:96</a></div></div>
|
|
115
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00454">SparseBitVector.h:454</a></div></div>
|
|
116
|
-
<div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVF::SVFStmt::ThreadFork</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00060">SVFStatements.h:60</a></div></div>
|
|
117
|
-
<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="AbstractValue_8h_source.html#l00037">AbstractValue.h:37</a></div></div>
|
|
118
|
-
<div class="ttc" id="classSVF_1_1PointsTo_html_a17c66a466bbea93598bca73d82c95479"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a17c66a466bbea93598bca73d82c95479">SVF::PointsTo::find_first</a></div><div class="ttdeci">int find_first()</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00203">PointsTo.cpp:203</a></div></div>
|
|
119
|
-
<div class="ttc" id="namespaceSVF_html_a5a6e8ab900d5cd17ef72661006a7fbe0"><div class="ttname"><a href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">SVF::LoadInst</a></div><div class="ttdeci">llvm::LoadInst LoadInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00124">BasicTypes.h:124</a></div></div>
|
|
120
|
-
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_ae1323233941cdc9b99332e4b954a2217"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ae1323233941cdc9b99332e4b954a2217">SVF::PointerAnalysis::alias</a></div><div class="ttdeci">virtual AliasResult alias(const SVFValue *V1, const SVFValue *V2)=0</div><div class="ttdoc">Interface exposed to users of our pointer analysis, given Value infos. </div></div>
|
|
121
|
-
<div class="ttc" id="LockAnalysis_8h_html"><div class="ttname"><a href="LockAnalysis_8h.html">LockAnalysis.h</a></div></div>
|
|
122
|
-
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_afdd77bc1fca91f70b2ec362f1dacd392"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">SVF::LLVMModuleSet::getSVFValue</a></div><div class="ttdeci">SVFValue * getSVFValue(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00945">LLVMModule.cpp:945</a></div></div>
|
|
123
|
-
<div class="ttc" id="classSVF_1_1PointsTo_html_ad5b582d2672617806c61e6170d0b5a7e"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ad5b582d2672617806c61e6170d0b5a7e">SVF::PointsTo::begin</a></div><div class="ttdeci">const_iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00128">PointsTo.h:128</a></div></div>
|
|
78
|
+
<div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8cpp_source.html#l00016">LockResultValidator.cpp:16</a></div></div>
|
|
124
79
|
<div class="ttc" id="MTAAnnotator_8h_html"><div class="ttname"><a href="MTAAnnotator_8h.html">MTAAnnotator.h</a></div></div>
|
|
125
|
-
<div class="ttc" id="classSVF_1_1PointsTo_html"><div class="ttname"><a href="classSVF_1_1PointsTo.html">SVF::PointsTo</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00028">PointsTo.h:28</a></div></div>
|
|
126
|
-
<div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
|
|
127
80
|
<div class="ttc" id="classSVF_1_1MTAAnnotator_html_af469d79fcc3bebd9360f72696a242d4e"><div class="ttname"><a href="classSVF_1_1MTAAnnotator.html#af469d79fcc3bebd9360f72696a242d4e">SVF::MTAAnnotator::pruneThreadLocal</a></div><div class="ttdeci">void pruneThreadLocal(PointerAnalysis *pta)</div><div class="ttdoc">Prune candidate instructions that are thread local. </div><div class="ttdef"><b>Definition:</b> <a href="MTAAnnotator_8cpp_source.html#l00116">MTAAnnotator.cpp:116</a></div></div>
|
|
128
|
-
<div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
129
|
-
<div class="ttc" id="SVFType_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00435">SVFType.h:435</a></div></div>
|
|
130
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes. </div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00058">BasicTypes.h:58</a></div></div>
|
|
131
81
|
<div class="ttc" id="classSVF_1_1MTAAnnotator_html_a108616cc98f15af3010ca45b91f32c04"><div class="ttname"><a href="classSVF_1_1MTAAnnotator.html#a108616cc98f15af3010ca45b91f32c04">SVF::MTAAnnotator::initialize</a></div><div class="ttdeci">void initialize(MHP *mhp, LockAnalysis *lsa)</div><div class="ttdoc">Initialize. </div><div class="ttdef"><b>Definition:</b> <a href="MTAAnnotator_8cpp_source.html#l00107">MTAAnnotator.cpp:107</a></div></div>
|
|
132
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00296">SVFUtil.h:296</a></div></div>
|
|
133
|
-
<div class="ttc" id="classSVF_1_1SVFStmt_html"><div class="ttname"><a href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00051">SVFStatements.h:51</a></div></div>
|
|
134
|
-
<div class="ttc" id="classSVF_1_1PointerAnalysis_html"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html">SVF::PointerAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00058">PointerAnalysis.h:58</a></div></div>
|
|
135
|
-
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ae74f307b6f96950ceedb2c375ef1c3a3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">SVF::LLVMModuleSet::getSVFInstruction</a></div><div class="ttdeci">SVFInstruction * getSVFInstruction(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00209">LLVMModule.h:209</a></div></div>
|
|
136
82
|
</div><!-- fragment --></div><!-- contents -->
|
|
137
83
|
<!-- start footer part -->
|
|
138
84
|
<hr class="footer"/><address class="footer"><small>
|
|
@@ -69,11 +69,11 @@ $(function() {
|
|
|
69
69
|
<div class="title">MTAAnnotator.h File Reference</div> </div>
|
|
70
70
|
</div><!--header-->
|
|
71
71
|
<div class="contents">
|
|
72
|
-
<div class="textblock"><code>#include "
|
|
73
|
-
<code>#include "
|
|
74
|
-
<code>#include "
|
|
75
|
-
<code>#include "
|
|
76
|
-
<code>#include "
|
|
72
|
+
<div class="textblock"><code>#include "SVF-LLVM/BasicTypes.h"</code><br />
|
|
73
|
+
<code>#include "SVF-LLVM/LLVMModule.h"</code><br />
|
|
74
|
+
<code>#include "SVFIR/SVFValue.h"</code><br />
|
|
75
|
+
<code>#include "Util/Annotator.h"</code><br />
|
|
76
|
+
<code>#include "MTA/MHP.h"</code><br />
|
|
77
77
|
</div>
|
|
78
78
|
<p><a href="MTAAnnotator_8h_source.html">Go to the source code of this file.</a></p>
|
|
79
79
|
<table class="memberdecls">
|
|
@@ -85,7 +85,6 @@ Classes</h2></td></tr>
|
|
|
85
85
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
|
|
86
86
|
Namespaces</h2></td></tr>
|
|
87
87
|
<tr class="memitem:namespaceSVF"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF.html">SVF</a></td></tr>
|
|
88
|
-
<tr class="memdesc:namespaceSVF"><td class="mdescLeft"> </td><td class="mdescRight">for isBitcode <br /></td></tr>
|
|
89
88
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
90
89
|
</table>
|
|
91
90
|
</div><!-- contents -->
|