svf-tools 1.0.342 → 1.0.346

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 (420) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -8
  3. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +9 -9
  4. package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
  5. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
  6. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +7 -7
  7. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +5 -5
  8. package/SVF-doxygen/html/html/DDAClient_8h_source.html +3 -3
  9. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +7 -7
  10. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +3 -3
  11. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -3
  12. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +3 -3
  13. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
  14. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +7 -7
  15. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +8 -8
  16. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +2 -2
  17. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +6 -6
  18. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +11 -11
  19. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +15 -15
  20. package/SVF-doxygen/html/html/ICFGNode_8h.html +7 -7
  21. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +69 -69
  22. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +45 -44
  24. package/SVF-doxygen/html/html/ICFG_8h_source.html +34 -34
  25. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +9 -9
  26. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +6 -6
  27. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +2 -2
  28. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +5 -5
  29. package/SVF-doxygen/html/html/MHP_8cpp_source.html +9 -9
  30. package/SVF-doxygen/html/html/MHP_8h_source.html +6 -6
  31. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +9 -9
  32. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +2 -2
  33. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +5 -5
  34. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +26 -26
  35. package/SVF-doxygen/html/html/MemRegion_8h_source.html +18 -18
  36. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +9 -9
  37. package/SVF-doxygen/html/html/MemSSA_8h_source.html +12 -12
  38. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +41 -41
  39. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +47 -46
  40. package/SVF-doxygen/html/html/Options_8cpp_source.html +1 -1
  41. package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
  42. package/SVF-doxygen/html/html/PCG_8h_source.html +4 -4
  43. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +10 -10
  44. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +17 -17
  45. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +6 -6
  46. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
  47. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +16 -16
  48. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +17 -17
  49. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +4 -4
  50. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +4 -4
  51. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +3 -3
  52. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +17 -17
  53. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +2 -2
  54. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +9 -9
  55. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +31 -31
  56. package/SVF-doxygen/html/html/SVFG_8h_source.html +27 -27
  57. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +3 -3
  58. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +13 -13
  59. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +9 -9
  60. package/SVF-doxygen/html/html/SVFIR_8h_source.html +31 -31
  61. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +14 -14
  62. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +7 -7
  63. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
  64. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +4 -4
  65. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -2
  66. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +2 -2
  67. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -2
  68. package/SVF-doxygen/html/html/TCT_8h_source.html +3 -3
  69. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +15 -15
  70. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +20 -20
  71. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +4 -4
  72. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +2 -2
  73. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
  74. package/SVF-doxygen/html/html/VFGNode_8h_source.html +11 -11
  75. package/SVF-doxygen/html/html/VFG_8cpp_source.html +19 -19
  76. package/SVF-doxygen/html/html/VFG_8h_source.html +19 -19
  77. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +6 -6
  78. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
  79. package/SVF-doxygen/html/html/annotated.html +17 -17
  80. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode-members.html +3 -3
  81. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +23 -23
  82. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode-members.html +3 -3
  83. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +23 -23
  84. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode-members.html +3 -3
  85. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +22 -22
  86. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode-members.html +3 -3
  87. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +24 -24
  88. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient-members.html +1 -1
  89. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +7 -7
  90. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +12 -12
  91. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +51 -51
  92. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +12 -12
  93. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +32 -32
  94. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +12 -12
  95. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +32 -32
  96. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +12 -12
  97. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +32 -32
  98. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +12 -12
  99. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +32 -32
  100. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +12 -12
  101. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +34 -34
  102. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +12 -12
  103. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +32 -32
  104. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +12 -12
  105. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +32 -32
  106. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +12 -12
  107. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +38 -38
  108. package/SVF-doxygen/html/html/classSVF_1_1CallCHI-members.html +3 -3
  109. package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +22 -22
  110. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +4 -4
  111. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode-members.html +158 -0
  112. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +852 -0
  113. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.png +0 -0
  114. package/SVF-doxygen/html/html/classSVF_1_1CallMU-members.html +3 -3
  115. package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +22 -22
  116. package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +4 -4
  117. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +27 -27
  118. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +12 -12
  119. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +31 -31
  120. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +2 -2
  121. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +14 -14
  122. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +60 -60
  123. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver-members.html +1 -1
  124. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +16 -16
  125. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +21 -21
  126. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +51 -51
  127. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +5 -5
  128. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
  129. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +12 -12
  130. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +33 -33
  131. package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +5 -5
  132. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +20 -20
  133. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +11 -11
  134. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +52 -52
  135. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +12 -12
  136. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +45 -45
  137. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +12 -12
  138. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +33 -33
  139. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis-members.html +1 -1
  140. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +21 -21
  141. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode-members.html +3 -3
  142. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +19 -19
  143. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode-members.html +3 -3
  144. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +18 -18
  145. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode-members.html +150 -0
  146. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +618 -0
  147. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.png +0 -0
  148. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode-members.html +149 -0
  149. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +624 -0
  150. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.png +0 -0
  151. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient-members.html +1 -1
  152. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +12 -12
  153. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +3 -3
  154. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  155. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode-members.html +144 -0
  156. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +413 -0
  157. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.png +0 -0
  158. package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge-members.html +3 -3
  159. package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge.html +11 -11
  160. package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +22 -22
  161. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +191 -184
  162. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder-members.html +4 -4
  163. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +69 -66
  164. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +9 -9
  165. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.png +0 -0
  166. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter-members.html +11 -11
  167. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +30 -30
  168. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +3 -3
  169. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +21 -21
  170. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +51 -51
  171. package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode-members.html +144 -0
  172. package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.html +399 -0
  173. package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.png +0 -0
  174. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode-members.html +2 -2
  175. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +23 -23
  176. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode-members.html +2 -2
  177. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +20 -20
  178. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +21 -21
  179. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +51 -51
  180. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode-members.html +146 -0
  181. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +494 -0
  182. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.png +0 -0
  183. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +5 -5
  184. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +61 -61
  185. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +14 -14
  186. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator-members.html +1 -1
  187. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +10 -10
  188. package/SVF-doxygen/html/html/classSVF_1_1MHP-members.html +1 -1
  189. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +22 -22
  190. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +24 -24
  191. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +196 -196
  192. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +8 -8
  193. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +6 -6
  194. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +5 -5
  195. package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +10 -10
  196. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +77 -77
  197. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator-members.html +5 -4
  198. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +43 -39
  199. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +90 -90
  200. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
  201. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  202. package/SVF-doxygen/html/html/classSVF_1_1PCG-members.html +1 -1
  203. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +13 -13
  204. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph-members.html +15 -15
  205. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +118 -118
  206. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge-members.html +3 -3
  207. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +32 -32
  208. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +12 -12
  209. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +107 -107
  210. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice-members.html +2 -2
  211. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +18 -18
  212. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode-members.html +153 -0
  213. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +696 -0
  214. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.png +0 -0
  215. package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +4 -4
  216. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +26 -26
  217. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +24 -24
  218. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +159 -159
  219. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  220. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +24 -24
  221. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +76 -76
  222. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +19 -19
  223. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +132 -132
  224. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +4 -4
  225. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +58 -58
  226. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI-members.html +4 -4
  227. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +20 -20
  228. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder-members.html +1 -1
  229. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +13 -13
  230. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +1 -1
  231. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +7 -7
  232. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +12 -12
  233. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +32 -32
  234. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +1 -1
  235. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +7 -7
  236. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +4 -4
  237. package/SVF-doxygen/html/html/classSVF_1_1TCT-members.html +1 -1
  238. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +22 -22
  239. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +4 -4
  240. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +15 -15
  241. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +4 -4
  242. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +15 -15
  243. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph-members.html +40 -40
  244. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +220 -220
  245. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +10 -10
  246. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge-members.html +3 -3
  247. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +11 -11
  248. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge-members.html +3 -3
  249. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +11 -11
  250. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +12 -12
  251. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +41 -41
  252. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +3 -3
  253. package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +9 -9
  254. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +96 -96
  255. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +12 -12
  256. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +39 -39
  257. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +12 -12
  258. package/SVF-doxygen/html/html/classes.html +16 -16
  259. package/SVF-doxygen/html/html/functions_a.html +59 -59
  260. package/SVF-doxygen/html/html/functions_c.html +65 -67
  261. package/SVF-doxygen/html/html/functions_eval_r.html +3 -0
  262. package/SVF-doxygen/html/html/functions_f.html +14 -14
  263. package/SVF-doxygen/html/html/functions_func.html +56 -56
  264. package/SVF-doxygen/html/html/functions_func_c.html +28 -28
  265. package/SVF-doxygen/html/html/functions_func_f.html +6 -6
  266. package/SVF-doxygen/html/html/functions_func_g.html +86 -86
  267. package/SVF-doxygen/html/html/functions_func_h.html +17 -17
  268. package/SVF-doxygen/html/html/functions_func_i.html +12 -12
  269. package/SVF-doxygen/html/html/functions_func_m.html +1 -1
  270. package/SVF-doxygen/html/html/functions_func_p.html +1 -1
  271. package/SVF-doxygen/html/html/functions_func_r.html +6 -6
  272. package/SVF-doxygen/html/html/functions_func_s.html +2 -2
  273. package/SVF-doxygen/html/html/functions_func_t.html +7 -7
  274. package/SVF-doxygen/html/html/functions_func_u.html +3 -3
  275. package/SVF-doxygen/html/html/functions_g.html +88 -88
  276. package/SVF-doxygen/html/html/functions_h.html +16 -16
  277. package/SVF-doxygen/html/html/functions_i.html +22 -22
  278. package/SVF-doxygen/html/html/functions_l.html +3 -3
  279. package/SVF-doxygen/html/html/functions_m.html +2 -2
  280. package/SVF-doxygen/html/html/functions_o.html +13 -13
  281. package/SVF-doxygen/html/html/functions_p.html +14 -14
  282. package/SVF-doxygen/html/html/functions_r.html +13 -12
  283. package/SVF-doxygen/html/html/functions_s.html +13 -13
  284. package/SVF-doxygen/html/html/functions_t.html +12 -14
  285. package/SVF-doxygen/html/html/functions_type.html +1 -1
  286. package/SVF-doxygen/html/html/functions_type_c.html +24 -24
  287. package/SVF-doxygen/html/html/functions_type_f.html +3 -3
  288. package/SVF-doxygen/html/html/functions_type_i.html +2 -2
  289. package/SVF-doxygen/html/html/functions_type_p.html +1 -1
  290. package/SVF-doxygen/html/html/functions_type_s.html +1 -1
  291. package/SVF-doxygen/html/html/functions_type_v.html +2 -2
  292. package/SVF-doxygen/html/html/functions_u.html +3 -3
  293. package/SVF-doxygen/html/html/functions_v.html +8 -8
  294. package/SVF-doxygen/html/html/functions_vars_a.html +2 -2
  295. package/SVF-doxygen/html/html/functions_vars_c.html +11 -11
  296. package/SVF-doxygen/html/html/functions_vars_f.html +5 -5
  297. package/SVF-doxygen/html/html/functions_vars_g.html +1 -1
  298. package/SVF-doxygen/html/html/functions_vars_i.html +3 -3
  299. package/SVF-doxygen/html/html/functions_vars_r.html +1 -1
  300. package/SVF-doxygen/html/html/functions_w.html +9 -5
  301. package/SVF-doxygen/html/html/hierarchy.html +7 -7
  302. package/SVF-doxygen/html/html/namespaceSVF.html +11 -11
  303. package/SVF-doxygen/html/html/search/all_1.js +58 -58
  304. package/SVF-doxygen/html/html/search/all_10.js +8 -8
  305. package/SVF-doxygen/html/html/search/all_12.js +8 -7
  306. package/SVF-doxygen/html/html/search/all_13.js +11 -11
  307. package/SVF-doxygen/html/html/search/all_14.js +8 -8
  308. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  309. package/SVF-doxygen/html/html/search/all_16.js +4 -4
  310. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  311. package/SVF-doxygen/html/html/search/all_3.js +35 -34
  312. package/SVF-doxygen/html/html/search/all_6.js +12 -12
  313. package/SVF-doxygen/html/html/search/all_7.js +62 -61
  314. package/SVF-doxygen/html/html/search/all_8.js +17 -17
  315. package/SVF-doxygen/html/html/search/all_9.js +16 -16
  316. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  317. package/SVF-doxygen/html/html/search/all_d.js +5 -5
  318. package/SVF-doxygen/html/html/search/all_e.js +3 -3
  319. package/SVF-doxygen/html/html/search/all_f.js +3 -3
  320. package/SVF-doxygen/html/html/search/classes_2.js +1 -1
  321. package/SVF-doxygen/html/html/search/classes_5.js +2 -2
  322. package/SVF-doxygen/html/html/search/classes_6.js +1 -1
  323. package/SVF-doxygen/html/html/search/classes_8.js +2 -2
  324. package/SVF-doxygen/html/html/search/classes_e.js +1 -1
  325. package/SVF-doxygen/html/html/search/enumvalues_e.js +2 -1
  326. package/SVF-doxygen/html/html/search/functions_0.js +55 -55
  327. package/SVF-doxygen/html/html/search/functions_10.js +3 -3
  328. package/SVF-doxygen/html/html/search/functions_11.js +4 -4
  329. package/SVF-doxygen/html/html/search/functions_12.js +1 -1
  330. package/SVF-doxygen/html/html/search/functions_2.js +10 -10
  331. package/SVF-doxygen/html/html/search/functions_5.js +4 -4
  332. package/SVF-doxygen/html/html/search/functions_6.js +61 -61
  333. package/SVF-doxygen/html/html/search/functions_7.js +17 -17
  334. package/SVF-doxygen/html/html/search/functions_8.js +12 -12
  335. package/SVF-doxygen/html/html/search/functions_b.js +1 -1
  336. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  337. package/SVF-doxygen/html/html/search/functions_f.js +4 -4
  338. package/SVF-doxygen/html/html/search/typedefs_0.js +1 -1
  339. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  340. package/SVF-doxygen/html/html/search/typedefs_14.js +1 -1
  341. package/SVF-doxygen/html/html/search/typedefs_2.js +21 -21
  342. package/SVF-doxygen/html/html/search/typedefs_5.js +3 -3
  343. package/SVF-doxygen/html/html/search/typedefs_8.js +2 -2
  344. package/SVF-doxygen/html/html/search/typedefs_f.js +1 -1
  345. package/SVF-doxygen/html/html/search/variables_1.js +2 -2
  346. package/SVF-doxygen/html/html/search/variables_12.js +1 -1
  347. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  348. package/SVF-doxygen/html/html/search/variables_3.js +4 -4
  349. package/SVF-doxygen/html/html/search/variables_6.js +5 -5
  350. package/SVF-doxygen/html/html/search/variables_7.js +1 -1
  351. package/SVF-doxygen/html/html/search/variables_9.js +1 -1
  352. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  353. package/SVF-doxygen/html/html/search/variables_e.js +2 -2
  354. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +22 -22
  355. package/include/DDA/ContextDDA.h +3 -3
  356. package/include/DDA/DDAClient.h +2 -2
  357. package/include/DDA/DDAVFSolver.h +2 -2
  358. package/include/DDA/FlowDDA.h +2 -2
  359. package/include/Graphs/ICFG.h +33 -33
  360. package/include/Graphs/ICFGNode.h +33 -33
  361. package/include/Graphs/ICFGStat.h +11 -11
  362. package/include/Graphs/PTACallGraph.h +19 -19
  363. package/include/Graphs/SVFG.h +16 -16
  364. package/include/Graphs/SVFGNode.h +14 -14
  365. package/include/Graphs/SVFGOPT.h +1 -1
  366. package/include/Graphs/ThreadCallGraph.h +25 -25
  367. package/include/Graphs/VFG.h +10 -10
  368. package/include/Graphs/VFGNode.h +8 -8
  369. package/include/MSSA/MSSAMuChi.h +6 -6
  370. package/include/MSSA/MemRegion.h +24 -24
  371. package/include/MSSA/MemSSA.h +10 -10
  372. package/include/MTA/LockResultValidator.h +2 -2
  373. package/include/MTA/MHP.h +4 -4
  374. package/include/MTA/PCG.h +1 -1
  375. package/include/MTA/TCT.h +2 -2
  376. package/include/MemoryModel/PointerAnalysis.h +12 -12
  377. package/include/MemoryModel/SVFIR.h +21 -21
  378. package/include/MemoryModel/SVFStatements.h +11 -11
  379. package/include/SABER/LeakChecker.h +4 -4
  380. package/include/SABER/ProgSlice.h +2 -2
  381. package/include/SABER/SaberCheckerAPI.h +4 -4
  382. package/include/SABER/SaberSVFGBuilder.h +1 -1
  383. package/include/SABER/SrcSnkDDA.h +1 -1
  384. package/include/SVF-FE/ICFGBuilder.h +4 -4
  385. package/include/SVF-FE/SVFIRBuilder.h +5 -5
  386. package/include/Util/NodeIDAllocator.h +3 -0
  387. package/lib/DDA/ContextDDA.cpp +3 -3
  388. package/lib/DDA/DDAClient.cpp +1 -1
  389. package/lib/DDA/FlowDDA.cpp +1 -1
  390. package/lib/Graphs/ICFG.cpp +55 -50
  391. package/lib/Graphs/PTACallGraph.cpp +5 -5
  392. package/lib/Graphs/SVFG.cpp +7 -7
  393. package/lib/Graphs/ThreadCallGraph.cpp +6 -6
  394. package/lib/Graphs/VFG.cpp +6 -6
  395. package/lib/MSSA/MemRegion.cpp +17 -17
  396. package/lib/MSSA/MemSSA.cpp +3 -3
  397. package/lib/MTA/LockAnalysis.cpp +4 -4
  398. package/lib/MTA/MHP.cpp +5 -5
  399. package/lib/MTA/MTAResultValidator.cpp +1 -1
  400. package/lib/MTA/PCG.cpp +1 -1
  401. package/lib/MemoryModel/PointerAnalysis.cpp +10 -10
  402. package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
  403. package/lib/MemoryModel/SVFIR.cpp +5 -5
  404. package/lib/SABER/DoubleFreeChecker.cpp +1 -1
  405. package/lib/SABER/FileChecker.cpp +2 -2
  406. package/lib/SABER/LeakChecker.cpp +8 -8
  407. package/lib/SABER/ProgSlice.cpp +2 -2
  408. package/lib/SVF-FE/CallGraphBuilder.cpp +4 -4
  409. package/lib/SVF-FE/Graph2Json.cpp +5 -5
  410. package/lib/SVF-FE/ICFGBuilder.cpp +31 -25
  411. package/lib/SVF-FE/SVFIRBuilder.cpp +8 -8
  412. package/lib/Util/NodeIDAllocator.cpp +12 -0
  413. package/lib/Util/Options.cpp +2 -1
  414. package/lib/Util/TypeBasedHeapCloning.cpp +1 -1
  415. package/lib/WPA/Andersen.cpp +3 -3
  416. package/lib/WPA/FlowSensitive.cpp +2 -2
  417. package/lib/WPA/TypeAnalysis.cpp +1 -1
  418. package/lib/WPA/VersionedFlowSensitive.cpp +4 -4
  419. package/lib/WPA/WPAPass.cpp +4 -4
  420. package/package.json +1 -1
