svf-tools 1.0.322 → 1.0.326

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 (399) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +7 -7
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +3 -3
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
  5. package/SVF-doxygen/html/html/Conditions_8cpp_source.html +22 -20
  6. package/SVF-doxygen/html/html/Conditions_8h_source.html +12 -9
  7. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +13 -12
  8. package/SVF-doxygen/html/html/ConsG_8h_source.html +15 -15
  9. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
  10. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
  11. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  12. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  13. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +3 -3
  15. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +8 -8
  16. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
  20. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +3 -3
  21. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +8 -8
  22. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +5 -5
  23. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +2 -2
  24. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +4 -4
  26. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +4 -4
  27. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
  28. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
  29. package/SVF-doxygen/html/html/IRGraph_8cpp.html +1 -0
  30. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +20 -18
  31. package/SVF-doxygen/html/html/IRGraph_8h_source.html +13 -13
  32. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +7 -7
  33. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
  34. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +6 -6
  35. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +21 -21
  36. package/SVF-doxygen/html/html/MemRegion_8h_source.html +5 -5
  37. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +7 -7
  38. package/SVF-doxygen/html/html/MemSSA_8h_source.html +5 -5
  39. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
  40. package/SVF-doxygen/html/html/Options_8cpp_source.html +2 -1
  41. package/SVF-doxygen/html/html/Options_8h_source.html +2 -1
  42. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +3 -3
  43. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +7 -7
  44. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +24 -22
  45. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +8 -8
  46. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +3 -3
  47. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +6 -6
  48. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +17 -17
  49. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +3 -3
  50. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +5 -5
  51. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
  52. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  53. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +1 -1
  54. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
  55. package/SVF-doxygen/html/html/SVFG_8cpp.html +1 -0
  56. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +61 -59
  57. package/SVF-doxygen/html/html/SVFG_8h_source.html +20 -20
  58. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +5 -5
  59. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +33 -33
  60. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +56 -56
  61. package/SVF-doxygen/html/html/SVFIR_8h_source.html +147 -148
  62. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +8 -8
  63. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +133 -132
  64. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +14 -14
  65. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +6 -6
  66. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  67. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  68. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  69. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +6 -6
  70. package/SVF-doxygen/html/html/VFGNode_8h_source.html +11 -11
  71. package/SVF-doxygen/html/html/VFG_8cpp_source.html +39 -39
  72. package/SVF-doxygen/html/html/VFG_8h_source.html +26 -26
  73. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
  74. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +7 -7
  75. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
  76. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
  77. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
  78. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +1 -1
  79. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +20 -19
  80. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +18 -16
  81. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
  82. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +4 -4
  83. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +34 -34
  84. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +4 -4
  85. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +12 -12
  86. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +4 -4
  87. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +8 -8
  88. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +4 -4
  89. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +8 -8
  90. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +4 -4
  91. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +8 -8
  92. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +4 -4
  93. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +8 -8
  94. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +4 -4
  95. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +11 -11
  96. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +8 -8
  97. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +4 -4
  98. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +8 -8
  99. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +4 -4
  100. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +25 -25
  101. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +26 -25
  102. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +24 -22
  103. package/SVF-doxygen/html/html/classSVF_1_1BranchCondManager.html +22 -22
  104. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +20 -19
  105. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +33 -31
  106. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
  107. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode-members.html +8 -8
  108. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +6 -6
  109. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
  110. package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +20 -19
  111. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +24 -22
  112. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +8 -8
  113. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +24 -24
  114. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +8 -8
  115. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +24 -24
  116. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +8 -8
  117. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +24 -24
  118. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +28 -27
  119. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +41 -39
  120. package/SVF-doxygen/html/html/classSVF_1_1CondManager-members.html +10 -7
  121. package/SVF-doxygen/html/html/classSVF_1_1CondManager.html +144 -43
  122. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +4 -4
  123. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +10 -10
  124. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph-members.html +5 -5
  125. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +46 -46
  126. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +4 -4
  127. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +17 -17
  128. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +20 -19
  129. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +18 -16
  130. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +1 -1
  131. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +3 -3
  132. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +10 -10
  133. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +13 -13
  134. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +9 -9
  135. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +1 -1
  136. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +8 -8
  137. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +24 -24
  138. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +8 -8
  139. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +24 -24
  140. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +8 -8
  141. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +24 -24
  142. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +4 -4
  143. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +8 -8
  144. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +4 -4
  146. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +16 -16
  147. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +4 -4
  148. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +27 -27
  149. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +7 -7
  150. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +8 -8
  151. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +24 -24
  152. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
  153. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +4 -4
  154. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode-members.html +6 -6
  155. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +6 -6
  156. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode-members.html +6 -6
  157. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +6 -6
  158. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  159. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN-members.html +8 -8
  160. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +24 -24
  161. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +20 -19
  162. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +18 -16
  163. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +8 -8
  164. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +28 -28
  165. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode-members.html +6 -6
  166. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +6 -6
  167. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode-members.html +6 -6
  168. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +22 -22
  169. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +6 -6
  170. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
  171. package/SVF-doxygen/html/html/classSVF_1_1IRGraph-members.html +8 -8
  172. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +54 -54
  173. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +2 -2
  174. package/SVF-doxygen/html/html/classSVF_1_1InterBlockNode-members.html +6 -6
  175. package/SVF-doxygen/html/html/classSVF_1_1InterBlockNode.html +6 -6
  176. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +14 -14
  177. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +9 -9
  178. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +3 -3
  179. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode-members.html +6 -6
  180. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +6 -6
  181. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +14 -14
  182. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +9 -9
  183. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
  184. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +3 -3
  185. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +7 -7
  186. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +23 -22
  187. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +18 -16
  188. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +17 -17
  189. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +92 -92
  190. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +2 -2
  191. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
  192. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +6 -6
  193. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +2 -2
  194. package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +18 -18
  195. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +41 -41
  196. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +24 -23
  197. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +33 -31
  198. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt-members.html +24 -23
  199. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +25 -23
  200. package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +8 -8
  201. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +24 -24
  202. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG-members.html +5 -5
  203. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +13 -13
  204. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +21 -20
  205. package/SVF-doxygen/html/html/classSVF_1_1Options.html +26 -0
  206. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +16 -16
  207. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +7 -7
  208. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator-members.html +13 -12
  209. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +102 -70
  210. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +25 -24
  211. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +23 -21
  212. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +4 -4
  213. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +47 -47
  214. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +11 -10
  215. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode-members.html +7 -7
  216. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +6 -6
  217. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
  218. package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +20 -19
  219. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +24 -22
  220. package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +8 -8
  221. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +24 -24
  222. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +47 -47
  223. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +74 -74
  224. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
  225. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +59 -59
  226. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +19 -19
  227. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +131 -132
  228. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +732 -750
  229. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +3 -3
  230. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +86 -86
  231. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +23 -22
  232. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +50 -32
  233. package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +8 -8
  234. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +69 -69
  235. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +10 -10
  236. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
  237. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +4 -4
  238. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +8 -8
  239. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +20 -19
  240. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +18 -16
  241. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +23 -22
  242. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +18 -16
  243. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +23 -22
  244. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +18 -16
  245. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
  246. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
  247. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +4 -4
  248. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +10 -10
  249. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +9 -9
  250. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +24 -23
  251. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +28 -26
  252. package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +33 -33
  253. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +83 -83
  254. package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +8 -8
  255. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +24 -24
  256. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +8 -8
  257. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +24 -24
  258. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt-members.html +23 -22
  259. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +20 -18
  260. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +4 -4
  261. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +17 -17
  262. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  263. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +3 -3
  264. package/SVF-doxygen/html/html/functions_a.html +29 -29
  265. package/SVF-doxygen/html/html/functions_c.html +25 -30
  266. package/SVF-doxygen/html/html/functions_f.html +2 -2
  267. package/SVF-doxygen/html/html/functions_func.html +29 -29
  268. package/SVF-doxygen/html/html/functions_func_g.html +59 -57
  269. package/SVF-doxygen/html/html/functions_func_h.html +6 -6
  270. package/SVF-doxygen/html/html/functions_func_i.html +8 -4
  271. package/SVF-doxygen/html/html/functions_func_s.html +8 -5
  272. package/SVF-doxygen/html/html/functions_g.html +74 -72
  273. package/SVF-doxygen/html/html/functions_h.html +6 -6
  274. package/SVF-doxygen/html/html/functions_i.html +20 -16
  275. package/SVF-doxygen/html/html/functions_k.html +9 -0
  276. package/SVF-doxygen/html/html/functions_l.html +8 -8
  277. package/SVF-doxygen/html/html/functions_n.html +3 -0
  278. package/SVF-doxygen/html/html/functions_o.html +12 -15
  279. package/SVF-doxygen/html/html/functions_p.html +20 -35
  280. package/SVF-doxygen/html/html/functions_s.html +35 -13
  281. package/SVF-doxygen/html/html/functions_t.html +5 -7
  282. package/SVF-doxygen/html/html/functions_type_c.html +1 -4
  283. package/SVF-doxygen/html/html/functions_type_f.html +2 -2
  284. package/SVF-doxygen/html/html/functions_type_g.html +2 -2
  285. package/SVF-doxygen/html/html/functions_type_i.html +3 -3
  286. package/SVF-doxygen/html/html/functions_type_k.html +3 -0
  287. package/SVF-doxygen/html/html/functions_type_p.html +2 -18
  288. package/SVF-doxygen/html/html/functions_type_s.html +16 -0
  289. package/SVF-doxygen/html/html/functions_type_v.html +1 -1
  290. package/SVF-doxygen/html/html/functions_v.html +4 -4
  291. package/SVF-doxygen/html/html/functions_vars_g.html +7 -7
  292. package/SVF-doxygen/html/html/functions_vars_i.html +7 -7
  293. package/SVF-doxygen/html/html/functions_vars_k.html +6 -0
  294. package/SVF-doxygen/html/html/functions_vars_n.html +3 -0
  295. package/SVF-doxygen/html/html/functions_vars_o.html +1 -2
  296. package/SVF-doxygen/html/html/functions_vars_p.html +4 -7
  297. package/SVF-doxygen/html/html/functions_vars_s.html +3 -0
  298. package/SVF-doxygen/html/html/functions_w.html +9 -5
  299. package/SVF-doxygen/html/html/namespaceSVF.html +1 -1
  300. package/SVF-doxygen/html/html/search/all_1.js +14 -14
  301. package/SVF-doxygen/html/html/search/all_10.js +13 -18
  302. package/SVF-doxygen/html/html/search/all_13.js +10 -4
  303. package/SVF-doxygen/html/html/search/all_14.js +6 -6
  304. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  305. package/SVF-doxygen/html/html/search/all_16.js +3 -3
  306. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  307. package/SVF-doxygen/html/html/search/all_3.js +2 -3
  308. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  309. package/SVF-doxygen/html/html/search/all_7.js +29 -28
  310. package/SVF-doxygen/html/html/search/all_8.js +2 -2
  311. package/SVF-doxygen/html/html/search/all_9.js +4 -3
  312. package/SVF-doxygen/html/html/search/all_b.js +3 -0
  313. package/SVF-doxygen/html/html/search/all_c.js +4 -4
  314. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  315. package/SVF-doxygen/html/html/search/all_e.js +4 -3
  316. package/SVF-doxygen/html/html/search/all_f.js +2 -2
  317. package/SVF-doxygen/html/html/search/functions_0.js +14 -14
  318. package/SVF-doxygen/html/html/search/functions_10.js +1 -0
  319. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  320. package/SVF-doxygen/html/html/search/functions_6.js +25 -24
  321. package/SVF-doxygen/html/html/search/functions_7.js +2 -2
  322. package/SVF-doxygen/html/html/search/functions_8.js +1 -0
  323. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  324. package/SVF-doxygen/html/html/search/typedefs_11.js +4 -0
  325. package/SVF-doxygen/html/html/search/typedefs_14.js +1 -1
  326. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -2
  327. package/SVF-doxygen/html/html/search/typedefs_5.js +2 -2
  328. package/SVF-doxygen/html/html/search/typedefs_6.js +1 -1
  329. package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
  330. package/SVF-doxygen/html/html/search/typedefs_a.js +2 -1
  331. package/SVF-doxygen/html/html/search/typedefs_f.js +2 -6
  332. package/SVF-doxygen/html/html/search/variables_10.js +2 -3
  333. package/SVF-doxygen/html/html/search/variables_13.js +1 -0
  334. package/SVF-doxygen/html/html/search/variables_14.js +4 -4
  335. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  336. package/SVF-doxygen/html/html/search/variables_7.js +3 -3
  337. package/SVF-doxygen/html/html/search/variables_9.js +3 -3
  338. package/SVF-doxygen/html/html/search/variables_b.js +3 -1
  339. package/SVF-doxygen/html/html/search/variables_e.js +3 -2
  340. package/SVF-doxygen/html/html/search/variables_f.js +2 -2
  341. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +9 -9
  342. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
  343. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +18 -18
  344. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +20 -20
  345. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  346. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  347. package/include/DDA/ContextDDA.h +1 -1
  348. package/include/DDA/FlowDDA.h +1 -1
  349. package/include/Graphs/ConsG.h +10 -10
  350. package/include/Graphs/ICFGNode.h +3 -3
  351. package/include/Graphs/IRGraph.h +7 -7
  352. package/include/Graphs/VFG.h +4 -4
  353. package/include/MSSA/MemRegion.h +3 -3
  354. package/include/MSSA/MemSSA.h +1 -1
  355. package/include/MemoryModel/PointerAnalysis.h +8 -8
  356. package/include/MemoryModel/PointerAnalysisImpl.h +2 -2
  357. package/include/MemoryModel/SVFIR.h +66 -67
  358. package/include/MemoryModel/SVFStatements.h +30 -25
  359. package/include/MemoryModel/SVFVariables.h +32 -32
  360. package/include/SABER/PathCondAllocator.h +4 -0
  361. package/include/SVF-FE/SVFIRBuilder.h +15 -15
  362. package/include/Util/Conditions.h +10 -0
  363. package/include/Util/IRAnnotator.h +1 -1
  364. package/include/Util/Options.h +3 -1
  365. package/include/Util/TypeBasedHeapCloning.h +2 -2
  366. package/include/WPA/Andersen.h +1 -1
  367. package/include/WPA/FlowSensitiveTBHC.h +1 -1
  368. package/lib/DDA/ContextDDA.cpp +2 -2
  369. package/lib/DDA/DDAClient.cpp +6 -6
  370. package/lib/DDA/DDAStat.cpp +1 -1
  371. package/lib/DDA/FlowDDA.cpp +2 -2
  372. package/lib/Graphs/ConsG.cpp +25 -24
  373. package/lib/Graphs/ICFG.cpp +4 -4
  374. package/lib/Graphs/IRGraph.cpp +12 -9
  375. package/lib/Graphs/SVFG.cpp +10 -8
  376. package/lib/Graphs/VFG.cpp +37 -37
  377. package/lib/MSSA/MemRegion.cpp +17 -17
  378. package/lib/MSSA/MemSSA.cpp +9 -9
  379. package/lib/MTA/MTAAnnotator.cpp +5 -5
  380. package/lib/MemoryModel/PAGBuilderFromFile.cpp +10 -10
  381. package/lib/MemoryModel/PointerAnalysisImpl.cpp +12 -12
  382. package/lib/MemoryModel/SVFIR.cpp +63 -63
  383. package/lib/SABER/LeakChecker.cpp +2 -2
  384. package/lib/SABER/ProgSlice.cpp +4 -1
  385. package/lib/SABER/SaberSVFGBuilder.cpp +3 -3
  386. package/lib/SVF-FE/Graph2Json.cpp +2 -2
  387. package/lib/SVF-FE/SVFIRBuilder.cpp +18 -18
  388. package/lib/Util/Conditions.cpp +5 -1
  389. package/lib/Util/Options.cpp +6 -0
  390. package/lib/Util/PTAStat.cpp +7 -7
  391. package/lib/Util/TypeBasedHeapCloning.cpp +3 -3
  392. package/lib/WPA/Andersen.cpp +13 -13
  393. package/lib/WPA/AndersenSFR.cpp +1 -1
  394. package/lib/WPA/AndersenStat.cpp +3 -3
  395. package/lib/WPA/FlowSensitive.cpp +6 -6
  396. package/lib/WPA/FlowSensitiveStat.cpp +2 -2
  397. package/lib/WPA/FlowSensitiveTBHC.cpp +5 -5
  398. package/lib/WPA/VersionedFlowSensitive.cpp +1 -1
  399. package/package.json +1 -1
