svf-tools 1.0.351 → 1.0.355

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.
Files changed (341) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +3 -3
  2. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +3 -3
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +2 -2
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
  5. package/SVF-doxygen/html/html/CSC_8cpp_source.html +2 -2
  6. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +2 -2
  7. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  8. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +44 -45
  9. package/SVF-doxygen/html/html/ConsG_8h_source.html +23 -23
  10. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +13 -11
  11. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +6 -6
  12. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/DCHG_8h_source.html +2 -2
  14. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +5 -5
  15. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +2 -2
  18. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +9 -9
  19. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +6 -4
  20. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
  21. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +5 -5
  22. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +2 -2
  23. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +33 -31
  24. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +17 -17
  25. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +30 -30
  26. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +26 -26
  27. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -3
  28. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +10 -9
  29. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +4 -4
  30. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +4 -4
  31. package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
  32. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +19 -8
  33. package/SVF-doxygen/html/html/LocationSet_8h_source.html +6 -6
  34. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
  35. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +2 -2
  36. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +9 -9
  37. package/SVF-doxygen/html/html/MemRegion_8h_source.html +2 -2
  38. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
  39. package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
  40. package/SVF-doxygen/html/html/Options_8cpp_source.html +1 -1
  41. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +3 -3
  42. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +17 -18
  43. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +8 -8
  44. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +19 -22
  45. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +17 -17
  46. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +7 -8
  47. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +8 -8
  48. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
  49. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +8 -8
  50. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  51. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +8 -7
  52. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +34 -35
  53. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +45 -46
  54. package/SVF-doxygen/html/html/SVFIR_8h_source.html +40 -41
  55. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +21 -23
  56. package/SVF-doxygen/html/html/SVFStatements_8h.html +0 -4
  57. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +150 -156
  58. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
  59. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +102 -102
  60. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
  61. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +1 -1
  62. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
  63. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +22 -22
  64. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
  65. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +51 -50
  66. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +67 -62
  67. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +4 -4
  68. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +13 -13
  69. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
  70. package/SVF-doxygen/html/html/VFGNode_8h_source.html +16 -15
  71. package/SVF-doxygen/html/html/VFG_8cpp_source.html +50 -51
  72. package/SVF-doxygen/html/html/VFG_8h_source.html +35 -35
  73. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
  74. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
  75. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +1 -1
  76. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -6
  77. package/SVF-doxygen/html/html/WPAPass_8h_source.html +2 -2
  78. package/SVF-doxygen/html/html/annotated.html +100 -102
  79. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
  80. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +24 -25
  81. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +17 -18
  82. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
  83. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +1 -1
  84. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +5 -5
  85. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +5 -5
  86. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +4 -4
  87. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +2 -2
  88. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt-members.html +28 -29
  89. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +25 -30
  90. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.png +0 -0
  91. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +9 -9
  92. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +28 -29
  93. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +23 -24
  94. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
  95. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +36 -35
  96. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +146 -93
  97. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode-members.html +1 -1
  98. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +8 -8
  99. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +2 -2
  100. package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +27 -28
  101. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +24 -25
  102. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +11 -11
  103. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +12 -12
  104. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +1 -1
  105. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +15 -15
  106. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +30 -31
  107. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +24 -25
  108. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
  109. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph-members.html +1 -1
  110. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +95 -96
  111. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  112. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
  113. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +20 -19
  114. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +24 -25
  115. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +17 -18
  116. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge-members.html +4 -4
  117. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +5 -5
  118. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +1 -1
  119. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +2 -2
  120. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +3 -3
  121. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +3 -3
  122. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +6 -6
  123. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +13 -13
  124. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +13 -13
  125. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +14 -14
  126. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +1 -1
  127. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +8 -7
  128. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +78 -80
  129. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +7 -7
  130. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +63 -62
  131. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  132. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +21 -20
  133. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  134. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +1 -1
  135. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +42 -42
  136. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +58 -55
  137. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +170 -50
  138. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.png +0 -0
  139. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +2 -2
  140. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +39 -39
  141. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +3 -1
  142. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +7 -8
  143. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +1 -1
  144. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +2 -2
  146. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +27 -28
  147. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +17 -18
  148. package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +22 -21
  149. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +86 -32
  150. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +12 -12
  151. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +2 -2
  152. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder-members.html +2 -4
  153. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +11 -15
  154. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +87 -87
  156. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +6 -6
  157. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +1 -1
  158. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +33 -34
  159. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +32 -33
  160. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge-members.html +5 -5
  161. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +6 -6
  162. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +98 -98
  163. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +18 -18
  164. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG-members.html +1 -1
  165. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +6 -6
  166. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +5 -5
  167. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
  168. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +19 -20
  169. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +30 -31
  170. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +23 -24
  171. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +45 -50
  172. package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +27 -28
  173. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +24 -25
  174. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +13 -13
  175. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +2 -2
  176. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +16 -16
  177. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder-members.html +2 -4
  178. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +33 -79
  179. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +2 -2
  180. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +10 -10
  181. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +3 -3
  183. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +94 -95
  184. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +4 -4
  185. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +103 -97
  186. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +24 -25
  187. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +49 -53
  188. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
  189. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +3 -3
  190. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder-members.html +2 -4
  191. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +11 -15
  192. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +4 -4
  193. package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +13 -6
  194. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +263 -37
  195. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +3 -3
  196. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +24 -25
  197. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +18 -19
  198. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +24 -24
  199. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +65 -64
  200. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +90 -63
  201. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +26 -27
  202. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +18 -19
  203. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +26 -27
  204. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +18 -19
  205. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +4 -4
  206. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  207. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +21 -21
  208. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +29 -30
  209. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +30 -31
  210. package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +2 -2
  211. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +79 -80
  212. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +11 -11
  213. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +13 -13
  214. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +4 -4
  215. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +5 -5
  216. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +13 -14
  217. package/SVF-doxygen/html/html/classes.html +95 -93
  218. package/SVF-doxygen/html/html/functions_a.html +18 -17
  219. package/SVF-doxygen/html/html/functions_b.html +5 -11
  220. package/SVF-doxygen/html/html/functions_c.html +22 -22
  221. package/SVF-doxygen/html/html/functions_eval_g.html +2 -1
  222. package/SVF-doxygen/html/html/functions_eval_n.html +0 -1
  223. package/SVF-doxygen/html/html/functions_eval_v.html +0 -1
  224. package/SVF-doxygen/html/html/functions_f.html +20 -15
  225. package/SVF-doxygen/html/html/functions_func.html +19 -18
  226. package/SVF-doxygen/html/html/functions_func_b.html +0 -6
  227. package/SVF-doxygen/html/html/functions_func_c.html +20 -22
  228. package/SVF-doxygen/html/html/functions_func_g.html +37 -24
  229. package/SVF-doxygen/html/html/functions_func_i.html +7 -4
  230. package/SVF-doxygen/html/html/functions_func_n.html +0 -3
  231. package/SVF-doxygen/html/html/functions_func_o.html +3 -4
  232. package/SVF-doxygen/html/html/functions_func_s.html +4 -4
  233. package/SVF-doxygen/html/html/functions_func_t.html +0 -2
  234. package/SVF-doxygen/html/html/functions_func_v.html +0 -3
  235. package/SVF-doxygen/html/html/functions_g.html +37 -23
  236. package/SVF-doxygen/html/html/functions_i.html +9 -6
  237. package/SVF-doxygen/html/html/functions_l.html +5 -5
  238. package/SVF-doxygen/html/html/functions_m.html +1 -1
  239. package/SVF-doxygen/html/html/functions_n.html +0 -4
  240. package/SVF-doxygen/html/html/functions_o.html +12 -15
  241. package/SVF-doxygen/html/html/functions_p.html +12 -12
  242. package/SVF-doxygen/html/html/functions_r.html +9 -5
  243. package/SVF-doxygen/html/html/functions_s.html +24 -16
  244. package/SVF-doxygen/html/html/functions_t.html +10 -10
  245. package/SVF-doxygen/html/html/functions_type_s.html +3 -0
  246. package/SVF-doxygen/html/html/functions_v.html +10 -11
  247. package/SVF-doxygen/html/html/functions_vars_f.html +3 -0
  248. package/SVF-doxygen/html/html/functions_vars_s.html +4 -1
  249. package/SVF-doxygen/html/html/functions_vars_v.html +3 -0
  250. package/SVF-doxygen/html/html/hierarchy.html +55 -57
  251. package/SVF-doxygen/html/html/namespaceSVF.html +0 -4
  252. package/SVF-doxygen/html/html/search/all_1.js +8 -8
  253. package/SVF-doxygen/html/html/search/all_10.js +7 -7
  254. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  255. package/SVF-doxygen/html/html/search/all_13.js +11 -9
  256. package/SVF-doxygen/html/html/search/all_14.js +7 -7
  257. package/SVF-doxygen/html/html/search/all_16.js +4 -4
  258. package/SVF-doxygen/html/html/search/all_2.js +1 -3
  259. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  260. package/SVF-doxygen/html/html/search/all_6.js +1 -0
  261. package/SVF-doxygen/html/html/search/all_7.js +10 -6
  262. package/SVF-doxygen/html/html/search/all_9.js +2 -1
  263. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  264. package/SVF-doxygen/html/html/search/all_d.js +3 -3
  265. package/SVF-doxygen/html/html/search/all_e.js +4 -5
  266. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  267. package/SVF-doxygen/html/html/search/classes_12.js +0 -1
  268. package/SVF-doxygen/html/html/search/classes_b.js +0 -1
  269. package/SVF-doxygen/html/html/search/enumvalues_12.js +1 -1
  270. package/SVF-doxygen/html/html/search/enumvalues_6.js +1 -1
  271. package/SVF-doxygen/html/html/search/enumvalues_b.js +1 -1
  272. package/SVF-doxygen/html/html/search/functions_0.js +8 -8
  273. package/SVF-doxygen/html/html/search/functions_1.js +1 -3
  274. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  275. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  276. package/SVF-doxygen/html/html/search/functions_13.js +0 -1
  277. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  278. package/SVF-doxygen/html/html/search/functions_6.js +9 -5
  279. package/SVF-doxygen/html/html/search/functions_8.js +2 -1
  280. package/SVF-doxygen/html/html/search/functions_c.js +0 -1
  281. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  282. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -0
  283. package/SVF-doxygen/html/html/search/variables_13.js +2 -1
  284. package/SVF-doxygen/html/html/search/variables_14.js +2 -2
  285. package/SVF-doxygen/html/html/search/variables_16.js +1 -0
  286. package/SVF-doxygen/html/html/search/variables_6.js +1 -0
  287. package/SVF-doxygen/html/html/search/variables_e.js +2 -2
  288. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +16 -16
  289. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +16 -16
  290. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  291. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +18 -18
  292. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +3 -3
  293. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  294. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +2 -2
  295. package/include/DDA/DDAVFSolver.h +1 -1
  296. package/include/Graphs/ConsG.h +2 -2
  297. package/include/Graphs/ConsGEdge.h +1 -1
  298. package/include/Graphs/VFG.h +2 -2
  299. package/include/Graphs/VFGNode.h +1 -1
  300. package/include/MSSA/SVFGBuilder.h +0 -2
  301. package/include/MemoryModel/LocationSet.h +4 -0
  302. package/include/MemoryModel/SVFIR.h +3 -3
  303. package/include/MemoryModel/SVFStatements.h +40 -97
  304. package/include/MemoryModel/SVFVariables.h +9 -6
  305. package/include/MemoryModel/SymbolTableInfo.h +27 -6
  306. package/include/SVF-FE/DCHG.h +1 -1
  307. package/include/SVF-FE/SVFIRBuilder.h +6 -6
  308. package/include/Util/IRAnnotator.h +1 -1
  309. package/lib/DDA/ContextDDA.cpp +4 -5
  310. package/lib/DDA/DDAClient.cpp +6 -6
  311. package/lib/DDA/DDAStat.cpp +1 -1
  312. package/lib/DDA/FlowDDA.cpp +4 -5
  313. package/lib/Graphs/ConsG.cpp +26 -31
  314. package/lib/Graphs/ICFG.cpp +4 -0
  315. package/lib/Graphs/SVFG.cpp +2 -2
  316. package/lib/Graphs/VFG.cpp +36 -43
  317. package/lib/MSSA/SVFGBuilder.cpp +4 -11
  318. package/lib/MTA/MTAAnnotator.cpp +3 -3
  319. package/lib/MemoryModel/LocationSet.cpp +69 -7
  320. package/lib/MemoryModel/PointerAnalysis.cpp +0 -6
  321. package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
  322. package/lib/MemoryModel/SVFIR.cpp +27 -35
  323. package/lib/MemoryModel/SVFStatements.cpp +0 -22
  324. package/lib/MemoryModel/SVFVariables.cpp +1 -1
  325. package/lib/MemoryModel/SymbolTableInfo.cpp +24 -17
  326. package/lib/SABER/SrcSnkDDA.cpp +2 -2
  327. package/lib/SVF-FE/DCHG.cpp +1 -1
  328. package/lib/SVF-FE/Graph2Json.cpp +24 -27
  329. package/lib/SVF-FE/SVFIRBuilder.cpp +9 -4
  330. package/lib/Util/Options.cpp +1 -1
  331. package/lib/Util/PTAStat.cpp +9 -9
  332. package/lib/Util/TypeBasedHeapCloning.cpp +5 -5
  333. package/lib/WPA/AndersenSFR.cpp +2 -2
  334. package/lib/WPA/AndersenStat.cpp +2 -2
  335. package/lib/WPA/CSC.cpp +2 -2
  336. package/lib/WPA/FlowSensitive.cpp +7 -12
  337. package/lib/WPA/FlowSensitiveStat.cpp +2 -2
  338. package/lib/WPA/FlowSensitiveTBHC.cpp +6 -9
  339. package/lib/WPA/WPAPass.cpp +1 -9
  340. package/package.json +1 -1
  341. package/tools/Example/svf-ex.cpp +1 -1