@@ -66,14 +66,14 @@ $(function() {
66
66
  <div class="title">MemSSA.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="MemSSA_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- MemSSA.h -- Memory SSA-------------------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</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="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></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"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * MemorySSAPass.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Jul 14, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></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="preprocessor">#ifndef MEMORYSSAPASS_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define MEMORYSSAPASS_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="MemRegion_8h.html">MSSA/MemRegion.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="MSSAMuChi_8h.html">MSSA/MSSAMuChi.h</a>&quot;</span></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;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></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;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">class </span>PointerAnalysis;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">class </span>MemSSAStat;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> * Memory SSA implementation on top of partial SSA</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html"> 46</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MemSSA.html">MemSSA</a></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</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;<span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0c8f70b6283e26e70dafe02fcb5180a"> 52</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MemRegion.html#a7ed54700c976f9738012bc051b7f41f5">MemRegion::Condition</a> <a class="code" href="classSVF_1_1MemSSA.html#ac0c8f70b6283e26e70dafe02fcb5180a">Condition</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a2b4f3b19b32ac61dd1932faa82b93d8b"> 53</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSAMU.html">MSSAMU&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a2b4f3b19b32ac61dd1932faa82b93d8b">MU</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a"> 54</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1RetMU.html">RetMU&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a">RETMU</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1"> 55</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1LoadMU.html">LoadMU&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1">LOADMU</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25"> 56</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CallMU.html">CallMU&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25">CALLMU</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a503f2fda873c330ef2cc5561f396ea6e"> 57</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSACHI.html">MSSACHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a503f2fda873c330ef2cc5561f396ea6e">CHI</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5"> 58</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1EntryCHI.html">EntryCHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5">ENTRYCHI</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4"> 59</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1StoreCHI.html">StoreCHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4">STORECHI</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9"> 60</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CallCHI.html">CallCHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9">CALLCHI</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1"> 61</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSAPHI.html">MSSAPHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1">PHI</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a57e68097212e88568eea829fb998fe0c"> 62</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSADEF.html">MSSADEF</a> <a class="code" href="classSVF_1_1MemSSA.html#a57e68097212e88568eea829fb998fe0c">MDEF</a>;</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"><a class="line" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112"> 64</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;MU*&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MUSet</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4"> 65</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;CHI*&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">CHISet</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f"> 66</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;PHI*&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">PHISet</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a37b84780f57cbee50cf957cfbab195c1"> 69</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRGenerator::MRSet</a> <a class="code" href="classSVF_1_1MemSSA.html#a37b84780f57cbee50cf957cfbab195c1">MRSet</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e"> 70</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const MemRegion*&gt; <a class="code" href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e">MRVector</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a94164c59384ef04f98a3713b504fca35"> 74</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const LoadStmt*, MUSet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a94164c59384ef04f98a3713b504fca35">LoadToMUSetMap</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#acfee1bb5534026ce991a1ab5e796c6b9"> 75</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const StoreStmt*, CHISet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#acfee1bb5534026ce991a1ab5e796c6b9">StoreToChiSetMap</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af7d3abb0b38f83c6f0a3c6a9e1ebff97"> 76</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallBlockNode*, MUSet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#af7d3abb0b38f83c6f0a3c6a9e1ebff97">CallSiteToMUSetMap</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ab985012d7730beed71a5e77595d29548"> 77</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallBlockNode*, CHISet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#ab985012d7730beed71a5e77595d29548">CallSiteToCHISetMap</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a59cca6cbd8f18c9521027d8ddd13ffc5"> 78</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const BasicBlock*, PHISet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a59cca6cbd8f18c9521027d8ddd13ffc5">BBToPhiSetMap</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac34aa1ac96600bfc27b3c2eb0b1510ca"> 82</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, CHISet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#ac34aa1ac96600bfc27b3c2eb0b1510ca">FunToEntryChiSetMap</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3cfc6d7134f98e5876c16c6c043a3d92"> 83</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, MUSet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a3cfc6d7134f98e5876c16c6c043a3d92">FunToReturnMuSetMap</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa"> 87</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const BasicBlock*&gt; <a class="code" href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa">BBList</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14"> 88</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const BasicBlock*, MRSet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14">BBToMRSetMap</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8d0c1a00d7db194da66c685d79e73de5"> 89</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const MemRegion*, BBList&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a8d0c1a00d7db194da66c685d79e73de5">MemRegToBBsMap</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#aa9dbaf51f0498f3bd878827744208899"> 93</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const MemRegion*, std::vector&lt;MRVer*&gt;</a> &gt; <a class="code" href="classSVF_1_1MemSSA.html#aa9dbaf51f0498f3bd878827744208899">MemRegToVerStackMap</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae1aca020147c270deca2a1241e3847d0"> 94</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const MemRegion*, MRVERSION&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#ae1aca020147c270deca2a1241e3847d0">MemRegToCounterMap</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e"> 97</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFIR::SVFStmtList</a> <a class="code" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVFStmtList</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a37dca8a7d155de4870358146d219b5e5"> 101</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a37dca8a7d155de4870358146d219b5e5">timeOfGeneratingMemRegions</a>; </div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4d2418b7df74f23d8fd328f66e29f198"> 102</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a4d2418b7df74f23d8fd328f66e29f198">timeOfCreateMUCHI</a>; </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3c7b5fa73fdc7c805ee3673fbe812b44"> 103</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a3c7b5fa73fdc7c805ee3673fbe812b44">timeOfInsertingPHI</a>; </div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a97ccd5e0b9ab6144415e26bdf95cbabd"> 104</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a97ccd5e0b9ab6144415e26bdf95cbabd">timeOfSSARenaming</a>; </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;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671"> 107</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671">MemPartition</a></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a9da5f4ad2a43befdbc4be319bffc80ea"> 109</a></span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a9da5f4ad2a43befdbc4be319bffc80ea">Distinct</a>,</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671ac9388cc44f91bd9a00666c0d69b32ef1"> 110</a></span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671ac9388cc44f91bd9a00666c0d69b32ef1">IntraDisjoint</a>,</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a549b5589ecfbe073623091605785fc03"> 111</a></span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a549b5589ecfbe073623091605785fc03">InterDisjoint</a></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"> 113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3"> 115</a></span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5"> 116</a></span>&#160; <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a>* <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0aeb79ec4f86f55c97bd397509acd05"> 117</a></span>&#160; <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a>* <a class="code" href="classSVF_1_1MemSSA.html#ac0aeb79ec4f86f55c97bd397509acd05">df</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a52b1598f44fe6a6e30095f596bf85cb0"> 118</a></span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* <a class="code" href="classSVF_1_1MemSSA.html#a52b1598f44fe6a6e30095f596bf85cb0">dt</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4fc930040ec54eb60629da18fb6a4d04"> 119</a></span>&#160; <a class="code" href="classSVF_1_1MemSSAStat.html">MemSSAStat</a>* <a class="code" href="classSVF_1_1MemSSA.html#a4fc930040ec54eb60629da18fb6a4d04">stat</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a695adf83e8c40b9628b1866053f68033">createMUCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp; fun);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#acc6f72d96cf29e36093ba08ea86b8983">insertPHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp; fun);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a16114eb55775f6ee812c1648dcaede0c">SSARename</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp; fun);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a271c20725d49dd65b95c062938ffde4c">SSARenameBB</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>&amp; bb);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6"> 130</a></span>&#160; LoadToMUSetMap <a class="code" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6">load2MuSetMap</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a"> 131</a></span>&#160; StoreToChiSetMap <a class="code" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a">store2ChiSetMap</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a"> 132</a></span>&#160; CallSiteToMUSetMap <a class="code" href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a">callsiteToMuSetMap</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195"> 133</a></span>&#160; CallSiteToCHISetMap <a class="code" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195">callsiteToChiSetMap</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23"> 134</a></span>&#160; BBToPhiSetMap <a class="code" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23">bb2PhiSetMap</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec"> 136</a></span>&#160; FunToEntryChiSetMap <a class="code" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec">funToEntryChiSetMap</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c"> 137</a></span>&#160; FunToReturnMuSetMap <a class="code" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c">funToReturnMuSetMap</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d"> 139</a></span>&#160; MemRegToVerStackMap <a class="code" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d">mr2VerStackMap</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a22e2dd0fc78877bdedd207a40540a634"> 140</a></span>&#160; MemRegToCounterMap <a class="code" href="classSVF_1_1MemSSA.html#a22e2dd0fc78877bdedd207a40540a634">mr2CounterMap</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">// (see algorithm in book Engineering A Compiler section 9.3)</span></div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa"> 146</a></span>&#160;<span class="comment"></span> MRSet <a class="code" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">usedRegs</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#add1d4ff17d0860906d2f5f7172176121"> 148</a></span>&#160; MemRegToBBsMap <a class="code" href="classSVF_1_1MemSSA.html#add1d4ff17d0860906d2f5f7172176121">reg2BBMap</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae64f97a984765a43f05df26b57a43a43"> 150</a></span>&#160; MRSet <a class="code" href="classSVF_1_1MemSSA.html#ae64f97a984765a43f05df26b57a43a43">varKills</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a3d6096aeb4155444b532b02bb8559113">destroy</a>();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* <a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr, <a class="code" href="classSVF_1_1MSSADEF.html">MSSADEF</a>* def);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79"> 160</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* <a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</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; std::vector&lt;MRVer*&gt; &amp;stack = mr2VerStackMap[mr];</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!stack.empty() &amp;&amp; <span class="stringliteral">&quot;stack is empty!!&quot;</span>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">return</span> stack.back();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</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"><a class="line" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390"> 169</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span> (0 == varKills.count(mr))</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; usedRegs.insert(mr);</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"><a class="line" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a"> 174</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; varKills.insert(mr);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; reg2BBMap[mr].push_back(bb);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42"> 183</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load, <span class="keyword">const</span> MRSet&amp; mrSet)</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">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a>(bb,load,*iter);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5"> 188</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store, <span class="keyword">const</span> MRSet&amp; mrSet)</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; <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a>(bb,store,*iter);</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"><a class="line" href="classSVF_1_1MemSSA.html#a1aa05f81640286a796db0ded4e10c7ac"> 193</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a1aa05f81640286a796db0ded4e10c7ac">AddCallSiteMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> MRSet&amp; mrSet)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a1aa05f81640286a796db0ded4e10c7ac">AddCallSiteMU</a>(cs,*iter);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac6f2171f92e0bdd5dbdb58efed144c18"> 198</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#ac6f2171f92e0bdd5dbdb58efed144c18">AddCallSiteCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> MRSet&amp; mrSet)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ac6f2171f92e0bdd5dbdb58efed144c18">AddCallSiteCHI</a>(cs,*iter);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e"> 203</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e">AddMSSAPHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> MRSet&amp; mrSet)</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">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e">AddMSSAPHI</a>(bb,*iter);</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"><a class="line" href="classSVF_1_1MemSSA.html#a397c835c15c15e18697beca2ff27a73f"> 208</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a397c835c15c15e18697beca2ff27a73f">AddLoadMU</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; LOADMU* mu = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1">LOADMU</a>(bb,load, mr);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; load2MuSetMap[load].insert(mu);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8d9bfa2ad724a3b286edc56b7c15e9bf"> 214</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a8d9bfa2ad724a3b286edc56b7c15e9bf">AddStoreCHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; STORECHI* chi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4">STORECHI</a>(bb,store, mr);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; store2ChiSetMap[store].insert(chi);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(bb,mr);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ab393093a1499564cfd62ff8587a3ade1"> 221</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#ab393093a1499564cfd62ff8587a3ade1">AddCallSiteMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; CALLMU* mu = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25">CALLMU</a>(cs, mr);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; callsiteToMuSetMap[cs].insert(mu);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a96556440a0e65e8aa073f944e059cc9c"> 227</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a96556440a0e65e8aa073f944e059cc9c">AddCallSiteCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; CALLCHI* chi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9">CALLCHI</a>(cs, mr);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; callsiteToChiSetMap[cs].insert(chi);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(chi-&gt;<a class="code" href="classSVF_1_1CallCHI.html#a69f83ff81ea017d645aadeb46334880f">getBasicBlock</a>(),mr);</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"><a class="line" href="classSVF_1_1MemSSA.html#a3af850d2fe9b2e75b2705c6d1355eda2"> 234</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a3af850d2fe9b2e75b2705c6d1355eda2">AddMSSAPHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; bb2PhiSetMap[bb].insert(<span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1">PHI</a>(bb, mr));</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</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="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<span class="keyword">const</span> MUSet&amp; muSet)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">for</span> (MUSet::const_iterator mit = muSet.begin(), emit = muSet.end();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; mit != emit; ++mit)</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; MU* mu = (*mit);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; mu-&gt;<a class="code" href="classSVF_1_1MSSAMU.html#a2af1e639aabbc5997aa4e6526f6595fb">setVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(mu-&gt;<a class="code" href="classSVF_1_1MSSAMU.html#a6bd671839ec0376439ccd81d5b2eff30">getMR</a>()));</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8"> 254</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">RenameChiSet</a>(<span class="keyword">const</span> CHISet&amp; chiSet, MRVector&amp; memRegs)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">for</span> (CHISet::const_iterator cit = chiSet.begin(), ecit = chiSet.end();</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; cit != ecit; ++cit)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; CHI* chi = (*cit);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; chi-&gt;<a class="code" href="classSVF_1_1MSSACHI.html#a245d8ee9e81ba4fe6f41533baf471331">setOpVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>()));</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a343eb4c9515dfbbbdadaacf5500e5f05">setResVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>(),chi));</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; memRegs.push_back(chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>());</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</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;</div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3"> 267</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3">RenamePhiRes</a>(<span class="keyword">const</span> PHISet&amp; phiSet, MRVector&amp; memRegs)</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"> 269</span>&#160; <span class="keywordflow">for</span> (PHISet::const_iterator iter = phiSet.begin(), eiter = phiSet.end();</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; iter != eiter; ++iter)</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; PHI* phi = *iter;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a343eb4c9515dfbbbdadaacf5500e5f05">setResVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>(),phi));</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; memRegs.push_back(phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>());</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</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;</div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a0ed34f7a27db045c624c5db61d53132b"> 279</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a0ed34f7a27db045c624c5db61d53132b">RenamePhiOps</a>(<span class="keyword">const</span> PHISet&amp; phiSet, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos, MRVector&amp;)</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; <span class="keywordflow">for</span> (PHISet::const_iterator iter = phiSet.begin(), eiter = phiSet.end();</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; iter != eiter; ++iter)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; PHI* phi = *iter;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; phi-&gt;<a class="code" href="classSVF_1_1MSSAPHI.html#a74f663dc5ecc659e98542a53414b7988">setOpVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>()), pos);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a36e9cf7394c3ece8a5f2f9bfc512956a"> 292</a></span>&#160; <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a>* <a class="code" href="classSVF_1_1MemSSA.html#a36e9cf7394c3ece8a5f2f9bfc512956a">getDF</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp;)</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#ac0aeb79ec4f86f55c97bd397509acd05">df</a>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a9741a8d0540ba4c27cb667590d246197"> 296</a></span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* <a class="code" href="classSVF_1_1MemSSA.html#a9741a8d0540ba4c27cb667590d246197">getDT</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp;)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a52b1598f44fe6a6e30095f596bf85cb0">dt</a>;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a11e1e9a74a6764131fc8aae27d8bde5e">setCurrentDFDT</a>(<a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a>* f, <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* t);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a6bd57451370f5f4c92ce212be4cddd15">MemSSA</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* p, <span class="keywordtype">bool</span> ptrOnlyMSSA);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae09603b40c7359c4cd2f644d3efc40cc"> 308</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MemSSA.html#ae09603b40c7359c4cd2f644d3efc40cc">~MemSSA</a>()</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a3d6096aeb4155444b532b02bb8559113">destroy</a>();</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1MemSSA.html#a41b153f2f8f3a27be63750e73a290569">getPAG</a>();</div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac"> 315</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div><div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09"> 320</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a>* <a class="code" href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09">getMRGenerator</a>()</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#ae56d1878046c119d1857727ca3609d74">buildMemSSA</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp; fun,<a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a>*, <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>*);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a89c40c8fad70f3aead6531261e5a3cc3">performStat</a>();</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc"> 332</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">hasMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load = SVFUtil::dyn_cast&lt;LoadStmt&gt;(inst))</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 != load2MuSetMap.count(load)</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; &amp;&amp; <span class="stringliteral">&quot;not associated with mem region!&quot;</span>);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1"> 343</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">hasCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store = SVFUtil::dyn_cast&lt;StoreStmt&gt;(</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; inst))</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 != store2ChiSetMap.count(store)</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; &amp;&amp; <span class="stringliteral">&quot;not associated with mem region!&quot;</span>);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a480f37f70e9c3ff8ce7750a4d5f6f05b"> 355</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a480f37f70e9c3ff8ce7750a4d5f6f05b">hasMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">return</span> callsiteToMuSetMap.find(cs)!=callsiteToMuSetMap.end();</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a51b8381b80b23590e638489c2a6760a4"> 359</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a51b8381b80b23590e638489c2a6760a4">hasCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">return</span> callsiteToChiSetMap.find(cs)!=callsiteToChiSetMap.end();</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;</div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#aec75259d035e3b5589e6fcbbcdfe4b2c"> 367</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#aec75259d035e3b5589e6fcbbcdfe4b2c">hasFuncEntryChi</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)<span class="keyword"> const</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">return</span> (funToEntryChiSetMap.find(fun) != funToEntryChiSetMap.end());</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f"> 371</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f">hasReturnMu</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)<span class="keyword"> const</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">return</span> (funToReturnMuSetMap.find(fun) != funToReturnMuSetMap.end());</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800"> 376</a></span>&#160; <span class="keyword">inline</span> CHISet&amp; <a class="code" href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800">getFuncEntryChiSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">return</span> funToEntryChiSetMap[fun];</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div><div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93"> 380</a></span>&#160; <span class="keyword">inline</span> MUSet&amp; <a class="code" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93">getReturnMuSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">return</span> funToReturnMuSetMap[fun];</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;</div><div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847"> 388</a></span>&#160; <span class="keyword">inline</span> MUSet&amp; <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* ld)</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">return</span> load2MuSetMap[ld];</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418"> 392</a></span>&#160; <span class="keyword">inline</span> CHISet&amp; <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* st)</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> store2ChiSetMap[st];</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div><div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a59392ba4cc987f5fefa4eca0ebe411fe"> 396</a></span>&#160; <span class="keyword">inline</span> MUSet&amp; <a class="code" href="classSVF_1_1MemSSA.html#a59392ba4cc987f5fefa4eca0ebe411fe">getMUSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">return</span> callsiteToMuSetMap[cs];</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae7b0f618fb36bbc8e9439d70b377cf6b"> 400</a></span>&#160; <span class="keyword">inline</span> CHISet&amp; <a class="code" href="classSVF_1_1MemSSA.html#ae7b0f618fb36bbc8e9439d70b377cf6b">getCHISet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">return</span> callsiteToChiSetMap[cs];</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274"> 404</a></span>&#160; <span class="keyword">inline</span> PHISet&amp; <a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb)</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span> bb2PhiSetMap[bb];</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div><div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298"> 408</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298">hasPHISet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb)<span class="keyword"> const</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> bb2PhiSetMap.find(bb)!=bb2PhiSetMap.end();</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div><div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a70dd35ef458c452330dfebcdde17b84c"> 412</a></span>&#160; <span class="keyword">inline</span> LoadToMUSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a70dd35ef458c452330dfebcdde17b84c">getLoadToMUSetMap</a>()</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6">load2MuSetMap</a>;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a97166aa7102816a16734d7e2f1c130b0"> 416</a></span>&#160; <span class="keyword">inline</span> StoreToChiSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a97166aa7102816a16734d7e2f1c130b0">getStoreToChiSetMap</a>()</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a">store2ChiSetMap</a>;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a"> 420</a></span>&#160; <span class="keyword">inline</span> FunToReturnMuSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a">getFunToRetMuSetMap</a>()</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c">funToReturnMuSetMap</a>;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198"> 424</a></span>&#160; <span class="keyword">inline</span> FunToEntryChiSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198">getFunToEntryChiSetMap</a>()</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec">funToEntryChiSetMap</a>;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div><div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43"> 428</a></span>&#160; <span class="keyword">inline</span> CallSiteToMUSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43">getCallSiteToMuSetMap</a>()</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a">callsiteToMuSetMap</a>;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</div><div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d"> 432</a></span>&#160; <span class="keyword">inline</span> CallSiteToCHISetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d">getCallSiteToChiSetMap</a>()</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195">callsiteToChiSetMap</a>;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div><div class="line"><a name="l00436"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d"> 436</a></span>&#160; <span class="keyword">inline</span> BBToPhiSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">getBBToPhiSetMap</a>()</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23">bb2PhiSetMap</a>;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#aafc83f7f22ebf3b3683607440c488bef">getLoadMuNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#aa8c45b455e6fc60cab955534c3e50bfa">getStoreChiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a15272a4ed019d1c323d1826c1bedb70f">getFunEntryChiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a67175188232e08f5c5374f92ff61810f">getFunRetMuNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a9e8c5b85957485635d0f72c2f48bb8b5">getCallSiteMuNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a2c65795ca63a53c833f5ac17a752b6dc">getCallSiteChiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a9bb6512999cbf9c7c03153be77c8af20">getBBPhiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a9f9ac433d9c9348ceb5be8893d814ebd">dumpMSSA</a>(<a class="code" href="namespaceSVF.html#a424cc053c29ad7303699c529d1a2cc71">raw_ostream</a> &amp; Out = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>());</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;};</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* MEMORYSSAPASS_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1MRVer_html"><div class="ttname"><a href="classSVF_1_1MRVer.html">SVF::MRVer</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00043">MSSAMuChi.h:43</a></div></div>
69
+ <a href="MemSSA_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- MemSSA.h -- Memory SSA-------------------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</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="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></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"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * MemorySSAPass.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Jul 14, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></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="preprocessor">#ifndef MEMORYSSAPASS_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define MEMORYSSAPASS_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="MemRegion_8h.html">MSSA/MemRegion.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="MSSAMuChi_8h.html">MSSA/MSSAMuChi.h</a>&quot;</span></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;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></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;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">class </span>PointerAnalysis;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">class </span>MemSSAStat;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> * Memory SSA implementation on top of partial SSA</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html"> 46</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MemSSA.html">MemSSA</a></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</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;<span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0c8f70b6283e26e70dafe02fcb5180a"> 52</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MemRegion.html#a7ed54700c976f9738012bc051b7f41f5">MemRegion::Condition</a> <a class="code" href="classSVF_1_1MemSSA.html#ac0c8f70b6283e26e70dafe02fcb5180a">Condition</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a2b4f3b19b32ac61dd1932faa82b93d8b"> 53</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSAMU.html">MSSAMU&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a2b4f3b19b32ac61dd1932faa82b93d8b">MU</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a"> 54</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1RetMU.html">RetMU&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a">RETMU</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1"> 55</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1LoadMU.html">LoadMU&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1">LOADMU</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25"> 56</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CallMU.html">CallMU&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25">CALLMU</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a503f2fda873c330ef2cc5561f396ea6e"> 57</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSACHI.html">MSSACHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a503f2fda873c330ef2cc5561f396ea6e">CHI</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5"> 58</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1EntryCHI.html">EntryCHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5">ENTRYCHI</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4"> 59</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1StoreCHI.html">StoreCHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4">STORECHI</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9"> 60</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CallCHI.html">CallCHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9">CALLCHI</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1"> 61</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSAPHI.html">MSSAPHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1">PHI</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a57e68097212e88568eea829fb998fe0c"> 62</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSADEF.html">MSSADEF</a> <a class="code" href="classSVF_1_1MemSSA.html#a57e68097212e88568eea829fb998fe0c">MDEF</a>;</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"><a class="line" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112"> 64</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;MU*&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MUSet</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4"> 65</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;CHI*&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">CHISet</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f"> 66</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;PHI*&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">PHISet</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a37b84780f57cbee50cf957cfbab195c1"> 69</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRGenerator::MRSet</a> <a class="code" href="classSVF_1_1MemSSA.html#a37b84780f57cbee50cf957cfbab195c1">MRSet</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e"> 70</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const MemRegion*&gt; <a class="code" href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e">MRVector</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a94164c59384ef04f98a3713b504fca35"> 74</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const LoadStmt*, MUSet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a94164c59384ef04f98a3713b504fca35">LoadToMUSetMap</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#acfee1bb5534026ce991a1ab5e796c6b9"> 75</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const StoreStmt*, CHISet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#acfee1bb5534026ce991a1ab5e796c6b9">StoreToChiSetMap</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a5d4ba728fb55e615cacfc5278e6bc4b7"> 76</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallICFGNode*, MUSet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a5d4ba728fb55e615cacfc5278e6bc4b7">CallSiteToMUSetMap</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a43b118f1b16a032fd1f27f8258c748ab"> 77</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallICFGNode*, CHISet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a43b118f1b16a032fd1f27f8258c748ab">CallSiteToCHISetMap</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a59cca6cbd8f18c9521027d8ddd13ffc5"> 78</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const BasicBlock*, PHISet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a59cca6cbd8f18c9521027d8ddd13ffc5">BBToPhiSetMap</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac34aa1ac96600bfc27b3c2eb0b1510ca"> 82</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, CHISet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#ac34aa1ac96600bfc27b3c2eb0b1510ca">FunToEntryChiSetMap</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3cfc6d7134f98e5876c16c6c043a3d92"> 83</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, MUSet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a3cfc6d7134f98e5876c16c6c043a3d92">FunToReturnMuSetMap</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa"> 87</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const BasicBlock*&gt; <a class="code" href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa">BBList</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14"> 88</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const BasicBlock*, MRSet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14">BBToMRSetMap</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8d0c1a00d7db194da66c685d79e73de5"> 89</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const MemRegion*, BBList&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a8d0c1a00d7db194da66c685d79e73de5">MemRegToBBsMap</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#aa9dbaf51f0498f3bd878827744208899"> 93</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const MemRegion*, std::vector&lt;MRVer*&gt;</a> &gt; <a class="code" href="classSVF_1_1MemSSA.html#aa9dbaf51f0498f3bd878827744208899">MemRegToVerStackMap</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae1aca020147c270deca2a1241e3847d0"> 94</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const MemRegion*, MRVERSION&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#ae1aca020147c270deca2a1241e3847d0">MemRegToCounterMap</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e"> 97</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFIR::SVFStmtList</a> <a class="code" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVFStmtList</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a37dca8a7d155de4870358146d219b5e5"> 101</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a37dca8a7d155de4870358146d219b5e5">timeOfGeneratingMemRegions</a>; </div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4d2418b7df74f23d8fd328f66e29f198"> 102</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a4d2418b7df74f23d8fd328f66e29f198">timeOfCreateMUCHI</a>; </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3c7b5fa73fdc7c805ee3673fbe812b44"> 103</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a3c7b5fa73fdc7c805ee3673fbe812b44">timeOfInsertingPHI</a>; </div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a97ccd5e0b9ab6144415e26bdf95cbabd"> 104</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a97ccd5e0b9ab6144415e26bdf95cbabd">timeOfSSARenaming</a>; </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;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671"> 107</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671">MemPartition</a></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a9da5f4ad2a43befdbc4be319bffc80ea"> 109</a></span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a9da5f4ad2a43befdbc4be319bffc80ea">Distinct</a>,</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671ac9388cc44f91bd9a00666c0d69b32ef1"> 110</a></span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671ac9388cc44f91bd9a00666c0d69b32ef1">IntraDisjoint</a>,</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a549b5589ecfbe073623091605785fc03"> 111</a></span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a549b5589ecfbe073623091605785fc03">InterDisjoint</a></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"> 113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3"> 115</a></span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5"> 116</a></span>&#160; <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a>* <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0aeb79ec4f86f55c97bd397509acd05"> 117</a></span>&#160; <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a>* <a class="code" href="classSVF_1_1MemSSA.html#ac0aeb79ec4f86f55c97bd397509acd05">df</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a52b1598f44fe6a6e30095f596bf85cb0"> 118</a></span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* <a class="code" href="classSVF_1_1MemSSA.html#a52b1598f44fe6a6e30095f596bf85cb0">dt</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4fc930040ec54eb60629da18fb6a4d04"> 119</a></span>&#160; <a class="code" href="classSVF_1_1MemSSAStat.html">MemSSAStat</a>* <a class="code" href="classSVF_1_1MemSSA.html#a4fc930040ec54eb60629da18fb6a4d04">stat</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a695adf83e8c40b9628b1866053f68033">createMUCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp; fun);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#acc6f72d96cf29e36093ba08ea86b8983">insertPHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp; fun);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a16114eb55775f6ee812c1648dcaede0c">SSARename</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp; fun);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a271c20725d49dd65b95c062938ffde4c">SSARenameBB</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>&amp; bb);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6"> 130</a></span>&#160; LoadToMUSetMap <a class="code" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6">load2MuSetMap</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a"> 131</a></span>&#160; StoreToChiSetMap <a class="code" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a">store2ChiSetMap</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a"> 132</a></span>&#160; CallSiteToMUSetMap <a class="code" href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a">callsiteToMuSetMap</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195"> 133</a></span>&#160; CallSiteToCHISetMap <a class="code" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195">callsiteToChiSetMap</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23"> 134</a></span>&#160; BBToPhiSetMap <a class="code" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23">bb2PhiSetMap</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec"> 136</a></span>&#160; FunToEntryChiSetMap <a class="code" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec">funToEntryChiSetMap</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c"> 137</a></span>&#160; FunToReturnMuSetMap <a class="code" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c">funToReturnMuSetMap</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d"> 139</a></span>&#160; MemRegToVerStackMap <a class="code" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d">mr2VerStackMap</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a22e2dd0fc78877bdedd207a40540a634"> 140</a></span>&#160; MemRegToCounterMap <a class="code" href="classSVF_1_1MemSSA.html#a22e2dd0fc78877bdedd207a40540a634">mr2CounterMap</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">// (see algorithm in book Engineering A Compiler section 9.3)</span></div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa"> 146</a></span>&#160;<span class="comment"></span> MRSet <a class="code" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">usedRegs</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#add1d4ff17d0860906d2f5f7172176121"> 148</a></span>&#160; MemRegToBBsMap <a class="code" href="classSVF_1_1MemSSA.html#add1d4ff17d0860906d2f5f7172176121">reg2BBMap</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae64f97a984765a43f05df26b57a43a43"> 150</a></span>&#160; MRSet <a class="code" href="classSVF_1_1MemSSA.html#ae64f97a984765a43f05df26b57a43a43">varKills</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a3d6096aeb4155444b532b02bb8559113">destroy</a>();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* <a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr, <a class="code" href="classSVF_1_1MSSADEF.html">MSSADEF</a>* def);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79"> 160</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* <a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</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; std::vector&lt;MRVer*&gt; &amp;stack = mr2VerStackMap[mr];</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!stack.empty() &amp;&amp; <span class="stringliteral">&quot;stack is empty!!&quot;</span>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">return</span> stack.back();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</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"><a class="line" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390"> 169</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span> (0 == varKills.count(mr))</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; usedRegs.insert(mr);</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"><a class="line" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a"> 174</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; varKills.insert(mr);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; reg2BBMap[mr].push_back(bb);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42"> 183</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load, <span class="keyword">const</span> MRSet&amp; mrSet)</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">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a>(bb,load,*iter);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5"> 188</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store, <span class="keyword">const</span> MRSet&amp; mrSet)</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; <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a>(bb,store,*iter);</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"><a class="line" href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24"> 193</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24">AddCallSiteMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> MRSet&amp; mrSet)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24">AddCallSiteMU</a>(cs,*iter);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d"> 198</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d">AddCallSiteCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> MRSet&amp; mrSet)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d">AddCallSiteCHI</a>(cs,*iter);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e"> 203</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e">AddMSSAPHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> MRSet&amp; mrSet)</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">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e">AddMSSAPHI</a>(bb,*iter);</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"><a class="line" href="classSVF_1_1MemSSA.html#a397c835c15c15e18697beca2ff27a73f"> 208</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a397c835c15c15e18697beca2ff27a73f">AddLoadMU</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; LOADMU* mu = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1">LOADMU</a>(bb,load, mr);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; load2MuSetMap[load].insert(mu);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8d9bfa2ad724a3b286edc56b7c15e9bf"> 214</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a8d9bfa2ad724a3b286edc56b7c15e9bf">AddStoreCHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; STORECHI* chi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4">STORECHI</a>(bb,store, mr);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; store2ChiSetMap[store].insert(chi);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(bb,mr);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#adbaf4715d5d4c9d0be1e934178efe13e"> 221</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#adbaf4715d5d4c9d0be1e934178efe13e">AddCallSiteMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; CALLMU* mu = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25">CALLMU</a>(cs, mr);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; callsiteToMuSetMap[cs].insert(mu);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af7991c1393ef3c8b090833bc27036a49"> 227</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#af7991c1393ef3c8b090833bc27036a49">AddCallSiteCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; CALLCHI* chi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9">CALLCHI</a>(cs, mr);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; callsiteToChiSetMap[cs].insert(chi);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(chi-&gt;<a class="code" href="classSVF_1_1CallCHI.html#a69f83ff81ea017d645aadeb46334880f">getBasicBlock</a>(),mr);</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"><a class="line" href="classSVF_1_1MemSSA.html#a3af850d2fe9b2e75b2705c6d1355eda2"> 234</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a3af850d2fe9b2e75b2705c6d1355eda2">AddMSSAPHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; bb2PhiSetMap[bb].insert(<span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1">PHI</a>(bb, mr));</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</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="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<span class="keyword">const</span> MUSet&amp; muSet)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">for</span> (MUSet::const_iterator mit = muSet.begin(), emit = muSet.end();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; mit != emit; ++mit)</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; MU* mu = (*mit);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; mu-&gt;<a class="code" href="classSVF_1_1MSSAMU.html#a2af1e639aabbc5997aa4e6526f6595fb">setVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(mu-&gt;<a class="code" href="classSVF_1_1MSSAMU.html#a6bd671839ec0376439ccd81d5b2eff30">getMR</a>()));</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8"> 254</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">RenameChiSet</a>(<span class="keyword">const</span> CHISet&amp; chiSet, MRVector&amp; memRegs)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">for</span> (CHISet::const_iterator cit = chiSet.begin(), ecit = chiSet.end();</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; cit != ecit; ++cit)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; CHI* chi = (*cit);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; chi-&gt;<a class="code" href="classSVF_1_1MSSACHI.html#a245d8ee9e81ba4fe6f41533baf471331">setOpVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>()));</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a343eb4c9515dfbbbdadaacf5500e5f05">setResVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>(),chi));</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; memRegs.push_back(chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>());</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</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;</div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3"> 267</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3">RenamePhiRes</a>(<span class="keyword">const</span> PHISet&amp; phiSet, MRVector&amp; memRegs)</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"> 269</span>&#160; <span class="keywordflow">for</span> (PHISet::const_iterator iter = phiSet.begin(), eiter = phiSet.end();</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; iter != eiter; ++iter)</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; PHI* phi = *iter;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a343eb4c9515dfbbbdadaacf5500e5f05">setResVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>(),phi));</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; memRegs.push_back(phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>());</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</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;</div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a0ed34f7a27db045c624c5db61d53132b"> 279</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a0ed34f7a27db045c624c5db61d53132b">RenamePhiOps</a>(<span class="keyword">const</span> PHISet&amp; phiSet, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos, MRVector&amp;)</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; <span class="keywordflow">for</span> (PHISet::const_iterator iter = phiSet.begin(), eiter = phiSet.end();</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; iter != eiter; ++iter)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; PHI* phi = *iter;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; phi-&gt;<a class="code" href="classSVF_1_1MSSAPHI.html#a74f663dc5ecc659e98542a53414b7988">setOpVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>()), pos);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a36e9cf7394c3ece8a5f2f9bfc512956a"> 292</a></span>&#160; <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a>* <a class="code" href="classSVF_1_1MemSSA.html#a36e9cf7394c3ece8a5f2f9bfc512956a">getDF</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp;)</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#ac0aeb79ec4f86f55c97bd397509acd05">df</a>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a9741a8d0540ba4c27cb667590d246197"> 296</a></span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* <a class="code" href="classSVF_1_1MemSSA.html#a9741a8d0540ba4c27cb667590d246197">getDT</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp;)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a52b1598f44fe6a6e30095f596bf85cb0">dt</a>;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a11e1e9a74a6764131fc8aae27d8bde5e">setCurrentDFDT</a>(<a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a>* f, <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* t);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a6bd57451370f5f4c92ce212be4cddd15">MemSSA</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* p, <span class="keywordtype">bool</span> ptrOnlyMSSA);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae09603b40c7359c4cd2f644d3efc40cc"> 308</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MemSSA.html#ae09603b40c7359c4cd2f644d3efc40cc">~MemSSA</a>()</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a3d6096aeb4155444b532b02bb8559113">destroy</a>();</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1MemSSA.html#a41b153f2f8f3a27be63750e73a290569">getPAG</a>();</div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac"> 315</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div><div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09"> 320</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a>* <a class="code" href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09">getMRGenerator</a>()</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#ae56d1878046c119d1857727ca3609d74">buildMemSSA</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp; fun,<a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a>*, <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>*);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a89c40c8fad70f3aead6531261e5a3cc3">performStat</a>();</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc"> 332</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">hasMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load = SVFUtil::dyn_cast&lt;LoadStmt&gt;(inst))</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 != load2MuSetMap.count(load)</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; &amp;&amp; <span class="stringliteral">&quot;not associated with mem region!&quot;</span>);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1"> 343</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">hasCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store = SVFUtil::dyn_cast&lt;StoreStmt&gt;(</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; inst))</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 != store2ChiSetMap.count(store)</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; &amp;&amp; <span class="stringliteral">&quot;not associated with mem region!&quot;</span>);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a6bd9390c6cd2a3d7a3752fba76acfb46"> 355</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a6bd9390c6cd2a3d7a3752fba76acfb46">hasMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">return</span> callsiteToMuSetMap.find(cs)!=callsiteToMuSetMap.end();</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae16120dfc9436861f719e605617f353d"> 359</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#ae16120dfc9436861f719e605617f353d">hasCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">return</span> callsiteToChiSetMap.find(cs)!=callsiteToChiSetMap.end();</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;</div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#aec75259d035e3b5589e6fcbbcdfe4b2c"> 367</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#aec75259d035e3b5589e6fcbbcdfe4b2c">hasFuncEntryChi</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)<span class="keyword"> const</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">return</span> (funToEntryChiSetMap.find(fun) != funToEntryChiSetMap.end());</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f"> 371</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f">hasReturnMu</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)<span class="keyword"> const</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">return</span> (funToReturnMuSetMap.find(fun) != funToReturnMuSetMap.end());</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800"> 376</a></span>&#160; <span class="keyword">inline</span> CHISet&amp; <a class="code" href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800">getFuncEntryChiSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">return</span> funToEntryChiSetMap[fun];</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div><div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93"> 380</a></span>&#160; <span class="keyword">inline</span> MUSet&amp; <a class="code" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93">getReturnMuSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">return</span> funToReturnMuSetMap[fun];</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;</div><div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847"> 388</a></span>&#160; <span class="keyword">inline</span> MUSet&amp; <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* ld)</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">return</span> load2MuSetMap[ld];</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418"> 392</a></span>&#160; <span class="keyword">inline</span> CHISet&amp; <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* st)</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> store2ChiSetMap[st];</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div><div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af1a7b3ca0144ebff3747715e89646fbb"> 396</a></span>&#160; <span class="keyword">inline</span> MUSet&amp; <a class="code" href="classSVF_1_1MemSSA.html#af1a7b3ca0144ebff3747715e89646fbb">getMUSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">return</span> callsiteToMuSetMap[cs];</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a959e932912b924ec91e1526947493204"> 400</a></span>&#160; <span class="keyword">inline</span> CHISet&amp; <a class="code" href="classSVF_1_1MemSSA.html#a959e932912b924ec91e1526947493204">getCHISet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">return</span> callsiteToChiSetMap[cs];</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274"> 404</a></span>&#160; <span class="keyword">inline</span> PHISet&amp; <a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb)</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span> bb2PhiSetMap[bb];</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div><div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298"> 408</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298">hasPHISet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb)<span class="keyword"> const</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> bb2PhiSetMap.find(bb)!=bb2PhiSetMap.end();</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div><div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a70dd35ef458c452330dfebcdde17b84c"> 412</a></span>&#160; <span class="keyword">inline</span> LoadToMUSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a70dd35ef458c452330dfebcdde17b84c">getLoadToMUSetMap</a>()</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6">load2MuSetMap</a>;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a97166aa7102816a16734d7e2f1c130b0"> 416</a></span>&#160; <span class="keyword">inline</span> StoreToChiSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a97166aa7102816a16734d7e2f1c130b0">getStoreToChiSetMap</a>()</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a">store2ChiSetMap</a>;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a"> 420</a></span>&#160; <span class="keyword">inline</span> FunToReturnMuSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a">getFunToRetMuSetMap</a>()</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c">funToReturnMuSetMap</a>;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198"> 424</a></span>&#160; <span class="keyword">inline</span> FunToEntryChiSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198">getFunToEntryChiSetMap</a>()</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec">funToEntryChiSetMap</a>;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div><div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43"> 428</a></span>&#160; <span class="keyword">inline</span> CallSiteToMUSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43">getCallSiteToMuSetMap</a>()</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a">callsiteToMuSetMap</a>;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</div><div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d"> 432</a></span>&#160; <span class="keyword">inline</span> CallSiteToCHISetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d">getCallSiteToChiSetMap</a>()</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195">callsiteToChiSetMap</a>;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div><div class="line"><a name="l00436"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d"> 436</a></span>&#160; <span class="keyword">inline</span> BBToPhiSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">getBBToPhiSetMap</a>()</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23">bb2PhiSetMap</a>;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#aafc83f7f22ebf3b3683607440c488bef">getLoadMuNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#aa8c45b455e6fc60cab955534c3e50bfa">getStoreChiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a15272a4ed019d1c323d1826c1bedb70f">getFunEntryChiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a67175188232e08f5c5374f92ff61810f">getFunRetMuNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a9e8c5b85957485635d0f72c2f48bb8b5">getCallSiteMuNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a2c65795ca63a53c833f5ac17a752b6dc">getCallSiteChiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a9bb6512999cbf9c7c03153be77c8af20">getBBPhiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a9f9ac433d9c9348ceb5be8893d814ebd">dumpMSSA</a>(<a class="code" href="namespaceSVF.html#a424cc053c29ad7303699c529d1a2cc71">raw_ostream</a> &amp; Out = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>());</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;};</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* MEMORYSSAPASS_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1MRVer_html"><div class="ttname"><a href="classSVF_1_1MRVer.html">SVF::MRVer</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00043">MSSAMuChi.h:43</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1MemSSA_html_a2e656a50f8964fc3e99d1d436de64418"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">SVF::MemSSA::getCHISet</a></div><div class="ttdeci">CHISet &amp; getCHISet(const StoreStmt *st)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00392">MemSSA.h:392</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_1MemSSA_html_a57e68097212e88568eea829fb998fe0c"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a57e68097212e88568eea829fb998fe0c">SVF::MemSSA::MDEF</a></div><div class="ttdeci">MSSADEF MDEF</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00062">MemSSA.h:62</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1MemSSA_html_a1be5a6776c8785f26573b597881c8195"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195">SVF::MemSSA::callsiteToChiSetMap</a></div><div class="ttdeci">CallSiteToCHISetMap callsiteToChiSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00133">MemSSA.h:133</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1MSSACHI_html_a245d8ee9e81ba4fe6f41533baf471331"><div class="ttname"><a href="classSVF_1_1MSSACHI.html#a245d8ee9e81ba4fe6f41533baf471331">SVF::MSSACHI::setOpVer</a></div><div class="ttdeci">void setOpVer(MRVer *v)</div><div class="ttdoc">Set operand ver. </div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00414">MSSAMuChi.h:414</a></div></div>
75
+ <div class="ttc" id="classSVF_1_1MemSSA_html_a5d4ba728fb55e615cacfc5278e6bc4b7"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a5d4ba728fb55e615cacfc5278e6bc4b7">SVF::MemSSA::CallSiteToMUSetMap</a></div><div class="ttdeci">Map&lt; const CallICFGNode *, MUSet &gt; CallSiteToMUSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00076">MemSSA.h:76</a></div></div>
75
76
  <div class="ttc" id="classSVF_1_1MemSSA_html_ac0aeb79ec4f86f55c97bd397509acd05"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ac0aeb79ec4f86f55c97bd397509acd05">SVF::MemSSA::df</a></div><div class="ttdeci">DominanceFrontier * df</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00117">MemSSA.h:117</a></div></div>
76
- <div class="ttc" id="classSVF_1_1MemSSA_html_ab985012d7730beed71a5e77595d29548"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ab985012d7730beed71a5e77595d29548">SVF::MemSSA::CallSiteToCHISetMap</a></div><div class="ttdeci">Map&lt; const CallBlockNode *, CHISet &gt; CallSiteToCHISetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00077">MemSSA.h:77</a></div></div>
77
77
  <div class="ttc" id="classSVF_1_1MemSSA_html_a8d9bfa2ad724a3b286edc56b7c15e9bf"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a8d9bfa2ad724a3b286edc56b7c15e9bf">SVF::MemSSA::AddStoreCHI</a></div><div class="ttdeci">void AddStoreCHI(const BasicBlock *bb, const StoreStmt *store, const MemRegion *mr)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00214">MemSSA.h:214</a></div></div>
78
78
  <div class="ttc" id="classSVF_1_1MemSSA_html_a37dca8a7d155de4870358146d219b5e5"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a37dca8a7d155de4870358146d219b5e5">SVF::MemSSA::timeOfGeneratingMemRegions</a></div><div class="ttdeci">static double timeOfGeneratingMemRegions</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00101">MemSSA.h:101</a></div></div>
79
79
  <div class="ttc" id="classSVF_1_1MemSSA_html_a36e9cf7394c3ece8a5f2f9bfc512956a"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a36e9cf7394c3ece8a5f2f9bfc512956a">SVF::MemSSA::getDF</a></div><div class="ttdeci">DominanceFrontier * getDF(const SVFFunction &amp;)</div><div class="ttdoc">Get/set methods for dominace frontier/tree. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00292">MemSSA.h:292</a></div></div>
@@ -89,13 +89,10 @@ $(function() {
89
89
  <div class="ttc" id="classSVF_1_1MemSSA_html_a16114eb55775f6ee812c1648dcaede0c"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a16114eb55775f6ee812c1648dcaede0c">SVF::MemSSA::SSARename</a></div><div class="ttdeci">virtual void SSARename(const SVFFunction &amp;fun)</div><div class="ttdoc">SSA rename for a function. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00266">MemSSA.cpp:266</a></div></div>
90
90
  <div class="ttc" id="MemRegion_8h_html"><div class="ttname"><a href="MemRegion_8h.html">MemRegion.h</a></div></div>
91
91
  <div class="ttc" id="classSVF_1_1MemSSA_html_a9741a8d0540ba4c27cb667590d246197"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a9741a8d0540ba4c27cb667590d246197">SVF::MemSSA::getDT</a></div><div class="ttdeci">DominatorTree * getDT(const SVFFunction &amp;)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00296">MemSSA.h:296</a></div></div>
92
- <div class="ttc" id="classSVF_1_1MemSSA_html_a51b8381b80b23590e638489c2a6760a4"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a51b8381b80b23590e638489c2a6760a4">SVF::MemSSA::hasCHI</a></div><div class="ttdeci">bool hasCHI(const CallBlockNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00359">MemSSA.h:359</a></div></div>
93
92
  <div class="ttc" id="classSVF_1_1MemSSA_html_a3d6096aeb4155444b532b02bb8559113"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a3d6096aeb4155444b532b02bb8559113">SVF::MemSSA::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Release the memory. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00385">MemSSA.cpp:385</a></div></div>
94
93
  <div class="ttc" id="classSVF_1_1StoreCHI_html"><div class="ttname"><a href="classSVF_1_1StoreCHI.html">SVF::StoreCHI</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00461">MSSAMuChi.h:461</a></div></div>
95
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>
96
- <div class="ttc" id="classSVF_1_1MemSSA_html_a59392ba4cc987f5fefa4eca0ebe411fe"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a59392ba4cc987f5fefa4eca0ebe411fe">SVF::MemSSA::getMUSet</a></div><div class="ttdeci">MUSet &amp; getMUSet(const CallBlockNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00396">MemSSA.h:396</a></div></div>
97
95
  <div class="ttc" id="classSVF_1_1MemSSA_html_a7be50dd82679b45a8c400f5a12056a25"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25">SVF::MemSSA::CALLMU</a></div><div class="ttdeci">CallMU&lt; Condition &gt; CALLMU</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00056">MemSSA.h:56</a></div></div>
98
- <div class="ttc" id="classSVF_1_1MemSSA_html_af7d3abb0b38f83c6f0a3c6a9e1ebff97"><div class="ttname"><a href="classSVF_1_1MemSSA.html#af7d3abb0b38f83c6f0a3c6a9e1ebff97">SVF::MemSSA::CallSiteToMUSetMap</a></div><div class="ttdeci">Map&lt; const CallBlockNode *, MUSet &gt; CallSiteToMUSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00076">MemSSA.h:76</a></div></div>
99
96
  <div class="ttc" id="classSVF_1_1MemSSA_html_a9f9ac433d9c9348ceb5be8893d814ebd"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a9f9ac433d9c9348ceb5be8893d814ebd">SVF::MemSSA::dumpMSSA</a></div><div class="ttdeci">void dumpMSSA(raw_ostream &amp;Out=SVFUtil::outs())</div><div class="ttdoc">Print Memory SSA. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00595">MemSSA.cpp:595</a></div></div>
100
97
  <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
101
98
  <div class="ttc" id="classSVF_1_1MemSSA_html_a4fc930040ec54eb60629da18fb6a4d04"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a4fc930040ec54eb60629da18fb6a4d04">SVF::MemSSA::stat</a></div><div class="ttdeci">MemSSAStat * stat</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00119">MemSSA.h:119</a></div></div>
@@ -108,12 +105,12 @@ $(function() {
108
105
  <div class="ttc" id="classSVF_1_1MemSSA_html_a8f88acad31782bfa962e4349d8f4185d"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d">SVF::MemSSA::getCallSiteToChiSetMap</a></div><div class="ttdeci">CallSiteToCHISetMap &amp; getCallSiteToChiSetMap()</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00432">MemSSA.h:432</a></div></div>
109
106
  <div class="ttc" id="classSVF_1_1MSSAPHI_html_a74f663dc5ecc659e98542a53414b7988"><div class="ttname"><a href="classSVF_1_1MSSAPHI.html#a74f663dc5ecc659e98542a53414b7988">SVF::MSSAPHI::setOpVer</a></div><div class="ttdeci">void setOpVer(const MRVer *v, u32_t pos)</div><div class="ttdoc">Set operand ver. </div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00651">MSSAMuChi.h:651</a></div></div>
110
107
  <div class="ttc" id="classSVF_1_1MemSSA_html_ac0797f2ee7b59ae720095a4836533671a549b5589ecfbe073623091605785fc03"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a549b5589ecfbe073623091605785fc03">SVF::MemSSA::InterDisjoint</a></div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00111">MemSSA.h:111</a></div></div>
111
- <div class="ttc" id="classSVF_1_1MemSSA_html_a1aa05f81640286a796db0ded4e10c7ac"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a1aa05f81640286a796db0ded4e10c7ac">SVF::MemSSA::AddCallSiteMU</a></div><div class="ttdeci">void AddCallSiteMU(const CallBlockNode *cs, const MRSet &amp;mrSet)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00193">MemSSA.h:193</a></div></div>
112
108
  <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00100">SVFBasicTypes.h:100</a></div></div>
113
109
  <div class="ttc" id="classSVF_1_1MemSSA_html_a2b4f3b19b32ac61dd1932faa82b93d8b"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2b4f3b19b32ac61dd1932faa82b93d8b">SVF::MemSSA::MU</a></div><div class="ttdeci">MSSAMU&lt; Condition &gt; MU</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00053">MemSSA.h:53</a></div></div>
114
110
  <div class="ttc" id="classSVF_1_1MemSSA_html_a630be375832b1477989af85dce6760f3"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3">SVF::MemSSA::RenamePhiRes</a></div><div class="ttdeci">void RenamePhiRes(const PHISet &amp;phiSet, MRVector &amp;memRegs)</div><div class="ttdoc">Rename result (LHS) of phis. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00267">MemSSA.h:267</a></div></div>
115
111
  <div class="ttc" id="classSVF_1_1MemSSA_html_a3af850d2fe9b2e75b2705c6d1355eda2"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a3af850d2fe9b2e75b2705c6d1355eda2">SVF::MemSSA::AddMSSAPHI</a></div><div class="ttdeci">void AddMSSAPHI(const BasicBlock *bb, const MemRegion *mr)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00234">MemSSA.h:234</a></div></div>
116
112
  <div class="ttc" id="classSVF_1_1MemSSA_html_a4d4f7039c2972e671dc15b8c75abad14"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14">SVF::MemSSA::BBToMRSetMap</a></div><div class="ttdeci">Map&lt; const BasicBlock *, MRSet &gt; BBToMRSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00088">MemSSA.h:88</a></div></div>
113
+ <div class="ttc" id="classSVF_1_1MemSSA_html_a6bd9390c6cd2a3d7a3752fba76acfb46"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a6bd9390c6cd2a3d7a3752fba76acfb46">SVF::MemSSA::hasMU</a></div><div class="ttdeci">bool hasMU(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00355">MemSSA.h:355</a></div></div>
117
114
  <div class="ttc" id="namespaceSVF_html_ab44d20f806be99699895260b14a942d7"><div class="ttname"><a href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">SVF::DominanceFrontier</a></div><div class="ttdeci">llvm::DominanceFrontier DominanceFrontier</div><div class="ttdoc">LLVM Dominators. </div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00196">BasicTypes.h:196</a></div></div>
118
115
  <div class="ttc" id="classSVF_1_1MemSSA_html_ac34aa1ac96600bfc27b3c2eb0b1510ca"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ac34aa1ac96600bfc27b3c2eb0b1510ca">SVF::MemSSA::FunToEntryChiSetMap</a></div><div class="ttdeci">Map&lt; const SVFFunction *, CHISet &gt; FunToEntryChiSetMap</div><div class="ttdoc">Map from fun to its entry chi set and return mu set. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00082">MemSSA.h:82</a></div></div>
119
116
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
@@ -129,7 +126,6 @@ $(function() {
129
126
  <div class="ttc" id="classSVF_1_1MemSSA_html_ab2dfdcf6fb50ba6cacad1254350a5b09"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09">SVF::MemSSA::getMRGenerator</a></div><div class="ttdeci">MRGenerator * getMRGenerator()</div><div class="ttdoc">Return MRGenerator. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00320">MemSSA.h:320</a></div></div>
130
127
  <div class="ttc" id="classSVF_1_1MemSSA_html_a41b153f2f8f3a27be63750e73a290569"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a41b153f2f8f3a27be63750e73a290569">SVF::MemSSA::getPAG</a></div><div class="ttdeci">SVFIR * getPAG()</div><div class="ttdoc">Return SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00073">MemSSA.cpp:73</a></div></div>
131
128
  <div class="ttc" id="classSVF_1_1MemSSA_html_af4d11a0c7da0ddd7dff8d75a00279847"><div class="ttname"><a href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">SVF::MemSSA::getMUSet</a></div><div class="ttdeci">MUSet &amp; getMUSet(const LoadStmt *ld)</div><div class="ttdoc">Get methods of mu/chi/phi. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00388">MemSSA.h:388</a></div></div>
132
- <div class="ttc" id="classSVF_1_1MemSSA_html_ae7b0f618fb36bbc8e9439d70b377cf6b"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ae7b0f618fb36bbc8e9439d70b377cf6b">SVF::MemSSA::getCHISet</a></div><div class="ttdeci">CHISet &amp; getCHISet(const CallBlockNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00400">MemSSA.h:400</a></div></div>
133
129
  <div class="ttc" id="classSVF_1_1MemSSA_html_a381a35d48ce2f8e348ddbbb9ce526ca8"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">SVF::MemSSA::newSSAName</a></div><div class="ttdeci">MRVer * newSSAName(const MemRegion *mr, MSSADEF *def)</div><div class="ttdoc">Get a new SSA name of a memory region. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00368">MemSSA.cpp:368</a></div></div>
134
130
  <div class="ttc" id="classSVF_1_1MemSSA_html_ae56d1878046c119d1857727ca3609d74"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ae56d1878046c119d1857727ca3609d74">SVF::MemSSA::buildMemSSA</a></div><div class="ttdeci">virtual void buildMemSSA(const SVFFunction &amp;fun, DominanceFrontier *, DominatorTree *)</div><div class="ttdoc">We start from here. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00092">MemSSA.cpp:92</a></div></div>
135
131
  <div class="ttc" id="classSVF_1_1MSSADEF_html_ab3070e4293ceb5ca9c25702f76ac427c"><div class="ttname"><a href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">SVF::MSSADEF::getMR</a></div><div class="ttdeci">const MemRegion * getMR() const</div><div class="ttdoc">Return memory region. </div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00354">MSSAMuChi.h:354</a></div></div>
@@ -156,6 +152,7 @@ $(function() {
156
152
  <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>
157
153
  <div class="ttc" id="classSVF_1_1MSSAMU_html_a6bd671839ec0376439ccd81d5b2eff30"><div class="ttname"><a href="classSVF_1_1MSSAMU.html#a6bd671839ec0376439ccd81d5b2eff30">SVF::MSSAMU::getMR</a></div><div class="ttdeci">const MemRegion * getMR() const</div><div class="ttdoc">Return MR. </div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00121">MSSAMuChi.h:121</a></div></div>
158
154
  <div class="ttc" id="classSVF_1_1MemSSA_html_af5e356e82c3f93b65bd89908e0f465dc"><div class="ttname"><a href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">SVF::MemSSA::hasMU</a></div><div class="ttdeci">bool hasMU(const PAGEdge *inst) const</div><div class="ttdoc">Has mu/chi methods. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00332">MemSSA.h:332</a></div></div>
155
+ <div class="ttc" id="classSVF_1_1MemSSA_html_ae16120dfc9436861f719e605617f353d"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ae16120dfc9436861f719e605617f353d">SVF::MemSSA::hasCHI</a></div><div class="ttdeci">bool hasCHI(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00359">MemSSA.h:359</a></div></div>
159
156
  <div class="ttc" id="classSVF_1_1MemSSA_html_a4d2418b7df74f23d8fd328f66e29f198"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a4d2418b7df74f23d8fd328f66e29f198">SVF::MemSSA::timeOfCreateMUCHI</a></div><div class="ttdeci">static double timeOfCreateMUCHI</div><div class="ttdoc">Time for generating mu/chi for load/store/calls. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00102">MemSSA.h:102</a></div></div>
160
157
  <div class="ttc" id="classSVF_1_1MemSSA_html_a15272a4ed019d1c323d1826c1bedb70f"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a15272a4ed019d1c323d1826c1bedb70f">SVF::MemSSA::getFunEntryChiNum</a></div><div class="ttdeci">u32_t getFunEntryChiNum() const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00511">MemSSA.cpp:511</a></div></div>
161
158
  <div class="ttc" id="classSVF_1_1MemSSA_html_a7c3fda6f082231350524c2d7c16f067e"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e">SVF::MemSSA::MRVector</a></div><div class="ttdeci">std::vector&lt; const MemRegion * &gt; MRVector</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00070">MemSSA.h:70</a></div></div>
@@ -163,7 +160,6 @@ $(function() {
163
160
  <div class="ttc" id="classSVF_1_1MemSSA_html_aba54e534d18f68fbb97b26befd06ba1a"><div class="ttname"><a href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a">SVF::MemSSA::callsiteToMuSetMap</a></div><div class="ttdeci">CallSiteToMUSetMap callsiteToMuSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00132">MemSSA.h:132</a></div></div>
164
161
  <div class="ttc" id="namespaceSVF_html_aecbb42b8e9d17fa0189c50dda9fd5fdd"><div class="ttname"><a href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">SVF::DominatorTree</a></div><div class="ttdeci">llvm::DominatorTree DominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00197">BasicTypes.h:197</a></div></div>
165
162
  <div class="ttc" id="classSVF_1_1MemSSA_html_a9bb6512999cbf9c7c03153be77c8af20"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a9bb6512999cbf9c7c03153be77c8af20">SVF::MemSSA::getBBPhiNum</a></div><div class="ttdeci">u32_t getBBPhiNum() const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00579">MemSSA.cpp:579</a></div></div>
166
- <div class="ttc" id="classSVF_1_1MemSSA_html_ab393093a1499564cfd62ff8587a3ade1"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ab393093a1499564cfd62ff8587a3ade1">SVF::MemSSA::AddCallSiteMU</a></div><div class="ttdeci">void AddCallSiteMU(const CallBlockNode *cs, const MemRegion *mr)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00221">MemSSA.h:221</a></div></div>
167
163
  <div class="ttc" id="classSVF_1_1MRGenerator_html"><div class="ttname"><a href="classSVF_1_1MRGenerator.html">SVF::MRGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00127">MemRegion.h:127</a></div></div>
168
164
  <div class="ttc" id="classSVF_1_1MemSSA_html_a8e948ea7778158107657fdd8195530e1"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1">SVF::MemSSA::PHI</a></div><div class="ttdeci">MSSAPHI&lt; Condition &gt; PHI</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00061">MemSSA.h:61</a></div></div>
169
165
  <div class="ttc" id="classSVF_1_1MemSSA_html_a2c65795ca63a53c833f5ac17a752b6dc"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2c65795ca63a53c833f5ac17a752b6dc">SVF::MemSSA::getCallSiteChiNum</a></div><div class="ttdeci">u32_t getCallSiteChiNum() const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00562">MemSSA.cpp:562</a></div></div>
@@ -173,15 +169,18 @@ $(function() {
173
169
  <div class="ttc" id="classSVF_1_1EntryCHI_html"><div class="ttname"><a href="classSVF_1_1EntryCHI.html">SVF::EntryCHI</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00578">MSSAMuChi.h:578</a></div></div>
174
170
  <div class="ttc" id="classSVF_1_1MemSSA_html_a9e8c5b85957485635d0f72c2f48bb8b5"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a9e8c5b85957485635d0f72c2f48bb8b5">SVF::MemSSA::getCallSiteMuNum</a></div><div class="ttdeci">u32_t getCallSiteMuNum() const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00545">MemSSA.cpp:545</a></div></div>
175
171
  <div class="ttc" id="classSVF_1_1MemSSA_html_a70dd35ef458c452330dfebcdde17b84c"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a70dd35ef458c452330dfebcdde17b84c">SVF::MemSSA::getLoadToMUSetMap</a></div><div class="ttdeci">LoadToMUSetMap &amp; getLoadToMUSetMap()</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00412">MemSSA.h:412</a></div></div>
172
+ <div class="ttc" id="classSVF_1_1MemSSA_html_a43b118f1b16a032fd1f27f8258c748ab"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a43b118f1b16a032fd1f27f8258c748ab">SVF::MemSSA::CallSiteToCHISetMap</a></div><div class="ttdeci">Map&lt; const CallICFGNode *, CHISet &gt; CallSiteToCHISetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00077">MemSSA.h:77</a></div></div>
176
173
  <div class="ttc" id="classSVF_1_1MemSSA_html_a966477062a453901da3631015fcf737d"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">SVF::MemSSA::getBBToPhiSetMap</a></div><div class="ttdeci">BBToPhiSetMap &amp; getBBToPhiSetMap()</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00436">MemSSA.h:436</a></div></div>
177
174
  <div class="ttc" id="classSVF_1_1MemSSA_html_aa8c45b455e6fc60cab955534c3e50bfa"><div class="ttname"><a href="classSVF_1_1MemSSA.html#aa8c45b455e6fc60cab955534c3e50bfa">SVF::MemSSA::getStoreChiNum</a></div><div class="ttdeci">u32_t getStoreChiNum() const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00494">MemSSA.cpp:494</a></div></div>
178
175
  <div class="ttc" id="classSVF_1_1MemSSA_html_a97ccd5e0b9ab6144415e26bdf95cbabd"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a97ccd5e0b9ab6144415e26bdf95cbabd">SVF::MemSSA::timeOfSSARenaming</a></div><div class="ttdeci">static double timeOfSSARenaming</div><div class="ttdoc">Time for SSA rename. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00104">MemSSA.h:104</a></div></div>
179
176
  <div class="ttc" id="classSVF_1_1MemSSA_html_a2527b76b92dffa8f8513ebfdcc8d8133"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">SVF::MemSSA::RenameMuSet</a></div><div class="ttdeci">void RenameMuSet(const MUSet &amp;muSet)</div><div class="ttdoc">Rename mus, chis and phis. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00243">MemSSA.h:243</a></div></div>
177
+ <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00364">ICFGNode.h:364</a></div></div>
180
178
  <div class="ttc" id="classSVF_1_1MemSSA_html_a213ebe634bbdbe33460ccd941c1dc6a5"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">SVF::MemSSA::mrGen</a></div><div class="ttdeci">MRGenerator * mrGen</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00116">MemSSA.h:116</a></div></div>
181
179
  <div class="ttc" id="classSVF_1_1MemSSA_html_a695adf83e8c40b9628b1866053f68033"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a695adf83e8c40b9628b1866053f68033">SVF::MemSSA::createMUCHI</a></div><div class="ttdeci">virtual void createMUCHI(const SVFFunction &amp;fun)</div><div class="ttdoc">Create mu chi for candidate regions in a function. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00126">MemSSA.cpp:126</a></div></div>
180
+ <div class="ttc" id="classSVF_1_1MemSSA_html_af1a7b3ca0144ebff3747715e89646fbb"><div class="ttname"><a href="classSVF_1_1MemSSA.html#af1a7b3ca0144ebff3747715e89646fbb">SVF::MemSSA::getMUSet</a></div><div class="ttdeci">MUSet &amp; getMUSet(const CallICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00396">MemSSA.h:396</a></div></div>
182
181
  <div class="ttc" id="classSVF_1_1MemSSAStat_html"><div class="ttname"><a href="classSVF_1_1MemSSAStat.html">SVF::MemSSAStat</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGStat_8h_source.html#l00048">SVFGStat.h:48</a></div></div>
182
+ <div class="ttc" id="classSVF_1_1MemSSA_html_ad8011273feaf046bf7f3a3f3b904a91d"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d">SVF::MemSSA::AddCallSiteCHI</a></div><div class="ttdeci">void AddCallSiteCHI(const CallICFGNode *cs, const MRSet &amp;mrSet)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00198">MemSSA.h:198</a></div></div>
183
183
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
184
- <div class="ttc" id="classSVF_1_1MemSSA_html_a96556440a0e65e8aa073f944e059cc9c"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a96556440a0e65e8aa073f944e059cc9c">SVF::MemSSA::AddCallSiteCHI</a></div><div class="ttdeci">void AddCallSiteCHI(const CallBlockNode *cs, const MemRegion *mr)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00227">MemSSA.h:227</a></div></div>
185
184
  <div class="ttc" id="classSVF_1_1MemSSA_html_a552bb17f0435e012b7393fb641c19298"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298">SVF::MemSSA::hasPHISet</a></div><div class="ttdeci">bool hasPHISet(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00408">MemSSA.h:408</a></div></div>
186
185
  <div class="ttc" id="classSVF_1_1MemSSA_html_a10743fe9c116ee624387c0473815b800"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800">SVF::MemSSA::getFuncEntryChiSet</a></div><div class="ttdeci">CHISet &amp; getFuncEntryChiSet(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00376">MemSSA.h:376</a></div></div>
187
186
  <div class="ttc" id="classSVF_1_1MemSSA_html_af8c38a7ff8da4206f19c038024606d93"><div class="ttname"><a href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93">SVF::MemSSA::getReturnMuSet</a></div><div class="ttdeci">MUSet &amp; getReturnMuSet(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00380">MemSSA.h:380</a></div></div>
@@ -191,7 +190,7 @@ $(function() {
191
190
  <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>
192
191
  <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>
193
192
  <div class="ttc" id="classSVF_1_1MemSSA_html_a06081aa029b1fe3f9427f85a0261fd43"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43">SVF::MemSSA::getCallSiteToMuSetMap</a></div><div class="ttdeci">CallSiteToMUSetMap &amp; getCallSiteToMuSetMap()</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00428">MemSSA.h:428</a></div></div>
194
- <div class="ttc" id="classSVF_1_1MemSSA_html_a480f37f70e9c3ff8ce7750a4d5f6f05b"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a480f37f70e9c3ff8ce7750a4d5f6f05b">SVF::MemSSA::hasMU</a></div><div class="ttdeci">bool hasMU(const CallBlockNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00355">MemSSA.h:355</a></div></div>
193
+ <div class="ttc" id="classSVF_1_1MemSSA_html_a959e932912b924ec91e1526947493204"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a959e932912b924ec91e1526947493204">SVF::MemSSA::getCHISet</a></div><div class="ttdeci">CHISet &amp; getCHISet(const CallICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00400">MemSSA.h:400</a></div></div>
195
194
  <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>
196
195
  <div class="ttc" id="classSVF_1_1MemSSA_html_a397c835c15c15e18697beca2ff27a73f"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a397c835c15c15e18697beca2ff27a73f">SVF::MemSSA::AddLoadMU</a></div><div class="ttdeci">void AddLoadMU(const BasicBlock *bb, const LoadStmt *load, const MemRegion *mr)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00208">MemSSA.h:208</a></div></div>
197
196
  <div class="ttc" id="classSVF_1_1MemSSA_html_afd4787df4466c24948d8384e3a756198"><div class="ttname"><a href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198">SVF::MemSSA::getFunToEntryChiSetMap</a></div><div class="ttdeci">FunToEntryChiSetMap &amp; getFunToEntryChiSetMap()</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00424">MemSSA.h:424</a></div></div>
@@ -207,23 +206,24 @@ $(function() {
207
206
  <div class="ttc" id="classSVF_1_1MemSSA_html_a3cfc6d7134f98e5876c16c6c043a3d92"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a3cfc6d7134f98e5876c16c6c043a3d92">SVF::MemSSA::FunToReturnMuSetMap</a></div><div class="ttdeci">Map&lt; const SVFFunction *, MUSet &gt; FunToReturnMuSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00083">MemSSA.h:83</a></div></div>
208
207
  <div class="ttc" id="classSVF_1_1MemSSA_html_a56ffeb1f76c73766d06aedd60235c8d9"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9">SVF::MemSSA::CALLCHI</a></div><div class="ttdeci">CallCHI&lt; Condition &gt; CALLCHI</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00060">MemSSA.h:60</a></div></div>
209
208
  <div class="ttc" id="classSVF_1_1MemSSA_html_a4e11797df16b0b612191607180acc0c5"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">SVF::MemSSA::AddStoreCHI</a></div><div class="ttdeci">void AddStoreCHI(const BasicBlock *bb, const StoreStmt *store, const MRSet &amp;mrSet)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00188">MemSSA.h:188</a></div></div>
210
- <div class="ttc" id="classSVF_1_1CallBlockNode_html"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html">SVF::CallBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00364">ICFGNode.h:364</a></div></div>
211
- <div class="ttc" id="classSVF_1_1MemSSA_html_ac6f2171f92e0bdd5dbdb58efed144c18"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ac6f2171f92e0bdd5dbdb58efed144c18">SVF::MemSSA::AddCallSiteCHI</a></div><div class="ttdeci">void AddCallSiteCHI(const CallBlockNode *cs, const MRSet &amp;mrSet)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00198">MemSSA.h:198</a></div></div>
212
209
  <div class="ttc" id="classSVF_1_1MemSSA_html_acfee1bb5534026ce991a1ab5e796c6b9"><div class="ttname"><a href="classSVF_1_1MemSSA.html#acfee1bb5534026ce991a1ab5e796c6b9">SVF::MemSSA::StoreToChiSetMap</a></div><div class="ttdeci">Map&lt; const StoreStmt *, CHISet &gt; StoreToChiSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00075">MemSSA.h:75</a></div></div>
213
210
  <div class="ttc" id="classSVF_1_1MemSSA_html_a8a5d3597f3dba9744e170cc8c32bf25f"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">SVF::MemSSA::PHISet</a></div><div class="ttdeci">Set&lt; PHI * &gt; PHISet</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00066">MemSSA.h:66</a></div></div>
214
211
  <div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
215
212
  <div class="ttc" id="classSVF_1_1MemSSA_html_ae4c7b17d8da8278dca362af79f9f268d"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d">SVF::MemSSA::mr2VerStackMap</a></div><div class="ttdeci">MemRegToVerStackMap mr2VerStackMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00139">MemSSA.h:139</a></div></div>
213
+ <div class="ttc" id="classSVF_1_1MemSSA_html_a8f121e686d36748e4528d0ea66dcaa24"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24">SVF::MemSSA::AddCallSiteMU</a></div><div class="ttdeci">void AddCallSiteMU(const CallICFGNode *cs, const MRSet &amp;mrSet)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00193">MemSSA.h:193</a></div></div>
216
214
  <div class="ttc" id="classSVF_1_1MemSSA_html_a445d282890dbd2fb51e903255af1cc3e"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVF::MemSSA::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="MemSSA_8h_source.html#l00097">MemSSA.h:97</a></div></div>
217
215
  <div class="ttc" id="classSVF_1_1MSSAPHI_html"><div class="ttname"><a href="classSVF_1_1MSSAPHI.html">SVF::MSSAPHI</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00629">MSSAMuChi.h:629</a></div></div>
218
216
  <div class="ttc" id="classSVF_1_1MSSAMU_html_a2af1e639aabbc5997aa4e6526f6595fb"><div class="ttname"><a href="classSVF_1_1MSSAMU.html#a2af1e639aabbc5997aa4e6526f6595fb">SVF::MSSAMU::setVer</a></div><div class="ttdeci">void setVer(MRVer *v)</div><div class="ttdoc">Set Ver. </div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00131">MSSAMuChi.h:131</a></div></div>
219
217
  <div class="ttc" id="classSVF_1_1MemSSA_html_a3c7b5fa73fdc7c805ee3673fbe812b44"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a3c7b5fa73fdc7c805ee3673fbe812b44">SVF::MemSSA::timeOfInsertingPHI</a></div><div class="ttdeci">static double timeOfInsertingPHI</div><div class="ttdoc">Time for inserting phis. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00103">MemSSA.h:103</a></div></div>
220
218
  <div class="ttc" id="classSVF_1_1MemSSA_html_acc6f72d96cf29e36093ba08ea86b8983"><div class="ttname"><a href="classSVF_1_1MemSSA.html#acc6f72d96cf29e36093ba08ea86b8983">SVF::MemSSA::insertPHI</a></div><div class="ttdeci">virtual void insertPHI(const SVFFunction &amp;fun)</div><div class="ttdoc">Insert phi for candidate regions in a fucntion. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00216">MemSSA.cpp:216</a></div></div>
219
+ <div class="ttc" id="classSVF_1_1MemSSA_html_af7991c1393ef3c8b090833bc27036a49"><div class="ttname"><a href="classSVF_1_1MemSSA.html#af7991c1393ef3c8b090833bc27036a49">SVF::MemSSA::AddCallSiteCHI</a></div><div class="ttdeci">void AddCallSiteCHI(const CallICFGNode *cs, const MemRegion *mr)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00227">MemSSA.h:227</a></div></div>
221
220
  <div class="ttc" id="classSVF_1_1MemSSA_html_ac0797f2ee7b59ae720095a4836533671"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671">SVF::MemSSA::MemPartition</a></div><div class="ttdeci">MemPartition</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00107">MemSSA.h:107</a></div></div>
222
221
  <div class="ttc" id="classSVF_1_1MemSSA_html_a94164c59384ef04f98a3713b504fca35"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a94164c59384ef04f98a3713b504fca35">SVF::MemSSA::LoadToMUSetMap</a></div><div class="ttdeci">Map&lt; const LoadStmt *, MUSet &gt; LoadToMUSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00074">MemSSA.h:74</a></div></div>
223
222
  <div class="ttc" id="classSVF_1_1MSSACHI_html"><div class="ttname"><a href="classSVF_1_1MSSACHI.html">SVF::MSSACHI</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00396">MSSAMuChi.h:396</a></div></div>
224
223
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a98ac3bf264e6a85d172c2c4264ea908f"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">SVF::MRGenerator::MRSet</a></div><div class="ttdeci">OrderedSet&lt; const MemRegion *, MemRegion::equalMemRegion &gt; MRSet</div><div class="ttdoc">Get typedef from Pointer Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00137">MemRegion.h:137</a></div></div>
225
224
  <div class="ttc" id="classSVF_1_1SVFStmt_html"><div class="ttname"><a href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00047">SVFStatements.h:47</a></div></div>
226
225
  <div class="ttc" id="classSVF_1_1MemSSA_html_a59314f6ce17919574d687a08a38b55ec"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec">SVF::MemSSA::funToEntryChiSetMap</a></div><div class="ttdeci">FunToEntryChiSetMap funToEntryChiSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00136">MemSSA.h:136</a></div></div>
226
+ <div class="ttc" id="classSVF_1_1MemSSA_html_adbaf4715d5d4c9d0be1e934178efe13e"><div class="ttname"><a href="classSVF_1_1MemSSA.html#adbaf4715d5d4c9d0be1e934178efe13e">SVF::MemSSA::AddCallSiteMU</a></div><div class="ttdeci">void AddCallSiteMU(const CallICFGNode *cs, const MemRegion *mr)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00221">MemSSA.h:221</a></div></div>
227
227
  <div class="ttc" id="classSVF_1_1MemSSA_html_abfb338ce36ad46a9654d50dd6e2b07f1"><div class="ttname"><a href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">SVF::MemSSA::hasCHI</a></div><div class="ttdeci">bool hasCHI(const PAGEdge *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00343">MemSSA.h:343</a></div></div>
228
228
  <div class="ttc" id="classSVF_1_1MemSSA_html_a44cbdb1231c2709c24d19ad2bae2475a"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a">SVF::MemSSA::getFunToRetMuSetMap</a></div><div class="ttdeci">FunToReturnMuSetMap &amp; getFunToRetMuSetMap()</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00420">MemSSA.h:420</a></div></div>
229
229
  </div><!-- fragment --></div><!-- contents -->