@@ -128,9 +128,9 @@ Public Types</h2></td></tr>
128
128
  <tr class="separator:aa9dbaf51f0498f3bd878827744208899"><td class="memSeparator" colspan="2">&#160;</td></tr>
129
129
  <tr class="memitem:ae1aca020147c270deca2a1241e3847d0"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt; const <a class="el" href="classSVF_1_1MemRegion.html">MemRegion</a> *, <a class="el" href="namespaceSVF.html#a39df0130e37e97db2ff7620bbb2a72f5">MRVERSION</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#ae1aca020147c270deca2a1241e3847d0">MemRegToCounterMap</a></td></tr>
130
130
  <tr class="separator:ae1aca020147c270deca2a1241e3847d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
131
- <tr class="memitem:a45f8ece590b091bd5ebf87f820f28f44"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classSVF_1_1SVFIR.html#a896b591a710148fad7705a0d88652976">SVFIR::PAGEdgeList</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a45f8ece590b091bd5ebf87f820f28f44">PAGEdgeList</a></td></tr>
132
- <tr class="memdesc:a45f8ece590b091bd5ebf87f820f28f44"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> edge list. <a href="#a45f8ece590b091bd5ebf87f820f28f44">More...</a><br /></td></tr>
133
- <tr class="separator:a45f8ece590b091bd5ebf87f820f28f44"><td class="memSeparator" colspan="2">&#160;</td></tr>
131
+ <tr class="memitem:a445d282890dbd2fb51e903255af1cc3e"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFIR::SVFStmtList</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVFStmtList</a></td></tr>
132
+ <tr class="memdesc:a445d282890dbd2fb51e903255af1cc3e"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> edge list. <a href="#a445d282890dbd2fb51e903255af1cc3e">More...</a><br /></td></tr>
133
+ <tr class="separator:a445d282890dbd2fb51e903255af1cc3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
134
134
  <tr><td colspan="2"><div class="groupHeader"></div></td></tr>