@@ -66,7 +66,7 @@ $(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>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MTAAnnotator.cpp</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Created on: May 4, 2014</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Author: Yulei Sui, Peng Di</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="MTAAnnotator_8h.html">MTA/MTAAnnotator.h</a>&quot;</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LockAnalysis_8h.html">MTA/LockAnalysis.h</a>&quot;</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;sstream&gt;</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<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>&#160;<span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a5513a9f2a5b89ab5f90549552fb2b20f"> 18</a></span>&#160;<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>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; std::string str;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; rawstr &lt;&lt; DR_CHECK;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* st = SVFUtil::dyn_cast&lt;StoreInst&gt;(inst))</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; numOfAnnotatedSt++;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; addMDTag(inst, st-&gt;getPointerOperand(), rawstr.str());</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; }</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* ld = SVFUtil::dyn_cast&lt;LoadInst&gt;(inst))</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; numOfAnnotatedLd++;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; addMDTag(inst, ld-&gt;getPointerOperand(), rawstr.str());</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;}</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#ab84e4295f1137090bdf9e0608a4c2077"> 37</a></span>&#160;<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>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVFModule::iterator</a> F = mod-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), E = mod-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>(); F != E; ++F)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(*F))</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">inst_iterator</a> II = inst_begin((*F)-&gt;getLLVMFun()), E = inst_end((*F)-&gt;getLLVMFun()); II != E; ++II)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;LoadInst&gt;(inst))</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; loadset.insert(inst);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;StoreInst&gt;(inst))</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; storeset.insert(inst);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isMemset(inst))</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; storeset.insert(inst);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isMemcpy(inst))</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; storeset.insert(inst);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; loadset.insert(inst);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; numOfAllSt = storeset.size();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; numOfAllLd = loadset.size();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a49434afd0d7beb9f5d6580e8f672889c"> 71</a></span>&#160;<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="l00072"></a><span class="lineno"> 72</span>&#160;{</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* st = SVFUtil::dyn_cast&lt;StoreInst&gt;(inst))</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> st-&gt;getPointerOperand();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isMemset(inst))</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> inst-&gt;getOperand(0);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isMemcpy(inst))</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> inst-&gt;getOperand(0);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a399e53d065bc34af428a1ba89a04972b"> 89</a></span>&#160;<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="l00090"></a><span class="lineno"> 90</span>&#160;{</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* ld = SVFUtil::dyn_cast&lt;LoadInst&gt;(inst))</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> ld-&gt;getPointerOperand();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isMemcpy(inst))</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> inst-&gt;getOperand(1);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;}</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a108616cc98f15af3010ca45b91f32c04"> 104</a></span>&#160;<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="l00105"></a><span class="lineno"> 105</span>&#160;{</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; mhp = m;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; lsa = la;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1Options.html#ae1dadbd4c213f1bd5b8957b5c747bebd">Options::AnnoFlag</a>)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; collectLoadStoreInst(mhp-&gt;getTCT()-&gt;getPTA()-&gt;getModule());</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#af469d79fcc3bebd9360f72696a242d4e"> 113</a></span>&#160;<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="l00114"></a><span class="lineno"> 114</span>&#160;{</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordtype">bool</span> AnnoLocal = <a class="code" href="classSVF_1_1Options.html#ae1dadbd4c213f1bd5b8957b5c747bebd">Options::AnnoFlag</a> &amp; ANNO_LOCAL;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> (!AnnoLocal)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;Run annotator prune thread local pairs\n&quot;</span>));</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> nonlocalobjs;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> worklist;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">PAGEdge::SVFStmtSetTy</a>&amp; forkedges = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a65a4af3d6f0bfc11e31f020bb2966576">getPTASVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">PAGEdge::ThreadFork</a>);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">for</span> (PAGEdge::SVFStmtSetTy::const_iterator it = forkedges.begin(), eit = forkedges.end(); it != eit; ++it)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *it;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; worklist |= pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">getPts</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>());</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; worklist |= pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">getPts</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>());</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1IRGraph.html#a28ea8f85b0923d00364a010c1fd4e416">SVFIR::SVFStmtSet</a>&amp; globaledges = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a5c5adab1f68520a304fbf70ca40f7687">getGlobalSVFStmtSet</a>();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">for</span> (SVFIR::SVFStmtSet::const_iterator it = globaledges.begin(), eit = globaledges.end(); it != eit; ++it)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *it;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">PAGEdge::Addr</a>)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; worklist.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>());</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>())</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj = worklist.<a class="code" href="classSVF_1_1PointsTo.html#a12883234179873d279e72e5947aad836">find_first</a>();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; nonlocalobjs.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(obj);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; worklist.<a class="code" href="classSVF_1_1PointsTo.html#a1ef805e714cfc29f0f3fa56c5ee964f6">reset</a>(obj);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">getPts</a>(obj);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <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#aa53962e561399bf493d1f2b9137356f6">begin</a>(), epit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>(); pit != epit; ++pit)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">if</span> (!nonlocalobjs.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(*pit))</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; worklist.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(*pit);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> fields = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(obj);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">for</span> (NodeBS::iterator pit = fields.begin(), epit = fields.end(); pit != epit; ++pit)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span> (!nonlocalobjs.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(*pit))</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; worklist.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(*pit);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="classSVF_1_1MTAAnnotator.html#a95f4607624dac40e9d62f37e6b16fcf0">InstSet</a> needannost;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="classSVF_1_1MTAAnnotator.html#a95f4607624dac40e9d62f37e6b16fcf0">InstSet</a> needannold;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">for</span> (InstSet::iterator it = storeset.begin(), eit = storeset.end(); it != eit; ++it)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">getPts</a>(pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(getStoreOperand(*it)));</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <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#aa53962e561399bf493d1f2b9137356f6">begin</a>(), epit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>(); pit != epit; ++pit)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">if</span> (nonlocalobjs.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(*pit))</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; needannost.insert(*it);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">for</span> (InstSet::iterator it = loadset.begin(), eit = loadset.end(); it != eit; ++it)</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">getPts</a>(pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(getLoadOperand(*it)));</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <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#aa53962e561399bf493d1f2b9137356f6">begin</a>(), epit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>(); pit != epit; ++pit)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span> (nonlocalobjs.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(*pit))</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; needannold.insert(*it);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; storeset = needannost;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; loadset = needannold;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; numOfNonLocalSt = storeset.size();</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; numOfNonLocalLd = loadset.size();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;}</div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a0ed08b6a94483a750c95eef6c2523dc6"> 199</a></span>&#160;<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="l00200"></a><span class="lineno"> 200</span>&#160;{</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordtype">bool</span> AnnoMHP = <a class="code" href="classSVF_1_1Options.html#ae1dadbd4c213f1bd5b8957b5c747bebd">Options::AnnoFlag</a> &amp; ANNO_MHP;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">bool</span> AnnoAlias = <a class="code" href="classSVF_1_1Options.html#ae1dadbd4c213f1bd5b8957b5c747bebd">Options::AnnoFlag</a> &amp; ANNO_ALIAS;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">if</span> (!AnnoMHP &amp;&amp; !AnnoAlias)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;Run annotator prune Alias or MHP pairs\n&quot;</span>));</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="classSVF_1_1MTAAnnotator.html#a95f4607624dac40e9d62f37e6b16fcf0">InstSet</a> needannost;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="classSVF_1_1MTAAnnotator.html#a95f4607624dac40e9d62f37e6b16fcf0">InstSet</a> needannold;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">for</span> (InstSet::iterator it1 = storeset.begin(), eit1 = storeset.end(); it1 != eit1; ++it1)</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">for</span> (InstSet::iterator it2 = it1, eit2 = storeset.end(); it2 != eit2; ++it2)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span>(!pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">alias</a>(getStoreOperand(*it1), getStoreOperand(*it2)))</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">if</span> (AnnoMHP)</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">if</span> (mhp-&gt;mayHappenInParallel(*it1, *it2) &amp;&amp; !lsa-&gt;isProtectedByCommonLock(*it1, *it2))</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; needannost.insert(*it1);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; needannost.insert(*it2);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; needannost.insert(*it1);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; needannost.insert(*it2);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">for</span> (InstSet::iterator it2 = loadset.begin(), eit2 = loadset.end(); it2 != eit2; ++it2)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">if</span>(!pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">alias</a>(getStoreOperand(*it1), getLoadOperand(*it2)))</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">if</span> (AnnoMHP)</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">if</span> (mhp-&gt;mayHappenInParallel(*it1, *it2) &amp;&amp; !lsa-&gt;isProtectedByCommonLock(*it1, *it2))</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; needannost.insert(*it1);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; needannold.insert(*it2);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; needannost.insert(*it1);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; needannold.insert(*it2);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; storeset = needannost;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; loadset = needannold;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span> (AnnoMHP)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; numOfMHPSt = storeset.size();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; numOfMHPLd = loadset.size();</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (AnnoAlias)</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; numOfAliasSt = storeset.size();</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; numOfAliasLd = loadset.size();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;}</div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a4e25b3ef3e4e91f14c35841d0138d888"> 269</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAAnnotator.html#a4e25b3ef3e4e91f14c35841d0138d888">MTAAnnotator::performAnnotate</a>()</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;{</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1Options.html#ae1dadbd4c213f1bd5b8957b5c747bebd">Options::AnnoFlag</a>)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">for</span> (InstSet::iterator it = storeset.begin(), eit = storeset.end(); it != eit; ++it)</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; annotateDRCheck(const_cast&lt;Instruction*&gt;(*it));</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">for</span> (InstSet::iterator it = loadset.begin(), eit = loadset.end(); it != eit; ++it)</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; annotateDRCheck(const_cast&lt;Instruction*&gt;(*it));</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;}</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#l00023">MHP.h:23</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>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MTAAnnotator.cpp</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Created on: May 4, 2014</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Author: Yulei Sui, Peng Di</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="MTAAnnotator_8h.html">MTA/MTAAnnotator.h</a>&quot;</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LockAnalysis_8h.html">MTA/LockAnalysis.h</a>&quot;</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;sstream&gt;</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<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>&#160;<span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a5513a9f2a5b89ab5f90549552fb2b20f"> 18</a></span>&#160;<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>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; std::string str;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; rawstr &lt;&lt; DR_CHECK;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* st = SVFUtil::dyn_cast&lt;StoreInst&gt;(inst))</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; numOfAnnotatedSt++;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; addMDTag(inst, st-&gt;getPointerOperand(), rawstr.str());</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; }</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* ld = SVFUtil::dyn_cast&lt;LoadInst&gt;(inst))</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; numOfAnnotatedLd++;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; addMDTag(inst, ld-&gt;getPointerOperand(), rawstr.str());</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;}</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#ab84e4295f1137090bdf9e0608a4c2077"> 37</a></span>&#160;<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>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVFModule::iterator</a> F = mod-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), E = mod-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>(); F != E; ++F)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(*F))</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">inst_iterator</a> II = inst_begin((*F)-&gt;getLLVMFun()), E = inst_end((*F)-&gt;getLLVMFun()); II != E; ++II)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;LoadInst&gt;(inst))</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; loadset.insert(inst);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;StoreInst&gt;(inst))</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; storeset.insert(inst);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isMemset(inst))</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; storeset.insert(inst);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isMemcpy(inst))</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; storeset.insert(inst);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; loadset.insert(inst);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; numOfAllSt = storeset.size();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; numOfAllLd = loadset.size();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a49434afd0d7beb9f5d6580e8f672889c"> 71</a></span>&#160;<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="l00072"></a><span class="lineno"> 72</span>&#160;{</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* st = SVFUtil::dyn_cast&lt;StoreInst&gt;(inst))</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> st-&gt;getPointerOperand();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isMemset(inst))</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> inst-&gt;getOperand(0);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isMemcpy(inst))</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> inst-&gt;getOperand(0);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a399e53d065bc34af428a1ba89a04972b"> 89</a></span>&#160;<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="l00090"></a><span class="lineno"> 90</span>&#160;{</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* ld = SVFUtil::dyn_cast&lt;LoadInst&gt;(inst))</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> ld-&gt;getPointerOperand();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isMemcpy(inst))</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> inst-&gt;getOperand(1);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;}</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a108616cc98f15af3010ca45b91f32c04"> 104</a></span>&#160;<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="l00105"></a><span class="lineno"> 105</span>&#160;{</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; mhp = m;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; lsa = la;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1Options.html#ae1dadbd4c213f1bd5b8957b5c747bebd">Options::AnnoFlag</a>)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; collectLoadStoreInst(mhp-&gt;getTCT()-&gt;getPTA()-&gt;getModule());</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#af469d79fcc3bebd9360f72696a242d4e"> 113</a></span>&#160;<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="l00114"></a><span class="lineno"> 114</span>&#160;{</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordtype">bool</span> AnnoLocal = <a class="code" href="classSVF_1_1Options.html#ae1dadbd4c213f1bd5b8957b5c747bebd">Options::AnnoFlag</a> &amp; ANNO_LOCAL;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> (!AnnoLocal)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;Run annotator prune thread local pairs\n&quot;</span>));</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> nonlocalobjs;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> worklist;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; forkedges = pag-&gt;<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="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::const_iterator it = forkedges.begin(), eit = forkedges.end(); it != eit; ++it)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *it;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; worklist |= pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">getPts</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>());</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; worklist |= pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">getPts</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>());</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1IRGraph.html#a28ea8f85b0923d00364a010c1fd4e416">SVFIR::SVFStmtSet</a>&amp; globaledges = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a5c5adab1f68520a304fbf70ca40f7687">getGlobalSVFStmtSet</a>();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">for</span> (SVFIR::SVFStmtSet::const_iterator it = globaledges.begin(), eit = globaledges.end(); it != eit; ++it)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *it;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">if</span> (edge-&gt;<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="l00139"></a><span class="lineno"> 139</span>&#160; {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; worklist.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>());</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>())</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj = worklist.<a class="code" href="classSVF_1_1PointsTo.html#a12883234179873d279e72e5947aad836">find_first</a>();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; nonlocalobjs.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(obj);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; worklist.<a class="code" href="classSVF_1_1PointsTo.html#a1ef805e714cfc29f0f3fa56c5ee964f6">reset</a>(obj);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">getPts</a>(obj);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <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#aa53962e561399bf493d1f2b9137356f6">begin</a>(), epit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>(); pit != epit; ++pit)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">if</span> (!nonlocalobjs.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(*pit))</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; worklist.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(*pit);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> fields = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(obj);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">for</span> (NodeBS::iterator pit = fields.begin(), epit = fields.end(); pit != epit; ++pit)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span> (!nonlocalobjs.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(*pit))</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; worklist.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(*pit);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="classSVF_1_1MTAAnnotator.html#a95f4607624dac40e9d62f37e6b16fcf0">InstSet</a> needannost;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="classSVF_1_1MTAAnnotator.html#a95f4607624dac40e9d62f37e6b16fcf0">InstSet</a> needannold;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">for</span> (InstSet::iterator it = storeset.begin(), eit = storeset.end(); it != eit; ++it)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">getPts</a>(pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(getStoreOperand(*it)));</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <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#aa53962e561399bf493d1f2b9137356f6">begin</a>(), epit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>(); pit != epit; ++pit)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">if</span> (nonlocalobjs.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(*pit))</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; needannost.insert(*it);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">for</span> (InstSet::iterator it = loadset.begin(), eit = loadset.end(); it != eit; ++it)</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">getPts</a>(pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(getLoadOperand(*it)));</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <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#aa53962e561399bf493d1f2b9137356f6">begin</a>(), epit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>(); pit != epit; ++pit)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span> (nonlocalobjs.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(*pit))</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; needannold.insert(*it);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; storeset = needannost;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; loadset = needannold;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; numOfNonLocalSt = storeset.size();</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; numOfNonLocalLd = loadset.size();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;}</div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a0ed08b6a94483a750c95eef6c2523dc6"> 199</a></span>&#160;<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="l00200"></a><span class="lineno"> 200</span>&#160;{</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordtype">bool</span> AnnoMHP = <a class="code" href="classSVF_1_1Options.html#ae1dadbd4c213f1bd5b8957b5c747bebd">Options::AnnoFlag</a> &amp; ANNO_MHP;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">bool</span> AnnoAlias = <a class="code" href="classSVF_1_1Options.html#ae1dadbd4c213f1bd5b8957b5c747bebd">Options::AnnoFlag</a> &amp; ANNO_ALIAS;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">if</span> (!AnnoMHP &amp;&amp; !AnnoAlias)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;Run annotator prune Alias or MHP pairs\n&quot;</span>));</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="classSVF_1_1MTAAnnotator.html#a95f4607624dac40e9d62f37e6b16fcf0">InstSet</a> needannost;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="classSVF_1_1MTAAnnotator.html#a95f4607624dac40e9d62f37e6b16fcf0">InstSet</a> needannold;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">for</span> (InstSet::iterator it1 = storeset.begin(), eit1 = storeset.end(); it1 != eit1; ++it1)</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">for</span> (InstSet::iterator it2 = it1, eit2 = storeset.end(); it2 != eit2; ++it2)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span>(!pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">alias</a>(getStoreOperand(*it1), getStoreOperand(*it2)))</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">if</span> (AnnoMHP)</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">if</span> (mhp-&gt;mayHappenInParallel(*it1, *it2) &amp;&amp; !lsa-&gt;isProtectedByCommonLock(*it1, *it2))</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; needannost.insert(*it1);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; needannost.insert(*it2);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; needannost.insert(*it1);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; needannost.insert(*it2);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">for</span> (InstSet::iterator it2 = loadset.begin(), eit2 = loadset.end(); it2 != eit2; ++it2)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">if</span>(!pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">alias</a>(getStoreOperand(*it1), getLoadOperand(*it2)))</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">if</span> (AnnoMHP)</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">if</span> (mhp-&gt;mayHappenInParallel(*it1, *it2) &amp;&amp; !lsa-&gt;isProtectedByCommonLock(*it1, *it2))</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; needannost.insert(*it1);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; needannold.insert(*it2);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; needannost.insert(*it1);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; needannold.insert(*it2);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; storeset = needannost;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; loadset = needannold;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span> (AnnoMHP)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; numOfMHPSt = storeset.size();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; numOfMHPLd = loadset.size();</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (AnnoAlias)</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; numOfAliasSt = storeset.size();</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; numOfAliasLd = loadset.size();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;}</div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classSVF_1_1MTAAnnotator.html#a4e25b3ef3e4e91f14c35841d0138d888"> 269</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTAAnnotator.html#a4e25b3ef3e4e91f14c35841d0138d888">MTAAnnotator::performAnnotate</a>()</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;{</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1Options.html#ae1dadbd4c213f1bd5b8957b5c747bebd">Options::AnnoFlag</a>)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">for</span> (InstSet::iterator it = storeset.begin(), eit = storeset.end(); it != eit; ++it)</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; annotateDRCheck(const_cast&lt;Instruction*&gt;(*it));</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">for</span> (InstSet::iterator it = loadset.begin(), eit = loadset.end(); it != eit; ++it)</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; annotateDRCheck(const_cast&lt;Instruction*&gt;(*it));</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;}</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#l00023">MHP.h:23</a></div></div>
70
70
  <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#l00081">GenericGraph.h:81</a></div></div>
71
71
  <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#l00151">BasicTypes.h:151</a></div></div>
72
72
  <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>
@@ -82,7 +82,7 @@ $(function() {
82
82
  <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#l00056">SVFStatements.h:56</a></div></div>
83
83
  <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#l00174">PointsTo.h:174</a></div></div>
84
84
  <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#l00073">GenericGraph.h:73</a></div></div>
85
- <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&lt; SVFVar, SVFStmt &gt;::GEdgeSetTy SVFStmtSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00178">SVFStatements.h:178</a></div></div>
85
+ <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&lt; SVFVar, SVFStmt &gt;::GEdgeSetTy SVFStmtSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00177">SVFStatements.h:177</a></div></div>
86
86
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_abd9da46106d820721a24201caaa164e1"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">SVF::PointerAnalysis::alias</a></div><div class="ttdeci">virtual AliasResult alias(const MemoryLocation &amp;LocA, const MemoryLocation &amp;LocB)=0</div><div class="ttdoc">Interface exposed to users of our pointer analysis, given Location infos. </div></div>
87
87
  <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>
88
88
  <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#l00125">PointsTo.cpp:125</a></div></div>
@@ -70,11 +70,11 @@ $(function() {
70
70
  <div class="ttc" id="classSVF_1_1PointsTo_html_ae4749cf6dc43645e2479cefbcc246637"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ae4749cf6dc43645e2479cefbcc246637">SVF::PointsTo::toNodeBS</a></div><div class="ttdeci">NodeBS toNodeBS(void) const</div><div class="ttdoc">Returns this points-to set as a NodeBS. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00298">PointsTo.cpp:298</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html">SVF::BVDataPTAImpl</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00042">PointerAnalysisImpl.h:42</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1MRGenerator_html_aa3a12cf1f761d25b9213bc6e50d89ba5"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#aa3a12cf1f761d25b9213bc6e50d89ba5">SVF::MRGenerator::callGraphSCC</a></div><div class="ttdeci">SCC * callGraphSCC</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00194">MemRegion.h:194</a></div></div>
73
- <div class="ttc" id="classSVF_1_1AddrStmt_html"><div class="ttname"><a href="classSVF_1_1AddrStmt.html">SVF::AddrStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00269">SVFStatements.h:269</a></div></div>
73
+ <div class="ttc" id="classSVF_1_1AddrStmt_html"><div class="ttname"><a href="classSVF_1_1AddrStmt.html">SVF::AddrStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00266">SVFStatements.h:266</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
75
75
  <div class="ttc" id="classSVF_1_1SVFIR_html_a64939d7ecfd8e2cf862782954a56596b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVF::SVFIR::SVFVarList</a></div><div class="ttdeci">std::vector&lt; const SVFVar * &gt; SVFVarList</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00057">SVFIR.h:57</a></div></div>
76
76
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a7d47fbc3dbe8fd19ca5e4210bdecf914"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a7d47fbc3dbe8fd19ca5e4210bdecf914">SVF::MRGenerator::getModSideEffectOfFunction</a></div><div class="ttdeci">const NodeBS &amp; getModSideEffectOfFunction(const SVFFunction *fun)</div><div class="ttdoc">Get indirect mods of a function. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00389">MemRegion.h:389</a></div></div>
77
- <div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00418">SymbolTableInfo.h:418</a></div></div>
77
+ <div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00422">SymbolTableInfo.h:422</a></div></div>
78
78
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
79
79
  <div class="ttc" id="classSVF_1_1SCCDetection_html_a6ab5eff6a576e6d8703c1ea29b7f425d"><div class="ttname"><a href="classSVF_1_1SCCDetection.html#a6ab5eff6a576e6d8703c1ea29b7f425d">SVF::SCCDetection::subNodes</a></div><div class="ttdeci">const NodeBS &amp; subNodes(NodeID n) const</div><div class="ttdoc">get all subnodes in one scc, if size is empty insert itself into the set </div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00173">SCC.h:173</a></div></div>
80
80
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a915486be8b119c1f1cc87143a2a5180e"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a915486be8b119c1f1cc87143a2a5180e">SVF::MRGenerator::addModSideEffectOfCallSite</a></div><div class="ttdeci">bool addModSideEffectOfCallSite(const CallICFGNode *cs, const NodeBS &amp;mods)</div><div class="ttdoc">Add indirect def an memory object in the function. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00447">MemRegion.cpp:447</a></div></div>
@@ -94,8 +94,8 @@ $(function() {
94
94
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
95
95
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
96
96
  <div class="ttc" id="classSVF_1_1ICFG_html_a392e5ea7c356763a988407f91343f034"><div class="ttname"><a href="classSVF_1_1ICFG.html#a392e5ea7c356763a988407f91343f034">SVF::ICFG::getRetBlockNode</a></div><div class="ttdeci">RetICFGNode * getRetBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00222">ICFG.cpp:222</a></div></div>
97
- <div class="ttc" id="classSVF_1_1MemObj_html_a40462512a99eb258d8cd442c38d812b4"><div class="ttname"><a href="classSVF_1_1MemObj.html#a40462512a99eb258d8cd442c38d812b4">SVF::MemObj::isGlobalObj</a></div><div class="ttdeci">bool isGlobalObj() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00665">SymbolTableInfo.cpp:665</a></div></div>
98
- <div class="ttc" id="classSVF_1_1MemObj_html_af7316c697eafc71d5fc93108da4e2cee"><div class="ttname"><a href="classSVF_1_1MemObj.html#af7316c697eafc71d5fc93108da4e2cee">SVF::MemObj::isStack</a></div><div class="ttdeci">bool isStack() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00675">SymbolTableInfo.cpp:675</a></div></div>
97
+ <div class="ttc" id="classSVF_1_1MemObj_html_a40462512a99eb258d8cd442c38d812b4"><div class="ttname"><a href="classSVF_1_1MemObj.html#a40462512a99eb258d8cd442c38d812b4">SVF::MemObj::isGlobalObj</a></div><div class="ttdeci">bool isGlobalObj() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00672">SymbolTableInfo.cpp:672</a></div></div>
98
+ <div class="ttc" id="classSVF_1_1MemObj_html_af7316c697eafc71d5fc93108da4e2cee"><div class="ttname"><a href="classSVF_1_1MemObj.html#af7316c697eafc71d5fc93108da4e2cee">SVF::MemObj::isStack</a></div><div class="ttdeci">bool isStack() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00682">SymbolTableInfo.cpp:682</a></div></div>
99
99
  <div class="ttc" id="classSVF_1_1SVFIR_html_abb91ed47d5c13d0ad7eec35164e37988"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abb91ed47d5c13d0ad7eec35164e37988">SVF::SVFIR::getPTASVFStmtList</a></div><div class="ttdeci">SVFStmtList &amp; getPTASVFStmtList(const ICFGNode *inst)</div><div class="ttdoc">Given an instruction, get all its PTA PAGEdges. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00186">SVFIR.h:186</a></div></div>
100
100
  <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#l00073">GenericGraph.h:73</a></div></div>
101
101
  <div class="ttc" id="classSVF_1_1MRGenerator_html_adc9d530e6f010596d91cd3711dc1358b"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#adc9d530e6f010596d91cd3711dc1358b">SVF::MRGenerator::modRefAnalysis</a></div><div class="ttdeci">virtual void modRefAnalysis(PTACallGraphNode *callGraphNode, WorkList &amp;worklist)</div><div class="ttdoc">Mod-Ref analysis for callsite invoking this callGraphNode. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00635">MemRegion.cpp:635</a></div></div>
@@ -107,7 +107,7 @@ $(function() {
107
107
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
108
108
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a83f5087e84eb7a18976cbd3a446605ee"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a83f5087e84eb7a18976cbd3a446605ee">SVF::MRGenerator::addRefSideEffectOfCallSite</a></div><div class="ttdeci">bool addRefSideEffectOfCallSite(const CallICFGNode *cs, const NodeBS &amp;refs)</div><div class="ttdoc">Add indirect uses an memory object in the function. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00431">MemRegion.cpp:431</a></div></div>
109
109
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a0d8229b1f0b8428708e923d19096e4ba"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a0d8229b1f0b8428708e923d19096e4ba">SVF::MRGenerator::loadsToMRsMap</a></div><div class="ttdeci">LoadsToMRsMap loadsToMRsMap</div><div class="ttdoc">Map a load SVFIR Edge to its memory regions sets in order for inserting mus in Memory SSA...</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00201">MemRegion.h:201</a></div></div>
110
- <div class="ttc" id="classSVF_1_1ObjVar_html"><div class="ttname"><a href="classSVF_1_1ObjVar.html">SVF::ObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00322">SVFVariables.h:322</a></div></div>
110
+ <div class="ttc" id="classSVF_1_1ObjVar_html"><div class="ttname"><a href="classSVF_1_1ObjVar.html">SVF::ObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00325">SVFVariables.h:325</a></div></div>
111
111
  <div class="ttc" id="classSVF_1_1MRGenerator_html_af50efed3af17806a3ba3f668e4466d3e"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#af50efed3af17806a3ba3f668e4466d3e">SVF::MRGenerator::addCPtsToStore</a></div><div class="ttdeci">void addCPtsToStore(NodeBS &amp;cpts, const StoreStmt *st, const SVFFunction *fun)</div><div class="ttdoc">Add cpts to store/load. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00337">MemRegion.h:337</a></div></div>
112
112
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a8717adf4520e0702274c5f013776be52"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a8717adf4520e0702274c5f013776be52">SVF::MRGenerator::SVFStmtList</a></div><div class="ttdeci">SVFIR::SVFStmtList SVFStmtList</div><div class="ttdoc">SVFIR edge list. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00172">MemRegion.h:172</a></div></div>
113
113
  <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>
@@ -149,7 +149,7 @@ $(function() {
149
149
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
150
150
  <div class="ttc" id="classSVF_1_1MRGenerator_html_af8d52e6c9884c6e1abc6dbcbc5e32629"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#af8d52e6c9884c6e1abc6dbcbc5e32629">SVF::MRGenerator::SCC</a></div><div class="ttdeci">SCCDetection&lt; PTACallGraph * &gt; SCC</div><div class="ttdoc">Call Graph SCC. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00174">MemRegion.h:174</a></div></div>
151
151
  <div class="ttc" id="classSVF_1_1MRGenerator_html_acbf0be131b1fc5d0366157d300d1aa68"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#acbf0be131b1fc5d0366157d300d1aa68">SVF::MRGenerator::handleCallsiteModRef</a></div><div class="ttdeci">virtual bool handleCallsiteModRef(NodeBS &amp;mod, NodeBS &amp;ref, const CallICFGNode *cs, const SVFFunction *fun)</div><div class="ttdoc">Get Mod-Ref of a callee function. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00603">MemRegion.cpp:603</a></div></div>
152
- <div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00376">SVFStatements.h:376</a></div></div>
152
+ <div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00373">SVFStatements.h:373</a></div></div>
153
153
  <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#l00205">PointerAnalysis.h:205</a></div></div>
154
154
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html">SVF::PTACallGraphEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00051">PTACallGraph.h:51</a></div></div>
155
155
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a2cf20660f2fd686fa3cabd046c4a10bf"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a2cf20660f2fd686fa3cabd046c4a10bf">SVF::MRGenerator::isNonLocalObject</a></div><div class="ttdeci">bool isNonLocalObject(NodeID id, const SVFFunction *curFun) const</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00576">MemRegion.cpp:576</a></div></div>
@@ -179,7 +179,7 @@ $(function() {
179
179
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a0e46c7beb580ace3a652ac9e1c419b48"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a0e46c7beb580ace3a652ac9e1c419b48">SVF::MRGenerator::cachedPtsChainMap</a></div><div class="ttdeci">NodeToPTSSMap cachedPtsChainMap</div><div class="ttdoc">Map a pointer to its cached points-to chain;. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00236">MemRegion.h:236</a></div></div>
180
180
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a79a3032b50f7ef905213b770b12e0967"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a79a3032b50f7ef905213b770b12e0967">SVF::MRGenerator::addCPtsToLoad</a></div><div class="ttdeci">void addCPtsToLoad(NodeBS &amp;cpts, const LoadStmt *ld, const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00343">MemRegion.h:343</a></div></div>
181
181
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a39604645ca9ba10607ada3872b14705a"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a39604645ca9ba10607ada3872b14705a">SVF::MRGenerator::addModSideEffectOfFunction</a></div><div class="ttdeci">void addModSideEffectOfFunction(const SVFFunction *fun, const NodeBS &amp;mods)</div><div class="ttdoc">Add indirect def an memory object in the function. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00419">MemRegion.cpp:419</a></div></div>
182
- <div class="ttc" id="classSVF_1_1MemObj_html_a898c5bb3956402578266a6fb142e02b1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a898c5bb3956402578266a6fb142e02b1">SVF::MemObj::isHeap</a></div><div class="ttdeci">bool isHeap() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00680">SymbolTableInfo.cpp:680</a></div></div>
182
+ <div class="ttc" id="classSVF_1_1MemObj_html_a898c5bb3956402578266a6fb142e02b1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a898c5bb3956402578266a6fb142e02b1">SVF::MemObj::isHeap</a></div><div class="ttdeci">bool isHeap() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00687">SymbolTableInfo.cpp:687</a></div></div>
183
183
  <div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
184
184
  <div class="ttc" id="classSVF_1_1CallICFGNode_html_a674753d5ca0fbe28674acb25291f2bcf"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">SVF::CallICFGNode::getCallSite</a></div><div class="ttdeci">const Instruction * getCallSite() const</div><div class="ttdoc">Return callsite. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00381">ICFGNode.h:381</a></div></div>
185
185
  <div class="ttc" id="classSVF_1_1MRGenerator_html_ad740188222439c089907fa6c6c951f02"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#ad740188222439c089907fa6c6c951f02">SVF::MRGenerator::getAliasMemRegions</a></div><div class="ttdeci">virtual void getAliasMemRegions(MRSet &amp;aliasMRs, const NodeBS &amp;cpts, const SVFFunction *fun)</div><div class="ttdoc">Get all aliased mem regions from function fun according to cpts. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00305">MemRegion.h:305</a></div></div>
@@ -205,10 +205,10 @@ $(function() {
205
205
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a76aa19edf03a4cacfa3e27a21abfcd07"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a76aa19edf03a4cacfa3e27a21abfcd07">SVF::PTACallGraphEdge::getIndirectCalls</a></div><div class="ttdeci">CallInstSet &amp; getIndirectCalls()</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00099">PTACallGraph.h:99</a></div></div>
206
206
  <div class="ttc" id="classSVF_1_1SVFModule_html_a58d03edb6ff85f4943135478f113df31"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">SVF::SVFModule::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00155">SVFModule.h:155</a></div></div>
207
207
  <div class="ttc" id="SVFModule_8h_html"><div class="ttname"><a href="SVFModule_8h.html">SVFModule.h</a></div></div>
208
- <div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00339">SVFStatements.h:339</a></div></div>
208
+ <div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00336">SVFStatements.h:336</a></div></div>
209
209
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a187d82895b2e1156c6dd5ae28795944f"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a187d82895b2e1156c6dd5ae28795944f">SVF::MRGenerator::hasModSideEffectOfCallSite</a></div><div class="ttdeci">bool hasModSideEffectOfCallSite(const CallICFGNode *cs)</div><div class="ttdoc">Has indirect mods of a callsite. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00409">MemRegion.h:409</a></div></div>
210
210
  <div class="ttc" id="classSVF_1_1MRGenerator_html_abe8d6217250d227e743e4b581497aae8"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#abe8d6217250d227e743e4b581497aae8">SVF::MRGenerator::getMRsForLoad</a></div><div class="ttdeci">virtual void getMRsForLoad(MRSet &amp;aliasMRs, const NodeBS &amp;cpts, const SVFFunction *)</div><div class="ttdoc">Get memory regions for a load statement according to cpts. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00315">MemRegion.h:315</a></div></div>
211
- <div class="ttc" id="classSVF_1_1MemObj_html_a4da54ef60231d2e6c26669226b99d2f3"><div class="ttname"><a href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">SVF::MemObj::getValue</a></div><div class="ttdeci">const Value * getValue() const</div><div class="ttdoc">Get the reference value to this object. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00442">SymbolTableInfo.h:442</a></div></div>
211
+ <div class="ttc" id="classSVF_1_1MemObj_html_a4da54ef60231d2e6c26669226b99d2f3"><div class="ttname"><a href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">SVF::MemObj::getValue</a></div><div class="ttdeci">const Value * getValue() const</div><div class="ttdoc">Get the reference value to this object. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00446">SymbolTableInfo.h:446</a></div></div>
212
212
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a66d94d15fb94e90a771f6b3dd7c0ecdd"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a66d94d15fb94e90a771f6b3dd7c0ecdd">SVF::MRGenerator::sortPointsTo</a></div><div class="ttdeci">virtual void sortPointsTo(const NodeBS &amp;cpts)</div><div class="ttdoc">Given a condition pts, insert into cptsToRepCPtsMap for region generation. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00284">MemRegion.cpp:284</a></div></div>
213
213
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a207dfa4c9f044764665478142c6e6b22"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a207dfa4c9f044764665478142c6e6b22">SVF::MRGenerator::collectModRefForLoadStore</a></div><div class="ttdeci">virtual void collectModRefForLoadStore()</div><div class="ttdoc">Generate regions for loads/stores. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00172">MemRegion.cpp:172</a></div></div>
214
214
  <div class="ttc" id="classSVF_1_1PTACallGraphNode_html_a796994541eec90f2b540e24816120aff"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#a796994541eec90f2b540e24816120aff">SVF::PTACallGraphNode::iterator</a></div><div class="ttdeci">PTACallGraphEdge::CallGraphEdgeSet::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00179">PTACallGraph.h:179</a></div></div>
@@ -123,7 +123,7 @@ $(function() {
123
123
  <div class="ttc" id="classSVF_1_1MemRegion_html_a7ed54700c976f9738012bc051b7f41f5"><div class="ttname"><a href="classSVF_1_1MemRegion.html#a7ed54700c976f9738012bc051b7f41f5">SVF::MemRegion::Condition</a></div><div class="ttdeci">bool Condition</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00055">MemRegion.h:55</a></div></div>
124
124
  <div class="ttc" id="classSVF_1_1MRGenerator_html_afacb458ca832ef459e873b7d90134a8c"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#afacb458ca832ef459e873b7d90134a8c">SVF::MRGenerator::StoresToMRsMap</a></div><div class="ttdeci">Map&lt; const StoreStmt *, MRSet &gt; StoresToMRsMap</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00150">MemRegion.h:150</a></div></div>
125
125
  <div class="ttc" id="classSVF_1_1MemRegion_html_aeb8ba1e0c907aeb3de84d8bd899c98b4"><div class="ttname"><a href="classSVF_1_1MemRegion.html#aeb8ba1e0c907aeb3de84d8bd899c98b4">SVF::MemRegion::rid</a></div><div class="ttdeci">MRID rid</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00059">MemRegion.h:59</a></div></div>
126
- <div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00376">SVFStatements.h:376</a></div></div>
126
+ <div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00373">SVFStatements.h:373</a></div></div>
127
127
  <div class="ttc" id="structSVF_1_1MemRegion_1_1equalMemRegion_html_a3cd8165dfa543312d2b3bfa798b6154b"><div class="ttname"><a href="structSVF_1_1MemRegion_1_1equalMemRegion.html#a3cd8165dfa543312d2b3bfa798b6154b">SVF::MemRegion::equalMemRegion::operator()</a></div><div class="ttdeci">bool operator()(const MemRegion *lhs, const MemRegion *rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00110">MemRegion.h:110</a></div></div>
128
128
  <div class="ttc" id="classSVF_1_1MRGenerator_html_ac0007c8808654ca74feef0d8568378b9"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#ac0007c8808654ca74feef0d8568378b9">SVF::MRGenerator::getRefSideEffectOfFunction</a></div><div class="ttdeci">const NodeBS &amp; getRefSideEffectOfFunction(const SVFFunction *fun)</div><div class="ttdoc">Get indirect refs of a function. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00384">MemRegion.h:384</a></div></div>
129
129
  <div class="ttc" id="classSVF_1_1MemRegion_html_a77a18bcce56cf48d1c338e852a2be9bc"><div class="ttname"><a href="classSVF_1_1MemRegion.html#a77a18bcce56cf48d1c338e852a2be9bc">SVF::MemRegion::cptsSet</a></div><div class="ttdeci">const NodeBS cptsSet</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00060">MemRegion.h:60</a></div></div>
@@ -165,7 +165,7 @@ $(function() {
165
165
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00086">SVFBasicTypes.h:86</a></div></div>
166
166
  <div class="ttc" id="classSVF_1_1MRGenerator_html_acd4694a030755b7491a6ef55d9ba2682"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#acd4694a030755b7491a6ef55d9ba2682">SVF::MRGenerator::getCallSiteRefMRSet</a></div><div class="ttdeci">MRSet &amp; getCallSiteRefMRSet(const CallICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00459">MemRegion.h:459</a></div></div>
167
167
  <div class="ttc" id="classSVF_1_1MRGenerator_html_ab4d1ff0357d389a65ff1c2112ce631a1"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">SVF::MRGenerator::cptsToRepCPtsMap</a></div><div class="ttdeci">PtsToRepPtsSetMap cptsToRepCPtsMap</div><div class="ttdoc">Map a condition pts to its rep conditional pts (super set points-to) </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00276">MemRegion.h:276</a></div></div>
168
- <div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00339">SVFStatements.h:339</a></div></div>
168
+ <div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00336">SVFStatements.h:336</a></div></div>
169
169
  <div class="ttc" id="WorkList_8h_html"><div class="ttname"><a href="WorkList_8h.html">WorkList.h</a></div></div>
170
170
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a187d82895b2e1156c6dd5ae28795944f"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a187d82895b2e1156c6dd5ae28795944f">SVF::MRGenerator::hasModSideEffectOfCallSite</a></div><div class="ttdeci">bool hasModSideEffectOfCallSite(const CallICFGNode *cs)</div><div class="ttdoc">Has indirect mods of a callsite. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00409">MemRegion.h:409</a></div></div>
171
171
  <div class="ttc" id="namespaceSVF_html_a0039280e908258b8e73779de51e9f63b"><div class="ttname"><a href="namespaceSVF.html#a0039280e908258b8e73779de51e9f63b">SVF::MRVERID</a></div><div class="ttdeci">NodeID MRVERID</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00047">MemRegion.h:47</a></div></div>
@@ -133,7 +133,7 @@ $(function() {
133
133
  <div class="ttc" id="classSVF_1_1MemSSA_html_a81bba824495a882b49e687683954b112"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">SVF::MemSSA::MUSet</a></div><div class="ttdeci">Set&lt; MU * &gt; MUSet</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00064">MemSSA.h:64</a></div></div>
134
134
  <div class="ttc" id="classSVF_1_1MemSSA_html_a953a56a65ee36fd1c78b29179cd3f33a"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a">SVF::MemSSA::RETMU</a></div><div class="ttdeci">RetMU&lt; Condition &gt; RETMU</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00054">MemSSA.h:54</a></div></div>
135
135
  <div class="ttc" id="classSVF_1_1MemSSA_html_a66e693af7b37e4e58b4834898d6a34fa"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa">SVF::MemSSA::BBList</a></div><div class="ttdeci">std::vector&lt; const BasicBlock * &gt; BBList</div><div class="ttdoc">For phi insertion. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00087">MemSSA.h:87</a></div></div>
136
- <div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00376">SVFStatements.h:376</a></div></div>
136
+ <div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00373">SVFStatements.h:373</a></div></div>
137
137
  <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#l00205">PointerAnalysis.h:205</a></div></div>
138
138
  <div class="ttc" id="classSVF_1_1MSSADEF_html_a343eb4c9515dfbbbdadaacf5500e5f05"><div class="ttname"><a href="classSVF_1_1MSSADEF.html#a343eb4c9515dfbbbdadaacf5500e5f05">SVF::MSSADEF::setResVer</a></div><div class="ttdeci">void setResVer(MRVer *v)</div><div class="ttdoc">Set result operand ver. </div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00366">MSSAMuChi.h:366</a></div></div>
139
139
  <div class="ttc" id="classSVF_1_1MemSSA_html_aec75259d035e3b5589e6fcbbcdfe4b2c"><div class="ttname"><a href="classSVF_1_1MemSSA.html#aec75259d035e3b5589e6fcbbcdfe4b2c">SVF::MemSSA::hasFuncEntryChi</a></div><div class="ttdeci">bool hasFuncEntryChi(const SVFFunction *fun) const</div><div class="ttdoc">Has function entry chi or return mu. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00367">MemSSA.h:367</a></div></div>
@@ -179,7 +179,7 @@ $(function() {
179
179
  <div class="ttc" id="classSVF_1_1MemSSA_html_a606aaf7a76ca71cb32adc9af7291ae6e"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e">SVF::MemSSA::AddMSSAPHI</a></div><div class="ttdeci">void AddMSSAPHI(const BasicBlock *bb, const MRSet &amp;mrSet)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00203">MemSSA.h:203</a></div></div>
180
180
  <div class="ttc" id="classSVF_1_1MRGenerator_html_acd4694a030755b7491a6ef55d9ba2682"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#acd4694a030755b7491a6ef55d9ba2682">SVF::MRGenerator::getCallSiteRefMRSet</a></div><div class="ttdeci">MRSet &amp; getCallSiteRefMRSet(const CallICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00459">MemRegion.h:459</a></div></div>
181
181
  <div class="ttc" id="classSVF_1_1SVFModule_html_a58d03edb6ff85f4943135478f113df31"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">SVF::SVFModule::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00155">SVFModule.h:155</a></div></div>
182
- <div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00339">SVFStatements.h:339</a></div></div>
182
+ <div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00336">SVFStatements.h:336</a></div></div>
183
183
  <div class="ttc" id="classSVF_1_1MemSSA_html_a0ed34f7a27db045c624c5db61d53132b"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a0ed34f7a27db045c624c5db61d53132b">SVF::MemSSA::RenamePhiOps</a></div><div class="ttdeci">void RenamePhiOps(const PHISet &amp;phiSet, u32_t pos, MRVector &amp;)</div><div class="ttdoc">Rename operands (RHS) of phis. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00279">MemSSA.h:279</a></div></div>
184
184
  <div class="ttc" id="classSVF_1_1MemSSA_html_a52b1598f44fe6a6e30095f596bf85cb0"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a52b1598f44fe6a6e30095f596bf85cb0">SVF::MemSSA::dt</a></div><div class="ttdeci">DominatorTree * dt</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00118">MemSSA.h:118</a></div></div>
185
185
  <div class="ttc" id="classSVF_1_1MemSSA_html_abae2396bf8a37a22be9365d368fe455c"><div class="ttname"><a href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c">SVF::MemSSA::funToReturnMuSetMap</a></div><div class="ttdeci">FunToReturnMuSetMap funToReturnMuSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00137">MemSSA.h:137</a></div></div>