135
135
  <tr class="memitem:a94164c59384ef04f98a3713b504fca35"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt; const <a class="el" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *, <a class="el" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MUSet</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a94164c59384ef04f98a3713b504fca35">LoadToMUSetMap</a></td></tr>
136
136
  <tr class="separator:a94164c59384ef04f98a3713b504fca35"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -759,24 +759,6 @@ Private Attributes</h2></td></tr>
759
759
 
760
760
  <p class="definition">Definition at line <a class="el" href="MemSSA_8h_source.html#l00064">64</a> of file <a class="el" href="MemSSA_8h_source.html">MemSSA.h</a>.</p>
761
761
 
762
- </div>
763
- </div>
764
- <a id="a45f8ece590b091bd5ebf87f820f28f44"></a>
765
- <h2 class="memtitle"><span class="permalink"><a href="#a45f8ece590b091bd5ebf87f820f28f44">&#9670;&nbsp;</a></span>PAGEdgeList</h2>
766
-
767
- <div class="memitem">
768
- <div class="memproto">
769
- <table class="memname">
770
- <tr>
771
- <td class="memname">typedef <a class="el" href="classSVF_1_1SVFIR.html#a896b591a710148fad7705a0d88652976">SVFIR::PAGEdgeList</a> <a class="el" href="classSVF_1_1MemSSA.html#a45f8ece590b091bd5ebf87f820f28f44">SVF::MemSSA::PAGEdgeList</a></td>
772
- </tr>
773
- </table>
774
- </div><div class="memdoc">
775
-
776
- <p><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> edge list. </p>
777
-
778
- <p class="definition">Definition at line <a class="el" href="MemSSA_8h_source.html#l00097">97</a> of file <a class="el" href="MemSSA_8h_source.html">MemSSA.h</a>.</p>
779
-
780
762
  </div>
781
763
  </div>
782
764
  <a id="a8e948ea7778158107657fdd8195530e1"></a>
@@ -857,6 +839,24 @@ Private Attributes</h2></td></tr>
857
839
 
858
840
  <p class="definition">Definition at line <a class="el" href="MemSSA_8h_source.html#l00075">75</a> of file <a class="el" href="MemSSA_8h_source.html">MemSSA.h</a>.</p>
859
841
 
842
+ </div>
843
+ </div>
844
+ <a id="a445d282890dbd2fb51e903255af1cc3e"></a>
845
+ <h2 class="memtitle"><span class="permalink"><a href="#a445d282890dbd2fb51e903255af1cc3e">&#9670;&nbsp;</a></span>SVFStmtList</h2>
846
+
847
+ <div class="memitem">
848
+ <div class="memproto">
849
+ <table class="memname">
850
+ <tr>
851
+ <td class="memname">typedef <a class="el" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFIR::SVFStmtList</a> <a class="el" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVF::MemSSA::SVFStmtList</a></td>
852
+ </tr>
853
+ </table>
854
+ </div><div class="memdoc">
855
+
856
+ <p><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> edge list. </p>
857
+
858
+ <p class="definition">Definition at line <a class="el" href="MemSSA_8h_source.html#l00097">97</a> of file <a class="el" href="MemSSA_8h_source.html">MemSSA.h</a>.</p>
859
+
860
860
  </div>
861
861
  </div>
862
862
  <h2 class="groupheader">Member Enumeration Documentation</h2>
@@ -1562,9 +1562,8 @@ Private Attributes</h2></td></tr>
1562
1562
  <p>if the function does not have a reachable return instruction from function entry then we won't create return mu for it </p>
1563
1563
 
1564
1564
  <p class="definition">Definition at line <a class="el" href="MemSSA_8cpp_source.html#l00126">126</a> of file <a class="el" href="MemSSA_8cpp_source.html">MemSSA.cpp</a>.</p>
1565
- <div class="fragment"><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;{</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a385e9d80a013723304b329454d32e8b1">DMSSA</a>,</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t creating mu chi for function &quot;</span> &lt;&lt; fun.<a class="code" href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">getName</a>()</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="comment">// 1. create mu/chi</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// insert a set of mus for memory regions at each load</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// inset a set of chis for memory regions at each store</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="comment">// 2. find global names (region name before renaming) of each memory region,</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="comment">// collect used mrs in usedRegs, and collect its def basic block in reg2BBMap</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">// in the form of mu(r) and r = chi (r)</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// a) mu(r):</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="comment">// if(r \not\in varKills) global = global \cup r</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">// b) r = chi(r):</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="comment">// if(r \not\in varKills) global = global \cup r</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// varKills = varKills \cup r</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="comment">// block(r) = block(r) \cup bb_{chi}</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa">BBList</a> reachableBBs;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a61b29238f1f32978c7b6aded4b73244d">getFunReachableBBs</a>(fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>(),<a class="code" href="classSVF_1_1MemSSA.html#a9741a8d0540ba4c27cb667590d246197">getDT</a>(fun),reachableBBs);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">for</span> (BBList::const_iterator iter = reachableBBs.begin(), eiter = reachableBBs.end();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; iter != eiter; ++iter)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = *iter;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ae64f97a984765a43f05df26b57a43a43">varKills</a>.clear();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">for</span> (BasicBlock::const_iterator it = bb-&gt;begin(), eit = bb-&gt;end();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &amp;*it;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#a8832a53d8f6a5eb0a07551ca19c5513d">hasPAGEdgeList</a>(inst))</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a45f8ece590b091bd5ebf87f820f28f44">PAGEdgeList</a>&amp; pagEdgeList = <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#a820e30118868947b62f0a558da5512fc">getPAGEdgesFromInst</a>(inst);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">for</span> (PAGEdgeList::const_iterator bit = pagEdgeList.begin(),</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; ebit = pagEdgeList.end(); bit != ebit; ++bit)</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst = *bit;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</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="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a>(bb, load, <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#a19da5768681a21c52a6c43761814a157">getLoadMRSet</a>(load));</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">else</span> <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;(inst))</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a>(bb, store, <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#a364ad1e34d09a92cdc0cfe530c84880f">getStoreMRSet</a>(store));</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">getCallBlockNode</a>(inst);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#aeed8bcf54d2a72c640e464e256249630">hasRefMRSet</a>(cs))</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a1aa05f81640286a796db0ded4e10c7ac">AddCallSiteMU</a>(cs,<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#a7ede01d58bb2490ded5895ca5bd45948">getCallSiteRefMRSet</a>(cs));</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#a8868281e5f5b5f3a83acf8568971ad40">hasModMRSet</a>(cs))</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ac6f2171f92e0bdd5dbdb58efed144c18">AddCallSiteCHI</a>(cs,<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#acb78098bf1fc8c3a80720a3dff3a0a1d">getCallSiteModMRSet</a>(cs));</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</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; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="comment">// create entry chi for this function including all memory regions</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="comment">// initialize them with version 0 and 1 r_1 = chi (r_0)</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">for</span> (MRSet::iterator iter = <a class="code" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">usedRegs</a>.begin(), eiter = <a class="code" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">usedRegs</a>.end();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; iter != eiter; ++iter)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr = *iter;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="comment">// initialize mem region version and stack for renaming phase</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a22e2dd0fc78877bdedd207a40540a634">mr2CounterMap</a>[mr] = 0;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d">mr2VerStackMap</a>[mr].clear();</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5">ENTRYCHI</a>* chi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5">ENTRYCHI</a>(&amp;fun, mr);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; chi-&gt;setOpVer(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(mr,chi));</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; chi-&gt;setResVer(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(mr,chi));</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec">funToEntryChiSetMap</a>[&amp;fun].insert(chi);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a7a7e06e90a215086696effb5f5537baf">functionDoesNotRet</a>(fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()) == <span class="keyword">false</span>)</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; <a class="code" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a">RETMU</a>* mu = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a">RETMU</a>(&amp;fun, mr);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c">funToReturnMuSetMap</a>[&amp;fun].insert(mu);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</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;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;}</div><div class="ttc" id="classSVF_1_1MRGenerator_html_a8868281e5f5b5f3a83acf8568971ad40"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a8868281e5f5b5f3a83acf8568971ad40">SVF::MRGenerator::hasModMRSet</a></div><div class="ttdeci">bool hasModMRSet(const CallBlockNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00455">MemRegion.h:455</a></div></div>
1565
+ <div class="fragment"><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;{</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a385e9d80a013723304b329454d32e8b1">DMSSA</a>,</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t creating mu chi for function &quot;</span> &lt;&lt; fun.<a class="code" href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">getName</a>()</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="comment">// 1. create mu/chi</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// insert a set of mus for memory regions at each load</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// inset a set of chis for memory regions at each store</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="comment">// 2. find global names (region name before renaming) of each memory region,</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="comment">// collect used mrs in usedRegs, and collect its def basic block in reg2BBMap</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">// in the form of mu(r) and r = chi (r)</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// a) mu(r):</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="comment">// if(r \not\in varKills) global = global \cup r</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">// b) r = chi(r):</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="comment">// if(r \not\in varKills) global = global \cup r</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// varKills = varKills \cup r</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="comment">// block(r) = block(r) \cup bb_{chi}</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa">BBList</a> reachableBBs;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a61b29238f1f32978c7b6aded4b73244d">getFunReachableBBs</a>(fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>(),<a class="code" href="classSVF_1_1MemSSA.html#a9741a8d0540ba4c27cb667590d246197">getDT</a>(fun),reachableBBs);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">for</span> (BBList::const_iterator iter = reachableBBs.begin(), eiter = reachableBBs.end();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; iter != eiter; ++iter)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = *iter;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ae64f97a984765a43f05df26b57a43a43">varKills</a>.clear();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">for</span> (BasicBlock::const_iterator it = bb-&gt;begin(), eit = bb-&gt;end();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &amp;*it;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#a6f631290f3da7c308395eb6a9472d7a5">hasSVFStmtList</a>(inst))</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVFStmtList</a>&amp; pagEdgeList = <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#acc78a116ca0be01a359d1313b2ae603c">getPAGEdgesFromInst</a>(inst);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">for</span> (SVFStmtList::const_iterator bit = pagEdgeList.begin(),</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; ebit = pagEdgeList.end(); bit != ebit; ++bit)</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst = *bit;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</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="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a>(bb, load, <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#a19da5768681a21c52a6c43761814a157">getLoadMRSet</a>(load));</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">else</span> <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;(inst))</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a>(bb, store, <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#a364ad1e34d09a92cdc0cfe530c84880f">getStoreMRSet</a>(store));</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">getCallBlockNode</a>(inst);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#aeed8bcf54d2a72c640e464e256249630">hasRefMRSet</a>(cs))</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a1aa05f81640286a796db0ded4e10c7ac">AddCallSiteMU</a>(cs,<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#a7ede01d58bb2490ded5895ca5bd45948">getCallSiteRefMRSet</a>(cs));</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#a8868281e5f5b5f3a83acf8568971ad40">hasModMRSet</a>(cs))</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ac6f2171f92e0bdd5dbdb58efed144c18">AddCallSiteCHI</a>(cs,<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#acb78098bf1fc8c3a80720a3dff3a0a1d">getCallSiteModMRSet</a>(cs));</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</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; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="comment">// create entry chi for this function including all memory regions</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="comment">// initialize them with version 0 and 1 r_1 = chi (r_0)</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">for</span> (MRSet::iterator iter = <a class="code" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">usedRegs</a>.begin(), eiter = <a class="code" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">usedRegs</a>.end();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; iter != eiter; ++iter)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr = *iter;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="comment">// initialize mem region version and stack for renaming phase</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a22e2dd0fc78877bdedd207a40540a634">mr2CounterMap</a>[mr] = 0;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d">mr2VerStackMap</a>[mr].clear();</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5">ENTRYCHI</a>* chi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5">ENTRYCHI</a>(&amp;fun, mr);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; chi-&gt;setOpVer(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(mr,chi));</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; chi-&gt;setResVer(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(mr,chi));</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec">funToEntryChiSetMap</a>[&amp;fun].insert(chi);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a7a7e06e90a215086696effb5f5537baf">functionDoesNotRet</a>(fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()) == <span class="keyword">false</span>)</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; <a class="code" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a">RETMU</a>* mu = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a">RETMU</a>(&amp;fun, mr);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c">funToReturnMuSetMap</a>[&amp;fun].insert(mu);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</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;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;}</div><div class="ttc" id="classSVF_1_1MRGenerator_html_a8868281e5f5b5f3a83acf8568971ad40"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a8868281e5f5b5f3a83acf8568971ad40">SVF::MRGenerator::hasModMRSet</a></div><div class="ttdeci">bool hasModMRSet(const CallBlockNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00455">MemRegion.h:455</a></div></div>
1566
1566
  <div class="ttc" id="classSVF_1_1MemSSA_html_acf840b71b67cabe831f01f2d358f27fa"><div class="ttname"><a href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">SVF::MemSSA::usedRegs</a></div><div class="ttdeci">MRSet usedRegs</div><div class="ttdoc">The following three set are used for prune SSA phi insertion. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00146">MemSSA.h:146</a></div></div>
1567
- <div class="ttc" id="classSVF_1_1MemSSA_html_a45f8ece590b091bd5ebf87f820f28f44"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a45f8ece590b091bd5ebf87f820f28f44">SVF::MemSSA::PAGEdgeList</a></div><div class="ttdeci">SVFIR::PAGEdgeList PAGEdgeList</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>
1568
1567
  <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
1569
1568
  <div class="ttc" id="classSVF_1_1ICFG_html_a7d10e8a815c836a070d35850f817a18c"><div class="ttname"><a href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">SVF::ICFG::getCallBlockNode</a></div><div class="ttdeci">CallBlockNode * getCallBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00197">ICFG.cpp:197</a></div></div>
1570
1569
  <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>
@@ -1573,27 +1572,27 @@ Private Attributes</h2></td></tr>
1573
1572
  <div class="ttc" id="classSVF_1_1SVFValue_html_adc15c1f7a77158142156fba7524e89c9"><div class="ttname"><a href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">SVF::SVFValue::getName</a></div><div class="ttdeci">const llvm::StringRef getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00231">SVFBasicTypes.h:231</a></div></div>
1574
1573
  <div class="ttc" id="classSVF_1_1MemSSA_html_adb8009633b4e3b69609790fa068b3f42"><div class="ttname"><a href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">SVF::MemSSA::AddLoadMU</a></div><div class="ttdeci">void AddLoadMU(const BasicBlock *bb, const LoadStmt *load, const MRSet &amp;mrSet)</div><div class="ttdoc">Add methods for mus/chis/phis. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00183">MemSSA.h:183</a></div></div>
1575
1574
  <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>
1575
+ <div class="ttc" id="classSVF_1_1MRGenerator_html_acc78a116ca0be01a359d1313b2ae603c"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#acc78a116ca0be01a359d1313b2ae603c">SVF::MRGenerator::getPAGEdgesFromInst</a></div><div class="ttdeci">SVFStmtList &amp; getPAGEdgesFromInst(const Instruction *inst)</div><div class="ttdoc">Given an instruction, get all its the PAGEdge (statement) in sequence. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00160">MemRegion.cpp:160</a></div></div>
1576
1576
  <div class="ttc" id="classSVF_1_1MemSSA_html_a468e1481926df6865678b7232bb79bf3"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">SVF::MemSSA::pta</a></div><div class="ttdeci">BVDataPTAImpl * pta</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00115">MemSSA.h:115</a></div></div>
1577
1577
  <div class="ttc" id="classSVF_1_1MemSSA_html_a22e2dd0fc78877bdedd207a40540a634"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a22e2dd0fc78877bdedd207a40540a634">SVF::MemSSA::mr2CounterMap</a></div><div class="ttdeci">MemRegToCounterMap mr2CounterMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00140">MemSSA.h:140</a></div></div>
1578
+ <div class="ttc" id="classSVF_1_1MRGenerator_html_a6f631290f3da7c308395eb6a9472d7a5"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a6f631290f3da7c308395eb6a9472d7a5">SVF::MRGenerator::hasSVFStmtList</a></div><div class="ttdeci">bool hasSVFStmtList(const Instruction *inst)</div><div class="ttdoc">Whether this instruction has SVFIR Edge. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00151">MemRegion.cpp:151</a></div></div>
1578
1579
  <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>
1579
1580
  <div class="ttc" id="classSVF_1_1MemSSA_html_ae64f97a984765a43f05df26b57a43a43"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ae64f97a984765a43f05df26b57a43a43">SVF::MemSSA::varKills</a></div><div class="ttdeci">MRSet varKills</div><div class="ttdoc">Collect memory regions whose definition killed. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00150">MemSSA.h:150</a></div></div>
1580
1581
  <div class="ttc" id="classSVF_1_1MemSSA_html_a6a20da24d82ace1888be49a2ae0f6bd5"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5">SVF::MemSSA::ENTRYCHI</a></div><div class="ttdeci">EntryCHI&lt; Condition &gt; ENTRYCHI</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00058">MemSSA.h:58</a></div></div>
1581
1582
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
1582
1583
  <div class="ttc" id="classSVF_1_1MemSSA_html_a953a56a65ee36fd1c78b29179cd3f33a"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a">SVF::MemSSA::RETMU</a></div><div class="ttdeci">RetMU&lt; Condition &gt; RETMU</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00054">MemSSA.h:54</a></div></div>
1583
1584
  <div class="ttc" id="classSVF_1_1MemSSA_html_a66e693af7b37e4e58b4834898d6a34fa"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa">SVF::MemSSA::BBList</a></div><div class="ttdeci">std::vector&lt; const BasicBlock * &gt; BBList</div><div class="ttdoc">For phi insertion. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00087">MemSSA.h:87</a></div></div>
1584
- <div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00628">SVFStatements.h:628</a></div></div>
1585
+ <div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00633">SVFStatements.h:633</a></div></div>
1585
1586
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a240219c2dc4f5cc5f85445e18c79b83b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">SVF::PointerAnalysis::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00205">PointerAnalysis.h:205</a></div></div>
1586
1587
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a7ede01d58bb2490ded5895ca5bd45948"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a7ede01d58bb2490ded5895ca5bd45948">SVF::MRGenerator::getCallSiteRefMRSet</a></div><div class="ttdeci">MRSet &amp; getCallSiteRefMRSet(const CallBlockNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00459">MemRegion.h:459</a></div></div>
1587
1588
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7a7e06e90a215086696effb5f5537baf"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7a7e06e90a215086696effb5f5537baf">SVF::SVFUtil::functionDoesNotRet</a></div><div class="ttdeci">bool functionDoesNotRet(const Function *fun)</div><div class="ttdoc">Return true if the function has a return instruction reachable from function entry. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00088">LLVMUtil.cpp:88</a></div></div>
1588
- <div class="ttc" id="classSVF_1_1MRGenerator_html_a8832a53d8f6a5eb0a07551ca19c5513d"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a8832a53d8f6a5eb0a07551ca19c5513d">SVF::MRGenerator::hasPAGEdgeList</a></div><div class="ttdeci">bool hasPAGEdgeList(const Instruction *inst)</div><div class="ttdoc">Whether this instruction has SVFIR Edge. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00151">MemRegion.cpp:151</a></div></div>
1589
1589
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a61b29238f1f32978c7b6aded4b73244d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a61b29238f1f32978c7b6aded4b73244d">SVF::SVFUtil::getFunReachableBBs</a></div><div class="ttdeci">void getFunReachableBBs(const Function *fun, DominatorTree *dt, std::vector&lt; const BasicBlock *&gt; &amp;bbs)</div><div class="ttdoc">Get reachable basic block from function entry. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00059">LLVMUtil.cpp:59</a></div></div>
1590
1590
  <div class="ttc" id="SVFBasicTypes_8h_html_a385e9d80a013723304b329454d32e8b1"><div class="ttname"><a href="SVFBasicTypes_8h.html#a385e9d80a013723304b329454d32e8b1">DMSSA</a></div><div class="ttdeci">#define DMSSA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00165">SVFBasicTypes.h:165</a></div></div>
1591
1591
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
1592
- <div class="ttc" id="classSVF_1_1MRGenerator_html_a820e30118868947b62f0a558da5512fc"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a820e30118868947b62f0a558da5512fc">SVF::MRGenerator::getPAGEdgesFromInst</a></div><div class="ttdeci">PAGEdgeList &amp; getPAGEdgesFromInst(const Instruction *inst)</div><div class="ttdoc">Given an instruction, get all its the PAGEdge (statement) in sequence. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00160">MemRegion.cpp:160</a></div></div>
1593
1592
  <div class="ttc" id="classSVF_1_1MRGenerator_html_acb78098bf1fc8c3a80720a3dff3a0a1d"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#acb78098bf1fc8c3a80720a3dff3a0a1d">SVF::MRGenerator::getCallSiteModMRSet</a></div><div class="ttdeci">MRSet &amp; getCallSiteModMRSet(const CallBlockNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00463">MemRegion.h:463</a></div></div>
1594
1593
  <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00249">BasicTypes.h:249</a></div></div>
1595
1594
  <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>
1596
- <div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00591">SVFStatements.h:591</a></div></div>
1595
+ <div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00596">SVFStatements.h:596</a></div></div>
1597
1596
  <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>
1598
1597
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8d8216a92140d982303f83ea424ddc91"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVF::SVFUtil::isNonInstricCallSite</a></div><div class="ttdeci">bool isNonInstricCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls...</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00206">SVFUtil.h:206</a></div></div>
1599
1598
  <div class="ttc" id="classSVF_1_1MemRegion_html"><div class="ttname"><a href="classSVF_1_1MemRegion.html">SVF::MemRegion</a></div><div class="ttdoc">Memory Region class. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00051">MemRegion.h:51</a></div></div>
@@ -1601,8 +1600,9 @@ Private Attributes</h2></td></tr>
1601
1600
  <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>
1602
1601
  <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>
1603
1602
  <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>
1604
- <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00133">SVFIR.h:133</a></div></div>
1603
+ <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
1605
1604
  <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>
1605
+ <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>
1606
1606
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00149">SVFBasicTypes.h:149</a></div></div>
1607
1607
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a19da5768681a21c52a6c43761814a157"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a19da5768681a21c52a6c43761814a157">SVF::MRGenerator::getLoadMRSet</a></div><div class="ttdeci">MRSet &amp; getLoadMRSet(const LoadStmt *load)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00443">MemRegion.h:443</a></div></div>
1608
1608
  <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>
@@ -1670,8 +1670,7 @@ Private Attributes</h2></td></tr>
1670
1670
  <p>Print SSA </p>
1671
1671
 
1672
1672
  <p class="definition">Definition at line <a class="el" href="MemSSA_8cpp_source.html#l00595">595</a> of file <a class="el" href="MemSSA_8cpp_source.html">MemSSA.cpp</a>.</p>
1673
- <div class="fragment"><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;{</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVFModule::iterator</a> fit = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>()-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), efit = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>()-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>();</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; fit != efit; ++fit)</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = *fit;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a4ac0e6b77fc9ccc18b269268b3cd046d">Options::MSSAFun</a>!=<span class="stringliteral">&quot;&quot;</span> &amp;&amp; <a class="code" href="classSVF_1_1Options.html#a4ac0e6b77fc9ccc18b269268b3cd046d">Options::MSSAFun</a>!=fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">getName</a>())</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; Out &lt;&lt; <span class="stringliteral">&quot;==========FUNCTION: &quot;</span> &lt;&lt; fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">getName</a>() &lt;&lt; <span class="stringliteral">&quot;==========\n&quot;</span>;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="comment">// dump function entry chi nodes</span></div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#aec75259d035e3b5589e6fcbbcdfe4b2c">hasFuncEntryChi</a>(fun))</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; {</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">CHISet</a> &amp; entry_chis = <a class="code" href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800">getFuncEntryChiSet</a>(fun);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">for</span> (CHISet::iterator chi_it = entry_chis.begin(); chi_it != entry_chis.end(); chi_it++)</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; (*chi_it)-&gt;dump();</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; }</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; }</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">for</span> (Function::iterator bit = fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;begin(), ebit = fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;end();</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; bit != ebit; ++bit)</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; {</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>&amp; bb = *bit;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">if</span> (bb.hasName())</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; Out &lt;&lt; bb.getName() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">PHISet</a>&amp; phiSet = <a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(&amp;bb);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">for</span>(PHISet::iterator pi = phiSet.begin(), epi = phiSet.end(); pi !=epi; ++pi)</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; (*pi)-&gt;dump();</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; }</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordtype">bool</span> last_is_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">for</span> (BasicBlock::iterator it = bb.begin(), eit = bb.end();</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; {</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&amp; inst = *it;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordtype">bool</span> isAppCall = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(&amp;inst) &amp;&amp; !<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(&amp;inst);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">if</span> (isAppCall || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">isHeapAllocExtCall</a>(&amp;inst))</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; {</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">getCallBlockNode</a>(&amp;inst);</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">hasMU</a>(cs))</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; {</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">if</span> (!last_is_chi)</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; Out &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; }</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">for</span> (MUSet::iterator mit = <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(cs).begin(), emit = <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(cs).end();</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; mit != emit; ++mit)</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; {</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; (*mit)-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a3c193da05d6dee7313a141ae3ab43e97">dump</a>();</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; }</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; Out &lt;&lt; inst &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">hasCHI</a>(cs))</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; {</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">for</span> (CHISet::iterator cit = <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(cs).begin(), ecit = <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(cs).end();</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; cit != ecit; ++cit)</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; {</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; (*cit)-&gt;dump();</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; Out &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; last_is_chi = <span class="keyword">true</span>;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; }</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; last_is_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; }</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; {</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordtype">bool</span> dump_preamble = <span class="keyword">false</span>;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a45f8ece590b091bd5ebf87f820f28f44">PAGEdgeList</a>&amp; pagEdgeList = <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#a820e30118868947b62f0a558da5512fc">getPAGEdgesFromInst</a>(&amp;inst);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">for</span>(PAGEdgeList::const_iterator bit = pagEdgeList.begin(), ebit= pagEdgeList.end();</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; bit!=ebit; ++bit)</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; {</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *bit;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</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;(edge))</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; {</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MUSet</a>&amp; muSet = <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(load);</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">for</span>(MUSet::iterator it = muSet.begin(), eit = muSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; {</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">if</span> (!dump_preamble &amp;&amp; !last_is_chi)</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; Out &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; dump_preamble = <span class="keyword">true</span>;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; }</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; (*it)-&gt;dump();</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; }</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; }</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; Out &lt;&lt; inst &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordtype">bool</span> has_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">for</span>(PAGEdgeList::const_iterator bit = pagEdgeList.begin(), ebit= pagEdgeList.end();</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; bit!=ebit; ++bit)</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; {</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *bit;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</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;(edge))</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; {</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">CHISet</a>&amp; chiSet = <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(store);</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator it = chiSet.begin(), eit = chiSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; {</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; has_chi = <span class="keyword">true</span>;</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; (*it)-&gt;dump();</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; }</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; }</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; }</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">if</span> (has_chi)</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; {</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; Out &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; last_is_chi = <span class="keyword">true</span>;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; }</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; last_is_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; }</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; }</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="comment">// dump return mu nodes</span></div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f">hasReturnMu</a>(fun))</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; {</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MUSet</a> &amp; return_mus = <a class="code" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93">getReturnMuSet</a>(fun);</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">for</span> (MUSet::iterator mu_it = return_mus.begin(); mu_it != return_mus.end(); mu_it++)</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; (*mu_it)-&gt;dump();</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; }</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; }</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; }</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;}</div><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>
1674
- <div class="ttc" id="classSVF_1_1MemSSA_html_a45f8ece590b091bd5ebf87f820f28f44"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a45f8ece590b091bd5ebf87f820f28f44">SVF::MemSSA::PAGEdgeList</a></div><div class="ttdeci">SVFIR::PAGEdgeList PAGEdgeList</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>
1673
+ <div class="fragment"><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;{</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVFModule::iterator</a> fit = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>()-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), efit = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>()-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>();</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; fit != efit; ++fit)</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = *fit;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a4ac0e6b77fc9ccc18b269268b3cd046d">Options::MSSAFun</a>!=<span class="stringliteral">&quot;&quot;</span> &amp;&amp; <a class="code" href="classSVF_1_1Options.html#a4ac0e6b77fc9ccc18b269268b3cd046d">Options::MSSAFun</a>!=fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">getName</a>())</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; Out &lt;&lt; <span class="stringliteral">&quot;==========FUNCTION: &quot;</span> &lt;&lt; fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">getName</a>() &lt;&lt; <span class="stringliteral">&quot;==========\n&quot;</span>;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="comment">// dump function entry chi nodes</span></div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#aec75259d035e3b5589e6fcbbcdfe4b2c">hasFuncEntryChi</a>(fun))</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; {</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">CHISet</a> &amp; entry_chis = <a class="code" href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800">getFuncEntryChiSet</a>(fun);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">for</span> (CHISet::iterator chi_it = entry_chis.begin(); chi_it != entry_chis.end(); chi_it++)</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; (*chi_it)-&gt;dump();</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; }</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; }</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">for</span> (Function::iterator bit = fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;begin(), ebit = fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;end();</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; bit != ebit; ++bit)</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; {</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>&amp; bb = *bit;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">if</span> (bb.hasName())</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; Out &lt;&lt; bb.getName() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">PHISet</a>&amp; phiSet = <a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(&amp;bb);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">for</span>(PHISet::iterator pi = phiSet.begin(), epi = phiSet.end(); pi !=epi; ++pi)</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; (*pi)-&gt;dump();</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; }</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordtype">bool</span> last_is_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">for</span> (BasicBlock::iterator it = bb.begin(), eit = bb.end();</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; {</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&amp; inst = *it;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordtype">bool</span> isAppCall = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(&amp;inst) &amp;&amp; !<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(&amp;inst);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">if</span> (isAppCall || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">isHeapAllocExtCall</a>(&amp;inst))</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; {</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">getCallBlockNode</a>(&amp;inst);</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">hasMU</a>(cs))</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; {</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">if</span> (!last_is_chi)</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; Out &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; }</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">for</span> (MUSet::iterator mit = <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(cs).begin(), emit = <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(cs).end();</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; mit != emit; ++mit)</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; {</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; (*mit)-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a3c193da05d6dee7313a141ae3ab43e97">dump</a>();</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; }</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; Out &lt;&lt; inst &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">hasCHI</a>(cs))</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; {</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">for</span> (CHISet::iterator cit = <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(cs).begin(), ecit = <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(cs).end();</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; cit != ecit; ++cit)</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; {</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; (*cit)-&gt;dump();</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; Out &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; last_is_chi = <span class="keyword">true</span>;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; }</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; last_is_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; }</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; {</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordtype">bool</span> dump_preamble = <span class="keyword">false</span>;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVFStmtList</a>&amp; pagEdgeList = <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#acc78a116ca0be01a359d1313b2ae603c">getPAGEdgesFromInst</a>(&amp;inst);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">for</span>(SVFStmtList::const_iterator bit = pagEdgeList.begin(), ebit= pagEdgeList.end();</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; bit!=ebit; ++bit)</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; {</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *bit;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</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;(edge))</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; {</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MUSet</a>&amp; muSet = <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(load);</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">for</span>(MUSet::iterator it = muSet.begin(), eit = muSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; {</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">if</span> (!dump_preamble &amp;&amp; !last_is_chi)</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; Out &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; dump_preamble = <span class="keyword">true</span>;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; }</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; (*it)-&gt;dump();</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; }</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; }</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; Out &lt;&lt; inst &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordtype">bool</span> has_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">for</span>(SVFStmtList::const_iterator bit = pagEdgeList.begin(), ebit= pagEdgeList.end();</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; bit!=ebit; ++bit)</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; {</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *bit;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</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;(edge))</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; {</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">CHISet</a>&amp; chiSet = <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(store);</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator it = chiSet.begin(), eit = chiSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; {</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; has_chi = <span class="keyword">true</span>;</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; (*it)-&gt;dump();</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; }</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; }</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; }</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">if</span> (has_chi)</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; {</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; Out &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; last_is_chi = <span class="keyword">true</span>;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; }</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; last_is_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; }</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; }</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="comment">// dump return mu nodes</span></div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f">hasReturnMu</a>(fun))</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; {</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MUSet</a> &amp; return_mus = <a class="code" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93">getReturnMuSet</a>(fun);</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">for</span> (MUSet::iterator mu_it = return_mus.begin(); mu_it != return_mus.end(); mu_it++)</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; (*mu_it)-&gt;dump();</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; }</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; }</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; }</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;}</div><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>
1675
1674
  <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
1676
1675
  <div class="ttc" id="classSVF_1_1SVFModule_html_a5486697889c6cca4f9f426650defc255"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">SVF::SVFModule::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00152">SVFModule.h:152</a></div></div>
1677
1676
  <div class="ttc" id="classSVF_1_1ICFG_html_a7d10e8a815c836a070d35850f817a18c"><div class="ttname"><a href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">SVF::ICFG::getCallBlockNode</a></div><div class="ttdeci">CallBlockNode * getCallBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00197">ICFG.cpp:197</a></div></div>
@@ -1679,31 +1678,32 @@ Private Attributes</h2></td></tr>
1679
1678
  <div class="ttc" id="classSVF_1_1MemSSA_html_a964f3fe39ece9a7b8b2033428b75a274"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">SVF::MemSSA::getPHISet</a></div><div class="ttdeci">PHISet &amp; getPHISet(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00404">MemSSA.h:404</a></div></div>
1680
1679
  <div class="ttc" id="classSVF_1_1SVFValue_html_adc15c1f7a77158142156fba7524e89c9"><div class="ttname"><a href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">SVF::SVFValue::getName</a></div><div class="ttdeci">const llvm::StringRef getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00231">SVFBasicTypes.h:231</a></div></div>
1681
1680
  <div class="ttc" id="classSVF_1_1Options_html_a4ac0e6b77fc9ccc18b269268b3cd046d"><div class="ttname"><a href="classSVF_1_1Options.html#a4ac0e6b77fc9ccc18b269268b3cd046d">SVF::Options::MSSAFun</a></div><div class="ttdeci">static const llvm::cl::opt&lt; std ::string &gt; MSSAFun</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00152">Options.h:152</a></div></div>
1681
+ <div class="ttc" id="classSVF_1_1MRGenerator_html_acc78a116ca0be01a359d1313b2ae603c"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#acc78a116ca0be01a359d1313b2ae603c">SVF::MRGenerator::getPAGEdgesFromInst</a></div><div class="ttdeci">SVFStmtList &amp; getPAGEdgesFromInst(const Instruction *inst)</div><div class="ttdoc">Given an instruction, get all its the PAGEdge (statement) in sequence. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00160">MemRegion.cpp:160</a></div></div>
1682
1682
  <div class="ttc" id="classSVF_1_1MemSSA_html_a468e1481926df6865678b7232bb79bf3"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">SVF::MemSSA::pta</a></div><div class="ttdeci">BVDataPTAImpl * pta</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00115">MemSSA.h:115</a></div></div>
1683
1683
  <div class="ttc" id="classSVF_1_1MemSSA_html_af9cf084e3070456d8cca491e1391b0c4"><div class="ttname"><a href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">SVF::MemSSA::CHISet</a></div><div class="ttdeci">Set&lt; CHI * &gt; CHISet</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00065">MemSSA.h:65</a></div></div>
1684
1684
  <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>
1685
1685
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ad8b71cebf46deaf60e2cd4f6d6bb9433"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">SVF::PointerAnalysis::getModule</a></div><div class="ttdeci">SVFModule * getModule() const</div><div class="ttdoc">Module. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00217">PointerAnalysis.h:217</a></div></div>
1686
1686
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
1687
1687
  <div class="ttc" id="classSVF_1_1MemSSA_html_a81bba824495a882b49e687683954b112"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">SVF::MemSSA::MUSet</a></div><div class="ttdeci">Set&lt; MU * &gt; MUSet</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00064">MemSSA.h:64</a></div></div>
1688
- <div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00628">SVFStatements.h:628</a></div></div>
1688
+ <div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00633">SVFStatements.h:633</a></div></div>
1689
1689
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a240219c2dc4f5cc5f85445e18c79b83b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">SVF::PointerAnalysis::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00205">PointerAnalysis.h:205</a></div></div>
1690
1690
  <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>
1691
1691
  <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>
1692
1692
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a93ac673b885633849fa484938405ca75"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">SVF::SVFUtil::isHeapAllocExtCall</a></div><div class="ttdeci">bool isHeapAllocExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00115">LLVMUtil.h:115</a></div></div>
1693
1693
  <div class="ttc" id="classSVF_1_1MemSSA_html_a3400d9a921672b3872656acecc3eac9f"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f">SVF::MemSSA::hasReturnMu</a></div><div class="ttdeci">bool hasReturnMu(const SVFFunction *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00371">MemSSA.h:371</a></div></div>
1694
- <div class="ttc" id="classSVF_1_1MRGenerator_html_a820e30118868947b62f0a558da5512fc"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a820e30118868947b62f0a558da5512fc">SVF::MRGenerator::getPAGEdgesFromInst</a></div><div class="ttdeci">PAGEdgeList &amp; getPAGEdgesFromInst(const Instruction *inst)</div><div class="ttdoc">Given an instruction, get all its the PAGEdge (statement) in sequence. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00160">MemRegion.cpp:160</a></div></div>
1695
1694
  <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00249">BasicTypes.h:249</a></div></div>
1696
1695
  <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>
1697
1696
  <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>
1698
1697
  <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>
1699
1698
  <div class="ttc" id="classSVF_1_1SVFModule_html_a58d03edb6ff85f4943135478f113df31"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">SVF::SVFModule::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00160">SVFModule.h:160</a></div></div>
1700
- <div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00591">SVFStatements.h:591</a></div></div>
1699
+ <div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00596">SVFStatements.h:596</a></div></div>
1701
1700
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8d8216a92140d982303f83ea424ddc91"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVF::SVFUtil::isNonInstricCallSite</a></div><div class="ttdeci">bool isNonInstricCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls...</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00206">SVFUtil.h:206</a></div></div>
1702
1701
  <div class="ttc" id="classSVF_1_1SVFModule_html_a709371b13dcf500277f8bc275bdb23c7"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVF::SVFModule::iterator</a></div><div class="ttdeci">FunctionSetType::iterator iterator</div><div class="ttdoc">Iterators type def. </div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00051">SVFModule.h:51</a></div></div>
1703
1702
  <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>
1704
1703
  <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>
1705
1704
  <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>
1706
- <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00133">SVFIR.h:133</a></div></div>
1705
+ <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
1706
+ <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>
1707
1707
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00063">LLVMUtil.h:63</a></div></div>
1708
1708
  <div class="ttc" id="classSVF_1_1ICFGNode_html_a3c193da05d6dee7313a141ae3ab43e97"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a3c193da05d6dee7313a141ae3ab43e97">SVF::ICFGNode::dump</a></div><div class="ttdeci">void dump() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00068">ICFG.cpp:68</a></div></div>
1709
1709
  <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>
@@ -3057,9 +3057,8 @@ Private Attributes</h2></td></tr>
3057
3057
  <p>Renaming for each memory regions See the renaming algorithm in book Engineering A Compiler (Figure 9.12) </p>
3058
3058
 
3059
3059
  <p class="definition">Definition at line <a class="el" href="MemSSA_8cpp_source.html#l00279">279</a> of file <a class="el" href="MemSSA_8cpp_source.html">MemSSA.cpp</a>.</p>
3060
- <div class="fragment"><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;{</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="comment">// record which mem region needs to pop stack</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e">MRVector</a> memRegs;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="comment">// rename phi result op</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="comment">// for each r = phi (...)</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// rewrite r as new name</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298">hasPHISet</a>(&amp;bb))</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3">RenamePhiRes</a>(<a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(&amp;bb),memRegs);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="comment">// process mu and chi</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="comment">// for each mu(r)</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="comment">// rewrite r with top mrver of stack(r)</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="comment">// for each r = chi(r&#39;)</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="comment">// rewrite r&#39; with top mrver of stack(r)</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="comment">// rewrite r with new name</span></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="keywordflow">for</span> (BasicBlock::const_iterator it = bb.begin(), eit = bb.end();</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; it != eit; ++it)</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">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &amp;*it;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#a8832a53d8f6a5eb0a07551ca19c5513d">hasPAGEdgeList</a>(inst))</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a45f8ece590b091bd5ebf87f820f28f44">PAGEdgeList</a>&amp; pagEdgeList = <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#a820e30118868947b62f0a558da5512fc">getPAGEdgesFromInst</a>(inst);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">for</span>(PAGEdgeList::const_iterator bit = pagEdgeList.begin(), ebit= pagEdgeList.end();</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; bit!=ebit; ++bit)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst = *bit;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</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="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(load));</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">else</span> <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;(inst))</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">RenameChiSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(store),memRegs);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">getCallBlockNode</a>(inst);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#aeed8bcf54d2a72c640e464e256249630">hasRefMRSet</a>(cs))</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(cs));</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#a8868281e5f5b5f3a83acf8568971ad40">hasModMRSet</a>(cs))</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">RenameChiSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(cs),memRegs);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#abd525a2e3b7b9167b61b2304cc2cbdf2">isReturn</a>(inst))</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(bb.getParent());</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93">getReturnMuSet</a>(fun));</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</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; <span class="comment">// fill phi operands of succ basic blocks</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> sit = succ_begin(&amp;bb), esit = succ_end(&amp;bb);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; sit != esit; ++sit)</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ = *sit;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae40e2e043b04ede541688ce61048fb4e">getBBPredecessorPos</a>(&amp;bb, succ);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298">hasPHISet</a>(succ))</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a0ed34f7a27db045c624c5db61d53132b">RenamePhiOps</a>(<a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(succ),pos,memRegs);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="comment">// for succ basic block in dominator tree</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(bb.getParent());</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* <a class="code" href="classSVF_1_1MemSSA.html#a52b1598f44fe6a6e30095f596bf85cb0">dt</a> = <a class="code" href="classSVF_1_1MemSSA.html#a9741a8d0540ba4c27cb667590d246197">getDT</a>(*fun);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a> *dtNode = dt-&gt;getNode(const_cast&lt;BasicBlock*&gt;(&amp;bb)))</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">for</span> (DomTreeNode::iterator DI = dtNode-&gt;begin(), DE = dtNode-&gt;end();</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; DI != DE; ++DI)</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a271c20725d49dd65b95c062938ffde4c">SSARenameBB</a>(*((*DI)-&gt;getBlock()));</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="comment">// for each r = chi(..), and r = phi(..)</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="comment">// pop ver stack(r)</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">while</span> (!memRegs.empty())</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr = memRegs.back();</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; memRegs.pop_back();</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d">mr2VerStackMap</a>[mr].pop_back();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;}</div><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>
3060
+ <div class="fragment"><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;{</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="comment">// record which mem region needs to pop stack</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e">MRVector</a> memRegs;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="comment">// rename phi result op</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="comment">// for each r = phi (...)</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// rewrite r as new name</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298">hasPHISet</a>(&amp;bb))</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3">RenamePhiRes</a>(<a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(&amp;bb),memRegs);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="comment">// process mu and chi</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="comment">// for each mu(r)</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="comment">// rewrite r with top mrver of stack(r)</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="comment">// for each r = chi(r&#39;)</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="comment">// rewrite r&#39; with top mrver of stack(r)</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="comment">// rewrite r with new name</span></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="keywordflow">for</span> (BasicBlock::const_iterator it = bb.begin(), eit = bb.end();</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; it != eit; ++it)</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">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &amp;*it;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#a6f631290f3da7c308395eb6a9472d7a5">hasSVFStmtList</a>(inst))</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVFStmtList</a>&amp; pagEdgeList = <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#acc78a116ca0be01a359d1313b2ae603c">getPAGEdgesFromInst</a>(inst);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">for</span>(SVFStmtList::const_iterator bit = pagEdgeList.begin(), ebit= pagEdgeList.end();</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; bit!=ebit; ++bit)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst = *bit;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</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="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(load));</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">else</span> <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;(inst))</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">RenameChiSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(store),memRegs);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">getCallBlockNode</a>(inst);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#aeed8bcf54d2a72c640e464e256249630">hasRefMRSet</a>(cs))</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(cs));</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#a8868281e5f5b5f3a83acf8568971ad40">hasModMRSet</a>(cs))</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">RenameChiSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(cs),memRegs);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#abd525a2e3b7b9167b61b2304cc2cbdf2">isReturn</a>(inst))</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(bb.getParent());</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93">getReturnMuSet</a>(fun));</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</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; <span class="comment">// fill phi operands of succ basic blocks</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> sit = succ_begin(&amp;bb), esit = succ_end(&amp;bb);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; sit != esit; ++sit)</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ = *sit;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae40e2e043b04ede541688ce61048fb4e">getBBPredecessorPos</a>(&amp;bb, succ);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298">hasPHISet</a>(succ))</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a0ed34f7a27db045c624c5db61d53132b">RenamePhiOps</a>(<a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(succ),pos,memRegs);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="comment">// for succ basic block in dominator tree</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(bb.getParent());</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* <a class="code" href="classSVF_1_1MemSSA.html#a52b1598f44fe6a6e30095f596bf85cb0">dt</a> = <a class="code" href="classSVF_1_1MemSSA.html#a9741a8d0540ba4c27cb667590d246197">getDT</a>(*fun);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a> *dtNode = dt-&gt;getNode(const_cast&lt;BasicBlock*&gt;(&amp;bb)))</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">for</span> (DomTreeNode::iterator DI = dtNode-&gt;begin(), DE = dtNode-&gt;end();</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; DI != DE; ++DI)</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a271c20725d49dd65b95c062938ffde4c">SSARenameBB</a>(*((*DI)-&gt;getBlock()));</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="comment">// for each r = chi(..), and r = phi(..)</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="comment">// pop ver stack(r)</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">while</span> (!memRegs.empty())</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr = memRegs.back();</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; memRegs.pop_back();</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d">mr2VerStackMap</a>[mr].pop_back();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;}</div><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>
3061
3061
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a8868281e5f5b5f3a83acf8568971ad40"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a8868281e5f5b5f3a83acf8568971ad40">SVF::MRGenerator::hasModMRSet</a></div><div class="ttdeci">bool hasModMRSet(const CallBlockNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00455">MemRegion.h:455</a></div></div>
3062
- <div class="ttc" id="classSVF_1_1MemSSA_html_a45f8ece590b091bd5ebf87f820f28f44"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a45f8ece590b091bd5ebf87f820f28f44">SVF::MemSSA::PAGEdgeList</a></div><div class="ttdeci">SVFIR::PAGEdgeList PAGEdgeList</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>
3063
3062
  <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
3064
3063
  <div class="ttc" id="classSVF_1_1ICFG_html_a7d10e8a815c836a070d35850f817a18c"><div class="ttname"><a href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">SVF::ICFG::getCallBlockNode</a></div><div class="ttdeci">CallBlockNode * getCallBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00197">ICFG.cpp:197</a></div></div>
3065
3064
  <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>
@@ -3068,26 +3067,26 @@ Private Attributes</h2></td></tr>
3068
3067
  <div class="ttc" id="classSVF_1_1MRGenerator_html_aeed8bcf54d2a72c640e464e256249630"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#aeed8bcf54d2a72c640e464e256249630">SVF::MRGenerator::hasRefMRSet</a></div><div class="ttdeci">bool hasRefMRSet(const CallBlockNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00451">MemRegion.h:451</a></div></div>
3069
3068
  <div class="ttc" id="classSVF_1_1MemSSA_html_a964f3fe39ece9a7b8b2033428b75a274"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">SVF::MemSSA::getPHISet</a></div><div class="ttdeci">PHISet &amp; getPHISet(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00404">MemSSA.h:404</a></div></div>
3070
3069
  <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>
3070
+ <div class="ttc" id="classSVF_1_1MRGenerator_html_acc78a116ca0be01a359d1313b2ae603c"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#acc78a116ca0be01a359d1313b2ae603c">SVF::MRGenerator::getPAGEdgesFromInst</a></div><div class="ttdeci">SVFStmtList &amp; getPAGEdgesFromInst(const Instruction *inst)</div><div class="ttdoc">Given an instruction, get all its the PAGEdge (statement) in sequence. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00160">MemRegion.cpp:160</a></div></div>
3071
3071
  <div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00209">BasicTypes.h:209</a></div></div>
3072
3072
  <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>
3073
3073
  <div class="ttc" id="classSVF_1_1MemSSA_html_a468e1481926df6865678b7232bb79bf3"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">SVF::MemSSA::pta</a></div><div class="ttdeci">BVDataPTAImpl * pta</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00115">MemSSA.h:115</a></div></div>
3074
+ <div class="ttc" id="classSVF_1_1MRGenerator_html_a6f631290f3da7c308395eb6a9472d7a5"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a6f631290f3da7c308395eb6a9472d7a5">SVF::MRGenerator::hasSVFStmtList</a></div><div class="ttdeci">bool hasSVFStmtList(const Instruction *inst)</div><div class="ttdoc">Whether this instruction has SVFIR Edge. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00151">MemRegion.cpp:151</a></div></div>
3074
3075
  <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>
3075
3076
  <div class="ttc" id="classSVF_1_1MemSSA_html_a6066364112e665c33cbf2ec50ae1e3a8"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">SVF::MemSSA::RenameChiSet</a></div><div class="ttdeci">void RenameChiSet(const CHISet &amp;chiSet, MRVector &amp;memRegs)</div><div class="ttdoc">Rename chi set. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00254">MemSSA.h:254</a></div></div>
3076
3077
  <div class="ttc" id="namespaceSVF_html_a827d09974dc7bf0849f96823cc2fee89"><div class="ttname"><a href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">SVF::DomTreeNode</a></div><div class="ttdeci">llvm::DomTreeNode DomTreeNode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00199">BasicTypes.h:199</a></div></div>
3077
3078
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
3078
- <div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00628">SVFStatements.h:628</a></div></div>
3079
+ <div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00633">SVFStatements.h:633</a></div></div>
3079
3080
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a240219c2dc4f5cc5f85445e18c79b83b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">SVF::PointerAnalysis::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00205">PointerAnalysis.h:205</a></div></div>
3080
- <div class="ttc" id="classSVF_1_1MRGenerator_html_a8832a53d8f6a5eb0a07551ca19c5513d"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a8832a53d8f6a5eb0a07551ca19c5513d">SVF::MRGenerator::hasPAGEdgeList</a></div><div class="ttdeci">bool hasPAGEdgeList(const Instruction *inst)</div><div class="ttdoc">Whether this instruction has SVFIR Edge. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00151">MemRegion.cpp:151</a></div></div>
3081
3081
  <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>
3082
3082
  <div class="ttc" id="classSVF_1_1MemSSA_html_a271c20725d49dd65b95c062938ffde4c"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a271c20725d49dd65b95c062938ffde4c">SVF::MemSSA::SSARenameBB</a></div><div class="ttdeci">virtual void SSARenameBB(const BasicBlock &amp;bb)</div><div class="ttdoc">SSA rename for a basic block. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00279">MemSSA.cpp:279</a></div></div>
3083
3083
  <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>
3084
- <div class="ttc" id="classSVF_1_1MRGenerator_html_a820e30118868947b62f0a558da5512fc"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a820e30118868947b62f0a558da5512fc">SVF::MRGenerator::getPAGEdgesFromInst</a></div><div class="ttdeci">PAGEdgeList &amp; getPAGEdgesFromInst(const Instruction *inst)</div><div class="ttdoc">Given an instruction, get all its the PAGEdge (statement) in sequence. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00160">MemRegion.cpp:160</a></div></div>
3085
3084
  <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>
3086
3085
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
3087
3086
  <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>
3088
3087
  <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>
3089
3088
  <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>
3090
- <div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00591">SVFStatements.h:591</a></div></div>
3089
+ <div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00596">SVFStatements.h:596</a></div></div>
3091
3090
  <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>
3092
3091
  <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>
3093
3092
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8d8216a92140d982303f83ea424ddc91"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVF::SVFUtil::isNonInstricCallSite</a></div><div class="ttdeci">bool isNonInstricCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls...</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00206">SVFUtil.h:206</a></div></div>
@@ -3095,8 +3094,9 @@ Private Attributes</h2></td></tr>
3095
3094
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_abd525a2e3b7b9167b61b2304cc2cbdf2"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#abd525a2e3b7b9167b61b2304cc2cbdf2">SVF::SVFUtil::isReturn</a></div><div class="ttdeci">bool isReturn(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a return instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00213">SVFUtil.h:213</a></div></div>
3096
3095
  <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>
3097
3096
  <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>
3098
- <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00133">SVFIR.h:133</a></div></div>
3097
+ <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
3099
3098
  <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>
3099
+ <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>
3100
3100
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a547b3bc62de65b9dbfc6dee55c063dd7"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">const SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00112">LLVMModule.h:112</a></div></div>
3101
3101
  <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>
3102
3102
  </div><!-- fragment -->