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
@@ -66,7 +66,7 @@ $(function() {
66
66
  <div class="title">MemRegion.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="MemRegion_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- MemRegion.h -- Memory region -----------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * MemoryRegion.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Jul 14, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef MEMORYREGION_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define MEMORYREGION_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFIR_8h.html">MemoryModel/SVFIR.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PTACallGraph_8h.html">Graphs/PTACallGraph.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SCC_8h.html">Util/SCC.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="WorkList_8h.html">Util/WorkList.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ICFG_8h.html">Graphs/ICFG.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a1ed5cfc8a00b2d3b90e74debabaa62a5"> 44</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="namespaceSVF.html#a1ed5cfc8a00b2d3b90e74debabaa62a5">MRID</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a0039280e908258b8e73779de51e9f63b"> 47</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="namespaceSVF.html#a0039280e908258b8e73779de51e9f63b">MRVERID</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a39df0130e37e97db2ff7620bbb2a72f5"> 48</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="namespaceSVF.html#a39df0130e37e97db2ff7620bbb2a72f5">MRVERSION</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html"> 51</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#a7ed54700c976f9738012bc051b7f41f5"> 55</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemRegion.html#a7ed54700c976f9738012bc051b7f41f5">Condition</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#a8556bee344c108815adad4a405ac0ffb"> 58</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1MemRegion.html#a8556bee344c108815adad4a405ac0ffb">totalMRNum</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#aeb8ba1e0c907aeb3de84d8bd899c98b4"> 59</a></span>&#160; MRID <a class="code" href="classSVF_1_1MemRegion.html#aeb8ba1e0c907aeb3de84d8bd899c98b4">rid</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#a77a18bcce56cf48d1c338e852a2be9bc"> 60</a></span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1MemRegion.html#a77a18bcce56cf48d1c338e852a2be9bc">cptsSet</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#a1d8189977196da687f50cfa6df98394b"> 64</a></span>&#160; <a class="code" href="classSVF_1_1MemRegion.html#a1d8189977196da687f50cfa6df98394b">MemRegion</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cp) :</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; rid(++totalMRNum), cptsSet(cp)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#a2f680d13f4d983b1bc96967c930e8bd9"> 69</a></span>&#160; <a class="code" href="classSVF_1_1MemRegion.html#a2f680d13f4d983b1bc96967c930e8bd9">~MemRegion</a>()</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#a7d38f6ef18106eb388b3a289aad79802"> 74</a></span>&#160; <span class="keyword">inline</span> MRID <a class="code" href="classSVF_1_1MemRegion.html#a7d38f6ef18106eb388b3a289aad79802">getMRID</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemRegion.html#aeb8ba1e0c907aeb3de84d8bd899c98b4">rid</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1"> 79</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemRegion.html#a77a18bcce56cf48d1c338e852a2be9bc">cptsSet</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#affa3a8efd91faf5704e514f1e83fead9"> 84</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemRegion.html#affa3a8efd91faf5704e514f1e83fead9">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> this-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>() == rhs-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#adad8c2b08ab6a512f0c3aa90b4416f60"> 89</a></span>&#160; <span class="keyword">inline</span> std::string <a class="code" href="classSVF_1_1MemRegion.html#adad8c2b08ab6a512f0c3aa90b4416f60">dumpStr</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; std::string str;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; str += <span class="stringliteral">&quot;pts{&quot;</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">for</span> (NodeBS::iterator ii = cptsSet.begin(), ie = cptsSet.end();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; ii != ie; ii++)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">char</span> int2str[16];</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; sprintf(int2str, <span class="stringliteral">&quot;%d&quot;</span>, *ii);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; str += int2str;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; str += <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; str += <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> str;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="structSVF_1_1MemRegion_1_1equalMemRegion.html"> 108</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structSVF_1_1MemRegion_1_1equalMemRegion.html">equalMemRegion</a></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="structSVF_1_1MemRegion_1_1equalMemRegion.html#a3cd8165dfa543312d2b3bfa798b6154b"> 110</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1MemRegion_1_1equalMemRegion.html#a3cd8165dfa543312d2b3bfa798b6154b">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8f749354b7e882ef3e5bf5081fa715b5">SVFUtil::cmpNodeBS</a>(lhs-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>(), rhs-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>());</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; } <a class="code" href="classSVF_1_1MemRegion.html#af0a0b4a5862a136ef4f203f19139da65">equalMemRegion</a>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#a99f106d47fd67f1ae53e144d72a223c9"> 118</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemRegion.html#a99f106d47fd67f1ae53e144d72a223c9">getRegionSize</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span> cptsSet.count();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;};</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html"> 127</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a></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;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a68d50c752252bd40c402c7b99b95f0fc"> 131</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;NodeID&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a68d50c752252bd40c402c7b99b95f0fc">WorkList</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;const MemRegion*, MemRegion::equalMemRegion&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRSet</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a82be01b460a498c07fb6a8aba853ed31"> 138</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const PAGEdge*, const SVFFunction*&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a82be01b460a498c07fb6a8aba853ed31">PAGEdgeToFunMap</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e"> 139</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;NodeBS, SVFUtil::equalNodeBS&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">PointsToList</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ad492e2940936fc7df06127f0cb94d47a"> 140</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, NodeBS&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#ad492e2940936fc7df06127f0cb94d47a">FunToPointsToMap</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a6b8bbb60126105cc77c1a6a4c46677fd"> 141</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, PointsToList&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a6b8bbb60126105cc77c1a6a4c46677fd">FunToPointsTosMap</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a665836fd866c6393fc4a251eb4929dae"> 142</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;NodeBS, NodeBS, SVFUtil::equalNodeBS&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a665836fd866c6393fc4a251eb4929dae">PtsToRepPtsSetMap</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a090070379a09460aef0c07270d32d27b"> 145</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, MRSet&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a090070379a09460aef0c07270d32d27b">FunToMRsMap</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a273b2634adcfa10a08924517e8d51175"> 149</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const LoadStmt*, MRSet&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a273b2634adcfa10a08924517e8d51175">LoadsToMRsMap</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#afacb458ca832ef459e873b7d90134a8c"> 150</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const StoreStmt*, MRSet&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#afacb458ca832ef459e873b7d90134a8c">StoresToMRsMap</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a71b5ce2c754ffff5a84fdb0c3aa16819"> 151</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallBlockNode*, MRSet&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a71b5ce2c754ffff5a84fdb0c3aa16819">CallSiteToMRsMap</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</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"><a class="line" href="classSVF_1_1MRGenerator.html#acfadd565b5c978c9417e059b3ea7588c"> 156</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const LoadStmt*, NodeBS&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#acfadd565b5c978c9417e059b3ea7588c">LoadsToPointsToMap</a>;</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a357e1654e30b2f91f6ea30ea5a52e91d"> 157</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const StoreStmt*, NodeBS&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a357e1654e30b2f91f6ea30ea5a52e91d">StoresToPointsToMap</a>;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a9d22e9d113393c536c5fe473fd76f388"> 158</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallBlockNode*, NodeBS&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a9d22e9d113393c536c5fe473fd76f388">CallSiteToPointsToMap</a>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, NodeBS&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#ab01e492f002c73e2c89eb0b4c8f9647d">FunToNodeBSMap</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a55ca7850e00f57a8a4b83bc969493046"> 166</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallBlockNode*, NodeBS&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a55ca7850e00f57a8a4b83bc969493046">CallSiteToNodeBSMap</a>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ab075a7c7fbc60f678b3fee8bbc06194d"> 169</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, NodeBS&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#ab075a7c7fbc60f678b3fee8bbc06194d">NodeToPTSSMap</a>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#aad6c5bb3abf7449b36b2ec51c4f35f6c"> 172</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SVFIR.html#a896b591a710148fad7705a0d88652976">SVFIR::PAGEdgeList</a> <a class="code" href="classSVF_1_1MRGenerator.html#aad6c5bb3abf7449b36b2ec51c4f35f6c">PAGEdgeList</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#af8d52e6c9884c6e1abc6dbcbc5e32629"> 174</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SCCDetection.html">SCCDetection&lt;PTACallGraph*&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#af8d52e6c9884c6e1abc6dbcbc5e32629">SCC</a>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a1f69924c587c4e68a029fd4e86cffacf"> 176</a></span>&#160; MRSet&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a1f69924c587c4e68a029fd4e86cffacf">getMRSet</a>()</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> memRegSet;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a98b3481580be48cff7e93bf3c8a29dac"> 182</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a98b3481580be48cff7e93bf3c8a29dac">getRepPointsTo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts)<span class="keyword"> const</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; PtsToRepPtsSetMap::const_iterator it = cptsToRepCPtsMap.find(cpts);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=cptsToRepCPtsMap.end() &amp;&amp; <span class="stringliteral">&quot;can not find superset of cpts??&quot;</span>);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* getMR(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts) <span class="keyword">const</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#afb7ce3a24edda14895999eb15231daff"> 193</a></span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="classSVF_1_1MRGenerator.html#afb7ce3a24edda14895999eb15231daff">pta</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#aa3a12cf1f761d25b9213bc6e50d89ba5"> 194</a></span>&#160; SCC* <a class="code" href="classSVF_1_1MRGenerator.html#aa3a12cf1f761d25b9213bc6e50d89ba5">callGraphSCC</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a05005a166c39b1adea492655d77db519"> 195</a></span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1MRGenerator.html#a05005a166c39b1adea492655d77db519">callGraph</a>;</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a6a62d2dede5d2506c19b2d058d1cd9d3"> 196</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MRGenerator.html#a6a62d2dede5d2506c19b2d058d1cd9d3">ptrOnlyMSSA</a>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a3e74c3706ffcc14f378771b417dcbb96"> 199</a></span>&#160; FunToMRsMap <a class="code" href="classSVF_1_1MRGenerator.html#a3e74c3706ffcc14f378771b417dcbb96">funToMRsMap</a>;</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a0d8229b1f0b8428708e923d19096e4ba"> 201</a></span>&#160; LoadsToMRsMap <a class="code" href="classSVF_1_1MRGenerator.html#a0d8229b1f0b8428708e923d19096e4ba">loadsToMRsMap</a>;</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a255551fd3ff8fb33bcea93d0b00280b3"> 203</a></span>&#160; StoresToMRsMap <a class="code" href="classSVF_1_1MRGenerator.html#a255551fd3ff8fb33bcea93d0b00280b3">storesToMRsMap</a>;</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a7a7ed21181c2486b60170a479a5a534e"> 205</a></span>&#160; CallSiteToMRsMap <a class="code" href="classSVF_1_1MRGenerator.html#a7a7ed21181c2486b60170a479a5a534e">callsiteToRefMRsMap</a>;</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#adf8d477e5f622855799842134145ecc4"> 207</a></span>&#160; CallSiteToMRsMap <a class="code" href="classSVF_1_1MRGenerator.html#adf8d477e5f622855799842134145ecc4">callsiteToModMRsMap</a>;</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#af47e15d6b8c15d547a718f3577513975"> 209</a></span>&#160; LoadsToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#af47e15d6b8c15d547a718f3577513975">loadsToPointsToMap</a>;</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a7d86f708743a59aa31c0a9fd6de45dac"> 211</a></span>&#160; StoresToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#a7d86f708743a59aa31c0a9fd6de45dac">storesToPointsToMap</a>;</div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a34967cda51699f948a581b9f88fa3b10"> 213</a></span>&#160; CallSiteToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#a34967cda51699f948a581b9f88fa3b10">callsiteToRefPointsToMap</a>;</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ab8df193e84009e406c301731d17dc7b9"> 215</a></span>&#160; CallSiteToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#ab8df193e84009e406c301731d17dc7b9">callsiteToModPointsToMap</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a05c7a5ddbe3079f63be76c35298d1c2b"> 218</a></span>&#160; FunToPointsTosMap <a class="code" href="classSVF_1_1MRGenerator.html#a05c7a5ddbe3079f63be76c35298d1c2b">funToPointsToMap</a>;</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ab250a4950269f57027d8e8ef10089f58"> 220</a></span>&#160; PAGEdgeToFunMap <a class="code" href="classSVF_1_1MRGenerator.html#ab250a4950269f57027d8e8ef10089f58">pagEdgeToFunMap</a>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#af6d58e2971c4a8d3ee03f9dfd9072a3a"> 223</a></span>&#160; FunToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#af6d58e2971c4a8d3ee03f9dfd9072a3a">funToRefsMap</a>;</div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a2c94bfa19ad8d1d6360b12693c8b891d"> 225</a></span>&#160; FunToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#a2c94bfa19ad8d1d6360b12693c8b891d">funToModsMap</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ac7b5ca3fd950e1a940f875ac135640f6"> 227</a></span>&#160; CallSiteToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#ac7b5ca3fd950e1a940f875ac135640f6">csToRefsMap</a>;</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a603f993995e7d6961e203a195bb56029"> 229</a></span>&#160; CallSiteToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#a603f993995e7d6961e203a195bb56029">csToModsMap</a>;</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#afe91b57b451d7788364493549e015acf"> 231</a></span>&#160; CallSiteToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#afe91b57b451d7788364493549e015acf">csToCallSiteArgsPtsMap</a>;</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a21550f978f42ac3cbb32cbc426ff5cb1"> 233</a></span>&#160; CallSiteToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#a21550f978f42ac3cbb32cbc426ff5cb1">csToCallSiteRetPtsMap</a>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a0e46c7beb580ace3a652ac9e1c419b48"> 236</a></span>&#160; NodeToPTSSMap <a class="code" href="classSVF_1_1MRGenerator.html#a0e46c7beb580ace3a652ac9e1c419b48">cachedPtsChainMap</a>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#af46b82e45aa1ecdfb397325971206541"> 239</a></span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1MRGenerator.html#af46b82e45aa1ecdfb397325971206541">allGlobals</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordtype">void</span> destroy();</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="comment">//Get all objects might pass into callee from a callsite</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordtype">void</span> collectCallSitePts(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="comment">//Recursive collect points-to chain</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; CollectPtsChain(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a373b57017e99ee8466d1c8a363adaeef"> 251</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a373b57017e99ee8466d1c8a363adaeef">getCallSiteArgsPts</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> csToCallSiteArgsPtsMap[cs];</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#aac03d1d2e10543e100530f99165b4388"> 256</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1MRGenerator.html#aac03d1d2e10543e100530f99165b4388">getCallSiteRetPts</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">return</span> csToCallSiteRetPtsMap[cs];</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordtype">bool</span> isNonLocalObject(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* curFun) <span class="keyword">const</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordtype">void</span> getEscapObjviaGlobals(<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; globs, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; pts);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordtype">void</span> getCallGraphSCCRevTopoOrder(WorkList&amp; worklist);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* p, <span class="keywordtype">bool</span> ptrOnly);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#af94bd8155a23273aab2396334d905119"> 274</a></span>&#160; MRSet <a class="code" href="classSVF_1_1MRGenerator.html#af94bd8155a23273aab2396334d905119">memRegSet</a>;</div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1"> 276</a></span>&#160; PtsToRepPtsSetMap <a class="code" href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">cptsToRepCPtsMap</a>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordtype">void</span> createMR(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordtype">void</span> collectGlobals();</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> collectModRefForLoadStore();</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> collectModRefForCall();</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> partitionMRs();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> updateAliasMRs();</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> sortPointsTo(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a28130cc55ab317d383ba6593f323b12a"> 300</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MRGenerator.html#a28130cc55ab317d383ba6593f323b12a">isAliasedMR</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">return</span> mr-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>().intersects(cpts);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ad740188222439c089907fa6c6c951f02"> 305</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MRGenerator.html#ad740188222439c089907fa6c6c951f02">getAliasMemRegions</a>(MRSet&amp; aliasMRs, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">for</span>(MRSet::const_iterator it = funToMRsMap[fun].begin(), eit = funToMRsMap[fun].end(); it!=eit; ++it)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">if</span>(isAliasedMR(cpts,*it))</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; aliasMRs.insert(*it);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#abe8d6217250d227e743e4b581497aae8"> 315</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MRGenerator.html#abe8d6217250d227e743e4b581497aae8">getMRsForLoad</a>(MRSet&amp; aliasMRs, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>*)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr = getMR(cpts);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; aliasMRs.insert(mr);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a02c60ceb7c9c37bcf83c739aa4083acc"> 322</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MRGenerator.html#a02c60ceb7c9c37bcf83c739aa4083acc">getMRsForCallSiteRef</a>(MRSet&amp; aliasMRs, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>*)</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr = getMR(cpts);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; aliasMRs.insert(mr);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> modRefAnalysis(<a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* callGraphNode, WorkList&amp; worklist);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> handleCallsiteModRef(<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; mod, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; ref, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</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="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#af50efed3af17806a3ba3f668e4466d3e"> 337</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MRGenerator.html#af50efed3af17806a3ba3f668e4466d3e">addCPtsToStore</a>(<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *st, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; storesToPointsToMap[st] = cpts;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; funToPointsToMap[fun].insert(cpts);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; addModSideEffectOfFunction(fun,cpts);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a79a3032b50f7ef905213b770b12e0967"> 343</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MRGenerator.html#a79a3032b50f7ef905213b770b12e0967">addCPtsToLoad</a>(<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *ld, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</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; loadsToPointsToMap[ld] = cpts;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; funToPointsToMap[fun].insert(cpts);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; addRefSideEffectOfFunction(fun,cpts);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a77cf2b1959581da2b0cdf88291664ff3"> 349</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MRGenerator.html#a77cf2b1959581da2b0cdf88291664ff3">addCPtsToCallSiteRefs</a>(<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</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; callsiteToRefPointsToMap[cs] |= cpts;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; funToPointsToMap[cs-&gt;<a class="code" href="classSVF_1_1CallBlockNode.html#a5bab98a0b8cf0a804d53abd994e922c0">getCaller</a>()].insert(cpts);</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"><a class="line" href="classSVF_1_1MRGenerator.html#a3c9e58dee18cde9a6e1575e34955af78"> 354</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MRGenerator.html#a3c9e58dee18cde9a6e1575e34955af78">addCPtsToCallSiteMods</a>(<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</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; callsiteToModPointsToMap[cs] |= cpts;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; funToPointsToMap[cs-&gt;<a class="code" href="classSVF_1_1CallBlockNode.html#a5bab98a0b8cf0a804d53abd994e922c0">getCaller</a>()].insert(cpts);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a1cb94c8a0379eb30c99f0c3cb2bfebaf"> 359</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MRGenerator.html#a1cb94c8a0379eb30c99f0c3cb2bfebaf">hasCPtsList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">return</span> funToPointsToMap.find(fun)!=funToPointsToMap.end();</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a6d86c8ebe87cb54f39e52daa7ffb0e2e"> 363</a></span>&#160; <span class="keyword">inline</span> PointsToList&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a6d86c8ebe87cb54f39e52daa7ffb0e2e">getPointsToList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</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; <span class="keywordflow">return</span> funToPointsToMap[fun];</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a1331e6f0941838064d77a5adaa5c6303"> 367</a></span>&#160; <span class="keyword">inline</span> FunToPointsTosMap&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a1331e6f0941838064d77a5adaa5c6303">getFunToPointsToList</a>()</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">return</span> funToPointsToMap;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordtype">void</span> addRefSideEffectOfFunction(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; refs);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordtype">void</span> addModSideEffectOfFunction(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; mods);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordtype">bool</span> addRefSideEffectOfCallSite(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; refs);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordtype">bool</span> addModSideEffectOfCallSite(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; mods);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ac0007c8808654ca74feef0d8568378b9"> 384</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1MRGenerator.html#ac0007c8808654ca74feef0d8568378b9">getRefSideEffectOfFunction</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">return</span> funToRefsMap[fun];</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a7d47fbc3dbe8fd19ca5e4210bdecf914"> 389</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a7d47fbc3dbe8fd19ca5e4210bdecf914">getModSideEffectOfFunction</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">return</span> funToModsMap[fun];</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ae2cc7d7d6ab427acb0352b388c7a4acc"> 394</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1MRGenerator.html#ae2cc7d7d6ab427acb0352b388c7a4acc">getRefSideEffectOfCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">return</span> csToRefsMap[cs];</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#aebd6abbf574392abce426dc796d2ee56"> 399</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1MRGenerator.html#aebd6abbf574392abce426dc796d2ee56">getModSideEffectOfCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">return</span> csToModsMap[cs];</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ac91b6f0f33a95ba35cc23e0e4657732a"> 404</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MRGenerator.html#ac91b6f0f33a95ba35cc23e0e4657732a">hasRefSideEffectOfCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span> csToRefsMap.find(cs) != csToRefsMap.end();</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div><div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a07dc868039c5e2764b3cc34faff6d94a"> 409</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MRGenerator.html#a07dc868039c5e2764b3cc34faff6d94a">hasModSideEffectOfCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">return</span> csToModsMap.find(cs) != csToModsMap.end();</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ad34e796ebc49f5749de39e81374dc7a7"> 416</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1MRGenerator.html#ad34e796ebc49f5749de39e81374dc7a7">getMRNum</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">return</span> memRegSet.size();</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a46e08638c8b5e6f6755de045c94862c4"> 422</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MRGenerator.html#a46e08638c8b5e6f6755de045c94862c4">~MRGenerator</a>()</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; destroy();</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> generateMRs();</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a3121380139c7ae96d2045d66203253b6"> 431</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1MRGenerator.html#a3121380139c7ae96d2045d66203253b6">getFunction</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* pagEdge)<span class="keyword"> const</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; PAGEdgeToFunMap::const_iterator it = pagEdgeToFunMap.find(pagEdge);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=pagEdgeToFunMap.end() &amp;&amp; <span class="stringliteral">&quot;can not find its function, it is a global SVFIR edge&quot;</span>);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a64ba36ddcd304f6543e416c552763879"> 439</a></span>&#160; <span class="keyword">inline</span> MRSet&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a64ba36ddcd304f6543e416c552763879">getFunMRSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">return</span> funToMRsMap[fun];</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div><div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a19da5768681a21c52a6c43761814a157"> 443</a></span>&#160; <span class="keyword">inline</span> MRSet&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a19da5768681a21c52a6c43761814a157">getLoadMRSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load)</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">return</span> loadsToMRsMap[load];</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a364ad1e34d09a92cdc0cfe530c84880f"> 447</a></span>&#160; <span class="keyword">inline</span> MRSet&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a364ad1e34d09a92cdc0cfe530c84880f">getStoreMRSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store)</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">return</span> storesToMRsMap[store];</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div><div class="line"><a name="l00451"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#aeed8bcf54d2a72c640e464e256249630"> 451</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MRGenerator.html#aeed8bcf54d2a72c640e464e256249630">hasRefMRSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">return</span> callsiteToRefMRsMap.find(cs)!=callsiteToRefMRsMap.end();</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="line"><a name="l00455"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a8868281e5f5b5f3a83acf8568971ad40"> 455</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MRGenerator.html#a8868281e5f5b5f3a83acf8568971ad40">hasModMRSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">return</span> callsiteToModMRsMap.find(cs)!=callsiteToModMRsMap.end();</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div><div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a7ede01d58bb2490ded5895ca5bd45948"> 459</a></span>&#160; <span class="keyword">inline</span> MRSet&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a7ede01d58bb2490ded5895ca5bd45948">getCallSiteRefMRSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; {</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">return</span> callsiteToRefMRsMap[cs];</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div><div class="line"><a name="l00463"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#acb78098bf1fc8c3a80720a3dff3a0a1d"> 463</a></span>&#160; <span class="keyword">inline</span> MRSet&amp; <a class="code" href="classSVF_1_1MRGenerator.html#acb78098bf1fc8c3a80720a3dff3a0a1d">getCallSiteModMRSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">return</span> callsiteToModMRsMap[cs];</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordtype">bool</span> hasPAGEdgeList(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; PAGEdgeList&amp; getPAGEdgesFromInst(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> getModInfoForCall(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> getRefInfoForCall(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <a class="code" href="namespaceSVF.html#a7e833aa9feaf931fb44fb1e3fd502a6c">ModRefInfo</a> getModRefInfo(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="namespaceSVF.html#a7e833aa9feaf931fb44fb1e3fd502a6c">ModRefInfo</a> getModRefInfo(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <a class="code" href="namespaceSVF.html#a7e833aa9feaf931fb44fb1e3fd502a6c">ModRefInfo</a> getModRefInfo(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs2);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;};</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* MEMORYREGION_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1MRGenerator_html_af6d58e2971c4a8d3ee03f9dfd9072a3a"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#af6d58e2971c4a8d3ee03f9dfd9072a3a">SVF::MRGenerator::funToRefsMap</a></div><div class="ttdeci">FunToPointsToMap funToRefsMap</div><div class="ttdoc">Map a function to its indirect uses of memory objects. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00223">MemRegion.h:223</a></div></div>
69
+ <a href="MemRegion_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- MemRegion.h -- Memory region -----------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * MemoryRegion.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Jul 14, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef MEMORYREGION_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define MEMORYREGION_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFIR_8h.html">MemoryModel/SVFIR.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PTACallGraph_8h.html">Graphs/PTACallGraph.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SCC_8h.html">Util/SCC.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="WorkList_8h.html">Util/WorkList.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ICFG_8h.html">Graphs/ICFG.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a1ed5cfc8a00b2d3b90e74debabaa62a5"> 44</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="namespaceSVF.html#a1ed5cfc8a00b2d3b90e74debabaa62a5">MRID</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a0039280e908258b8e73779de51e9f63b"> 47</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="namespaceSVF.html#a0039280e908258b8e73779de51e9f63b">MRVERID</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a39df0130e37e97db2ff7620bbb2a72f5"> 48</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="namespaceSVF.html#a39df0130e37e97db2ff7620bbb2a72f5">MRVERSION</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html"> 51</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#a7ed54700c976f9738012bc051b7f41f5"> 55</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemRegion.html#a7ed54700c976f9738012bc051b7f41f5">Condition</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#a8556bee344c108815adad4a405ac0ffb"> 58</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1MemRegion.html#a8556bee344c108815adad4a405ac0ffb">totalMRNum</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#aeb8ba1e0c907aeb3de84d8bd899c98b4"> 59</a></span>&#160; MRID <a class="code" href="classSVF_1_1MemRegion.html#aeb8ba1e0c907aeb3de84d8bd899c98b4">rid</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#a77a18bcce56cf48d1c338e852a2be9bc"> 60</a></span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1MemRegion.html#a77a18bcce56cf48d1c338e852a2be9bc">cptsSet</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#a1d8189977196da687f50cfa6df98394b"> 64</a></span>&#160; <a class="code" href="classSVF_1_1MemRegion.html#a1d8189977196da687f50cfa6df98394b">MemRegion</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cp) :</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; rid(++totalMRNum), cptsSet(cp)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#a2f680d13f4d983b1bc96967c930e8bd9"> 69</a></span>&#160; <a class="code" href="classSVF_1_1MemRegion.html#a2f680d13f4d983b1bc96967c930e8bd9">~MemRegion</a>()</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#a7d38f6ef18106eb388b3a289aad79802"> 74</a></span>&#160; <span class="keyword">inline</span> MRID <a class="code" href="classSVF_1_1MemRegion.html#a7d38f6ef18106eb388b3a289aad79802">getMRID</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemRegion.html#aeb8ba1e0c907aeb3de84d8bd899c98b4">rid</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1"> 79</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemRegion.html#a77a18bcce56cf48d1c338e852a2be9bc">cptsSet</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#affa3a8efd91faf5704e514f1e83fead9"> 84</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemRegion.html#affa3a8efd91faf5704e514f1e83fead9">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> this-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>() == rhs-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#adad8c2b08ab6a512f0c3aa90b4416f60"> 89</a></span>&#160; <span class="keyword">inline</span> std::string <a class="code" href="classSVF_1_1MemRegion.html#adad8c2b08ab6a512f0c3aa90b4416f60">dumpStr</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; std::string str;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; str += <span class="stringliteral">&quot;pts{&quot;</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">for</span> (NodeBS::iterator ii = cptsSet.begin(), ie = cptsSet.end();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; ii != ie; ii++)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">char</span> int2str[16];</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; sprintf(int2str, <span class="stringliteral">&quot;%d&quot;</span>, *ii);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; str += int2str;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; str += <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; str += <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> str;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="structSVF_1_1MemRegion_1_1equalMemRegion.html"> 108</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structSVF_1_1MemRegion_1_1equalMemRegion.html">equalMemRegion</a></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="structSVF_1_1MemRegion_1_1equalMemRegion.html#a3cd8165dfa543312d2b3bfa798b6154b"> 110</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1MemRegion_1_1equalMemRegion.html#a3cd8165dfa543312d2b3bfa798b6154b">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8f749354b7e882ef3e5bf5081fa715b5">SVFUtil::cmpNodeBS</a>(lhs-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>(), rhs-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>());</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; } <a class="code" href="classSVF_1_1MemRegion.html#af0a0b4a5862a136ef4f203f19139da65">equalMemRegion</a>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1MemRegion.html#a99f106d47fd67f1ae53e144d72a223c9"> 118</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemRegion.html#a99f106d47fd67f1ae53e144d72a223c9">getRegionSize</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span> cptsSet.count();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;};</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html"> 127</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a></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;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a68d50c752252bd40c402c7b99b95f0fc"> 131</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;NodeID&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a68d50c752252bd40c402c7b99b95f0fc">WorkList</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;const MemRegion*, MemRegion::equalMemRegion&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRSet</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a82be01b460a498c07fb6a8aba853ed31"> 138</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const PAGEdge*, const SVFFunction*&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a82be01b460a498c07fb6a8aba853ed31">PAGEdgeToFunMap</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e"> 139</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;NodeBS, SVFUtil::equalNodeBS&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a8b254a0c5063e25f297d1b00fb0b515e">PointsToList</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ad492e2940936fc7df06127f0cb94d47a"> 140</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, NodeBS&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#ad492e2940936fc7df06127f0cb94d47a">FunToPointsToMap</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a6b8bbb60126105cc77c1a6a4c46677fd"> 141</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, PointsToList&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a6b8bbb60126105cc77c1a6a4c46677fd">FunToPointsTosMap</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a665836fd866c6393fc4a251eb4929dae"> 142</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;NodeBS, NodeBS, SVFUtil::equalNodeBS&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a665836fd866c6393fc4a251eb4929dae">PtsToRepPtsSetMap</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a090070379a09460aef0c07270d32d27b"> 145</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, MRSet&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a090070379a09460aef0c07270d32d27b">FunToMRsMap</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a273b2634adcfa10a08924517e8d51175"> 149</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const LoadStmt*, MRSet&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a273b2634adcfa10a08924517e8d51175">LoadsToMRsMap</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#afacb458ca832ef459e873b7d90134a8c"> 150</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const StoreStmt*, MRSet&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#afacb458ca832ef459e873b7d90134a8c">StoresToMRsMap</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a71b5ce2c754ffff5a84fdb0c3aa16819"> 151</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallBlockNode*, MRSet&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a71b5ce2c754ffff5a84fdb0c3aa16819">CallSiteToMRsMap</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</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"><a class="line" href="classSVF_1_1MRGenerator.html#acfadd565b5c978c9417e059b3ea7588c"> 156</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const LoadStmt*, NodeBS&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#acfadd565b5c978c9417e059b3ea7588c">LoadsToPointsToMap</a>;</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a357e1654e30b2f91f6ea30ea5a52e91d"> 157</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const StoreStmt*, NodeBS&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a357e1654e30b2f91f6ea30ea5a52e91d">StoresToPointsToMap</a>;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a9d22e9d113393c536c5fe473fd76f388"> 158</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallBlockNode*, NodeBS&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a9d22e9d113393c536c5fe473fd76f388">CallSiteToPointsToMap</a>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, NodeBS&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#ab01e492f002c73e2c89eb0b4c8f9647d">FunToNodeBSMap</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a55ca7850e00f57a8a4b83bc969493046"> 166</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallBlockNode*, NodeBS&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#a55ca7850e00f57a8a4b83bc969493046">CallSiteToNodeBSMap</a>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ab075a7c7fbc60f678b3fee8bbc06194d"> 169</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, NodeBS&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#ab075a7c7fbc60f678b3fee8bbc06194d">NodeToPTSSMap</a>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a8717adf4520e0702274c5f013776be52"> 172</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFIR::SVFStmtList</a> <a class="code" href="classSVF_1_1MRGenerator.html#a8717adf4520e0702274c5f013776be52">SVFStmtList</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#af8d52e6c9884c6e1abc6dbcbc5e32629"> 174</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SCCDetection.html">SCCDetection&lt;PTACallGraph*&gt;</a> <a class="code" href="classSVF_1_1MRGenerator.html#af8d52e6c9884c6e1abc6dbcbc5e32629">SCC</a>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a1f69924c587c4e68a029fd4e86cffacf"> 176</a></span>&#160; MRSet&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a1f69924c587c4e68a029fd4e86cffacf">getMRSet</a>()</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> memRegSet;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a98b3481580be48cff7e93bf3c8a29dac"> 182</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a98b3481580be48cff7e93bf3c8a29dac">getRepPointsTo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts)<span class="keyword"> const</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; PtsToRepPtsSetMap::const_iterator it = cptsToRepCPtsMap.find(cpts);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=cptsToRepCPtsMap.end() &amp;&amp; <span class="stringliteral">&quot;can not find superset of cpts??&quot;</span>);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* getMR(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts) <span class="keyword">const</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#afb7ce3a24edda14895999eb15231daff"> 193</a></span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="classSVF_1_1MRGenerator.html#afb7ce3a24edda14895999eb15231daff">pta</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#aa3a12cf1f761d25b9213bc6e50d89ba5"> 194</a></span>&#160; SCC* <a class="code" href="classSVF_1_1MRGenerator.html#aa3a12cf1f761d25b9213bc6e50d89ba5">callGraphSCC</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a05005a166c39b1adea492655d77db519"> 195</a></span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1MRGenerator.html#a05005a166c39b1adea492655d77db519">callGraph</a>;</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a6a62d2dede5d2506c19b2d058d1cd9d3"> 196</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MRGenerator.html#a6a62d2dede5d2506c19b2d058d1cd9d3">ptrOnlyMSSA</a>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a3e74c3706ffcc14f378771b417dcbb96"> 199</a></span>&#160; FunToMRsMap <a class="code" href="classSVF_1_1MRGenerator.html#a3e74c3706ffcc14f378771b417dcbb96">funToMRsMap</a>;</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a0d8229b1f0b8428708e923d19096e4ba"> 201</a></span>&#160; LoadsToMRsMap <a class="code" href="classSVF_1_1MRGenerator.html#a0d8229b1f0b8428708e923d19096e4ba">loadsToMRsMap</a>;</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a255551fd3ff8fb33bcea93d0b00280b3"> 203</a></span>&#160; StoresToMRsMap <a class="code" href="classSVF_1_1MRGenerator.html#a255551fd3ff8fb33bcea93d0b00280b3">storesToMRsMap</a>;</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a7a7ed21181c2486b60170a479a5a534e"> 205</a></span>&#160; CallSiteToMRsMap <a class="code" href="classSVF_1_1MRGenerator.html#a7a7ed21181c2486b60170a479a5a534e">callsiteToRefMRsMap</a>;</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#adf8d477e5f622855799842134145ecc4"> 207</a></span>&#160; CallSiteToMRsMap <a class="code" href="classSVF_1_1MRGenerator.html#adf8d477e5f622855799842134145ecc4">callsiteToModMRsMap</a>;</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#af47e15d6b8c15d547a718f3577513975"> 209</a></span>&#160; LoadsToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#af47e15d6b8c15d547a718f3577513975">loadsToPointsToMap</a>;</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a7d86f708743a59aa31c0a9fd6de45dac"> 211</a></span>&#160; StoresToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#a7d86f708743a59aa31c0a9fd6de45dac">storesToPointsToMap</a>;</div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a34967cda51699f948a581b9f88fa3b10"> 213</a></span>&#160; CallSiteToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#a34967cda51699f948a581b9f88fa3b10">callsiteToRefPointsToMap</a>;</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ab8df193e84009e406c301731d17dc7b9"> 215</a></span>&#160; CallSiteToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#ab8df193e84009e406c301731d17dc7b9">callsiteToModPointsToMap</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a05c7a5ddbe3079f63be76c35298d1c2b"> 218</a></span>&#160; FunToPointsTosMap <a class="code" href="classSVF_1_1MRGenerator.html#a05c7a5ddbe3079f63be76c35298d1c2b">funToPointsToMap</a>;</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ab250a4950269f57027d8e8ef10089f58"> 220</a></span>&#160; PAGEdgeToFunMap <a class="code" href="classSVF_1_1MRGenerator.html#ab250a4950269f57027d8e8ef10089f58">pagEdgeToFunMap</a>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#af6d58e2971c4a8d3ee03f9dfd9072a3a"> 223</a></span>&#160; FunToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#af6d58e2971c4a8d3ee03f9dfd9072a3a">funToRefsMap</a>;</div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a2c94bfa19ad8d1d6360b12693c8b891d"> 225</a></span>&#160; FunToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#a2c94bfa19ad8d1d6360b12693c8b891d">funToModsMap</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ac7b5ca3fd950e1a940f875ac135640f6"> 227</a></span>&#160; CallSiteToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#ac7b5ca3fd950e1a940f875ac135640f6">csToRefsMap</a>;</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a603f993995e7d6961e203a195bb56029"> 229</a></span>&#160; CallSiteToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#a603f993995e7d6961e203a195bb56029">csToModsMap</a>;</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#afe91b57b451d7788364493549e015acf"> 231</a></span>&#160; CallSiteToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#afe91b57b451d7788364493549e015acf">csToCallSiteArgsPtsMap</a>;</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a21550f978f42ac3cbb32cbc426ff5cb1"> 233</a></span>&#160; CallSiteToPointsToMap <a class="code" href="classSVF_1_1MRGenerator.html#a21550f978f42ac3cbb32cbc426ff5cb1">csToCallSiteRetPtsMap</a>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a0e46c7beb580ace3a652ac9e1c419b48"> 236</a></span>&#160; NodeToPTSSMap <a class="code" href="classSVF_1_1MRGenerator.html#a0e46c7beb580ace3a652ac9e1c419b48">cachedPtsChainMap</a>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#af46b82e45aa1ecdfb397325971206541"> 239</a></span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1MRGenerator.html#af46b82e45aa1ecdfb397325971206541">allGlobals</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordtype">void</span> destroy();</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="comment">//Get all objects might pass into callee from a callsite</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordtype">void</span> collectCallSitePts(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="comment">//Recursive collect points-to chain</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; CollectPtsChain(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a373b57017e99ee8466d1c8a363adaeef"> 251</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a373b57017e99ee8466d1c8a363adaeef">getCallSiteArgsPts</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> csToCallSiteArgsPtsMap[cs];</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#aac03d1d2e10543e100530f99165b4388"> 256</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1MRGenerator.html#aac03d1d2e10543e100530f99165b4388">getCallSiteRetPts</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">return</span> csToCallSiteRetPtsMap[cs];</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordtype">bool</span> isNonLocalObject(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* curFun) <span class="keyword">const</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordtype">void</span> getEscapObjviaGlobals(<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; globs, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; pts);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordtype">void</span> getCallGraphSCCRevTopoOrder(WorkList&amp; worklist);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* p, <span class="keywordtype">bool</span> ptrOnly);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#af94bd8155a23273aab2396334d905119"> 274</a></span>&#160; MRSet <a class="code" href="classSVF_1_1MRGenerator.html#af94bd8155a23273aab2396334d905119">memRegSet</a>;</div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1"> 276</a></span>&#160; PtsToRepPtsSetMap <a class="code" href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">cptsToRepCPtsMap</a>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordtype">void</span> createMR(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordtype">void</span> collectGlobals();</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> collectModRefForLoadStore();</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> collectModRefForCall();</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> partitionMRs();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> updateAliasMRs();</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> sortPointsTo(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a28130cc55ab317d383ba6593f323b12a"> 300</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MRGenerator.html#a28130cc55ab317d383ba6593f323b12a">isAliasedMR</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">return</span> mr-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>().intersects(cpts);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ad740188222439c089907fa6c6c951f02"> 305</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MRGenerator.html#ad740188222439c089907fa6c6c951f02">getAliasMemRegions</a>(MRSet&amp; aliasMRs, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">for</span>(MRSet::const_iterator it = funToMRsMap[fun].begin(), eit = funToMRsMap[fun].end(); it!=eit; ++it)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">if</span>(isAliasedMR(cpts,*it))</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; aliasMRs.insert(*it);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#abe8d6217250d227e743e4b581497aae8"> 315</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MRGenerator.html#abe8d6217250d227e743e4b581497aae8">getMRsForLoad</a>(MRSet&amp; aliasMRs, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>*)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr = getMR(cpts);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; aliasMRs.insert(mr);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a02c60ceb7c9c37bcf83c739aa4083acc"> 322</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MRGenerator.html#a02c60ceb7c9c37bcf83c739aa4083acc">getMRsForCallSiteRef</a>(MRSet&amp; aliasMRs, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>*)</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr = getMR(cpts);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; aliasMRs.insert(mr);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> modRefAnalysis(<a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* callGraphNode, WorkList&amp; worklist);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> handleCallsiteModRef(<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; mod, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; ref, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</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="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#af50efed3af17806a3ba3f668e4466d3e"> 337</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MRGenerator.html#af50efed3af17806a3ba3f668e4466d3e">addCPtsToStore</a>(<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *st, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; storesToPointsToMap[st] = cpts;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; funToPointsToMap[fun].insert(cpts);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; addModSideEffectOfFunction(fun,cpts);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a79a3032b50f7ef905213b770b12e0967"> 343</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MRGenerator.html#a79a3032b50f7ef905213b770b12e0967">addCPtsToLoad</a>(<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *ld, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</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; loadsToPointsToMap[ld] = cpts;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; funToPointsToMap[fun].insert(cpts);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; addRefSideEffectOfFunction(fun,cpts);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a77cf2b1959581da2b0cdf88291664ff3"> 349</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MRGenerator.html#a77cf2b1959581da2b0cdf88291664ff3">addCPtsToCallSiteRefs</a>(<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</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; callsiteToRefPointsToMap[cs] |= cpts;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; funToPointsToMap[cs-&gt;<a class="code" href="classSVF_1_1CallBlockNode.html#a5bab98a0b8cf0a804d53abd994e922c0">getCaller</a>()].insert(cpts);</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"><a class="line" href="classSVF_1_1MRGenerator.html#a3c9e58dee18cde9a6e1575e34955af78"> 354</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MRGenerator.html#a3c9e58dee18cde9a6e1575e34955af78">addCPtsToCallSiteMods</a>(<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</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; callsiteToModPointsToMap[cs] |= cpts;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; funToPointsToMap[cs-&gt;<a class="code" href="classSVF_1_1CallBlockNode.html#a5bab98a0b8cf0a804d53abd994e922c0">getCaller</a>()].insert(cpts);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a1cb94c8a0379eb30c99f0c3cb2bfebaf"> 359</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MRGenerator.html#a1cb94c8a0379eb30c99f0c3cb2bfebaf">hasCPtsList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">return</span> funToPointsToMap.find(fun)!=funToPointsToMap.end();</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a6d86c8ebe87cb54f39e52daa7ffb0e2e"> 363</a></span>&#160; <span class="keyword">inline</span> PointsToList&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a6d86c8ebe87cb54f39e52daa7ffb0e2e">getPointsToList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</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; <span class="keywordflow">return</span> funToPointsToMap[fun];</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a1331e6f0941838064d77a5adaa5c6303"> 367</a></span>&#160; <span class="keyword">inline</span> FunToPointsTosMap&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a1331e6f0941838064d77a5adaa5c6303">getFunToPointsToList</a>()</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">return</span> funToPointsToMap;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordtype">void</span> addRefSideEffectOfFunction(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; refs);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordtype">void</span> addModSideEffectOfFunction(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; mods);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordtype">bool</span> addRefSideEffectOfCallSite(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; refs);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordtype">bool</span> addModSideEffectOfCallSite(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; mods);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ac0007c8808654ca74feef0d8568378b9"> 384</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1MRGenerator.html#ac0007c8808654ca74feef0d8568378b9">getRefSideEffectOfFunction</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">return</span> funToRefsMap[fun];</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a7d47fbc3dbe8fd19ca5e4210bdecf914"> 389</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a7d47fbc3dbe8fd19ca5e4210bdecf914">getModSideEffectOfFunction</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">return</span> funToModsMap[fun];</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ae2cc7d7d6ab427acb0352b388c7a4acc"> 394</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1MRGenerator.html#ae2cc7d7d6ab427acb0352b388c7a4acc">getRefSideEffectOfCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">return</span> csToRefsMap[cs];</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#aebd6abbf574392abce426dc796d2ee56"> 399</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1MRGenerator.html#aebd6abbf574392abce426dc796d2ee56">getModSideEffectOfCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">return</span> csToModsMap[cs];</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ac91b6f0f33a95ba35cc23e0e4657732a"> 404</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MRGenerator.html#ac91b6f0f33a95ba35cc23e0e4657732a">hasRefSideEffectOfCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span> csToRefsMap.find(cs) != csToRefsMap.end();</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div><div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a07dc868039c5e2764b3cc34faff6d94a"> 409</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MRGenerator.html#a07dc868039c5e2764b3cc34faff6d94a">hasModSideEffectOfCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">return</span> csToModsMap.find(cs) != csToModsMap.end();</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#ad34e796ebc49f5749de39e81374dc7a7"> 416</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1MRGenerator.html#ad34e796ebc49f5749de39e81374dc7a7">getMRNum</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">return</span> memRegSet.size();</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a46e08638c8b5e6f6755de045c94862c4"> 422</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MRGenerator.html#a46e08638c8b5e6f6755de045c94862c4">~MRGenerator</a>()</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; destroy();</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> generateMRs();</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a3121380139c7ae96d2045d66203253b6"> 431</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1MRGenerator.html#a3121380139c7ae96d2045d66203253b6">getFunction</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* pagEdge)<span class="keyword"> const</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; PAGEdgeToFunMap::const_iterator it = pagEdgeToFunMap.find(pagEdge);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=pagEdgeToFunMap.end() &amp;&amp; <span class="stringliteral">&quot;can not find its function, it is a global SVFIR edge&quot;</span>);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a64ba36ddcd304f6543e416c552763879"> 439</a></span>&#160; <span class="keyword">inline</span> MRSet&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a64ba36ddcd304f6543e416c552763879">getFunMRSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">return</span> funToMRsMap[fun];</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div><div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a19da5768681a21c52a6c43761814a157"> 443</a></span>&#160; <span class="keyword">inline</span> MRSet&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a19da5768681a21c52a6c43761814a157">getLoadMRSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load)</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">return</span> loadsToMRsMap[load];</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a364ad1e34d09a92cdc0cfe530c84880f"> 447</a></span>&#160; <span class="keyword">inline</span> MRSet&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a364ad1e34d09a92cdc0cfe530c84880f">getStoreMRSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store)</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">return</span> storesToMRsMap[store];</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div><div class="line"><a name="l00451"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#aeed8bcf54d2a72c640e464e256249630"> 451</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MRGenerator.html#aeed8bcf54d2a72c640e464e256249630">hasRefMRSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">return</span> callsiteToRefMRsMap.find(cs)!=callsiteToRefMRsMap.end();</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="line"><a name="l00455"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a8868281e5f5b5f3a83acf8568971ad40"> 455</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MRGenerator.html#a8868281e5f5b5f3a83acf8568971ad40">hasModMRSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">return</span> callsiteToModMRsMap.find(cs)!=callsiteToModMRsMap.end();</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div><div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#a7ede01d58bb2490ded5895ca5bd45948"> 459</a></span>&#160; <span class="keyword">inline</span> MRSet&amp; <a class="code" href="classSVF_1_1MRGenerator.html#a7ede01d58bb2490ded5895ca5bd45948">getCallSiteRefMRSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; {</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">return</span> callsiteToRefMRsMap[cs];</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div><div class="line"><a name="l00463"></a><span class="lineno"><a class="line" href="classSVF_1_1MRGenerator.html#acb78098bf1fc8c3a80720a3dff3a0a1d"> 463</a></span>&#160; <span class="keyword">inline</span> MRSet&amp; <a class="code" href="classSVF_1_1MRGenerator.html#acb78098bf1fc8c3a80720a3dff3a0a1d">getCallSiteModMRSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">return</span> callsiteToModMRsMap[cs];</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordtype">bool</span> hasSVFStmtList(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; SVFStmtList&amp; getPAGEdgesFromInst(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> getModInfoForCall(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> getRefInfoForCall(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <a class="code" href="namespaceSVF.html#a7e833aa9feaf931fb44fb1e3fd502a6c">ModRefInfo</a> getModRefInfo(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="namespaceSVF.html#a7e833aa9feaf931fb44fb1e3fd502a6c">ModRefInfo</a> getModRefInfo(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <a class="code" href="namespaceSVF.html#a7e833aa9feaf931fb44fb1e3fd502a6c">ModRefInfo</a> getModRefInfo(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs2);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;};</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* MEMORYREGION_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1MRGenerator_html_af6d58e2971c4a8d3ee03f9dfd9072a3a"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#af6d58e2971c4a8d3ee03f9dfd9072a3a">SVF::MRGenerator::funToRefsMap</a></div><div class="ttdeci">FunToPointsToMap funToRefsMap</div><div class="ttdoc">Map a function to its indirect uses of memory objects. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00223">MemRegion.h:223</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html">SVF::BVDataPTAImpl</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00042">PointerAnalysisImpl.h:42</a></div></div>
71
71
  <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>
72
72
  <div class="ttc" id="classSVF_1_1MRGenerator_html_aa3a12cf1f761d25b9213bc6e50d89ba5"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#aa3a12cf1f761d25b9213bc6e50d89ba5">SVF::MRGenerator::callGraphSCC</a></div><div class="ttdeci">SCC * callGraphSCC</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00194">MemRegion.h:194</a></div></div>
@@ -80,6 +80,7 @@ $(function() {
80
80
  <div class="ttc" id="classSVF_1_1MemRegion_html_a1d8189977196da687f50cfa6df98394b"><div class="ttname"><a href="classSVF_1_1MemRegion.html#a1d8189977196da687f50cfa6df98394b">SVF::MemRegion::MemRegion</a></div><div class="ttdeci">MemRegion(const NodeBS &amp;cp)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00064">MemRegion.h:64</a></div></div>
81
81
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
82
82
  <div class="ttc" id="PTACallGraph_8h_html"><div class="ttname"><a href="PTACallGraph_8h.html">PTACallGraph.h</a></div></div>
83
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a6bc360d2604ae4a0af74530b263b10d9"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVF::SVFIR::SVFStmtList</a></div><div class="ttdeci">std::vector&lt; const SVFStmt * &gt; SVFStmtList</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00056">SVFIR.h:56</a></div></div>
83
84
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a02c60ceb7c9c37bcf83c739aa4083acc"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a02c60ceb7c9c37bcf83c739aa4083acc">SVF::MRGenerator::getMRsForCallSiteRef</a></div><div class="ttdeci">virtual void getMRsForCallSiteRef(MRSet &amp;aliasMRs, const NodeBS &amp;cpts, const SVFFunction *)</div><div class="ttdoc">Get memory regions for call site ref according to cpts. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00322">MemRegion.h:322</a></div></div>
84
85
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
85
86
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a364ad1e34d09a92cdc0cfe530c84880f"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a364ad1e34d09a92cdc0cfe530c84880f">SVF::MRGenerator::getStoreMRSet</a></div><div class="ttdeci">MRSet &amp; getStoreMRSet(const StoreStmt *store)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00447">MemRegion.h:447</a></div></div>
@@ -92,6 +93,7 @@ $(function() {
92
93
  <div class="ttc" id="classSVF_1_1MRGenerator_html_aebd6abbf574392abce426dc796d2ee56"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#aebd6abbf574392abce426dc796d2ee56">SVF::MRGenerator::getModSideEffectOfCallSite</a></div><div class="ttdeci">const NodeBS &amp; getModSideEffectOfCallSite(const CallBlockNode *cs)</div><div class="ttdoc">Get indirect mods of a callsite. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00399">MemRegion.h:399</a></div></div>
93
94
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a0d8229b1f0b8428708e923d19096e4ba"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a0d8229b1f0b8428708e923d19096e4ba">SVF::MRGenerator::loadsToMRsMap</a></div><div class="ttdeci">LoadsToMRsMap loadsToMRsMap</div><div class="ttdoc">Map a load SVFIR Edge to its memory regions sets in order for inserting mus in Memory SSA...</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00201">MemRegion.h:201</a></div></div>
94
95
  <div class="ttc" id="classSVF_1_1MRGenerator_html_af50efed3af17806a3ba3f668e4466d3e"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#af50efed3af17806a3ba3f668e4466d3e">SVF::MRGenerator::addCPtsToStore</a></div><div class="ttdeci">void addCPtsToStore(NodeBS &amp;cpts, const StoreStmt *st, const SVFFunction *fun)</div><div class="ttdoc">Add cpts to store/load. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00337">MemRegion.h:337</a></div></div>
96
+ <div class="ttc" id="classSVF_1_1MRGenerator_html_a8717adf4520e0702274c5f013776be52"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a8717adf4520e0702274c5f013776be52">SVF::MRGenerator::SVFStmtList</a></div><div class="ttdeci">SVFIR::SVFStmtList SVFStmtList</div><div class="ttdoc">SVFIR edge list. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00172">MemRegion.h:172</a></div></div>
95
97
  <div class="ttc" id="classSVF_1_1CallBlockNode_html_a5bab98a0b8cf0a804d53abd994e922c0"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html#a5bab98a0b8cf0a804d53abd994e922c0">SVF::CallBlockNode::getCaller</a></div><div class="ttdeci">const SVFFunction * getCaller() const</div><div class="ttdoc">Return callsite. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00400">ICFGNode.h:400</a></div></div>
96
98
  <div class="ttc" id="classSVF_1_1MRGenerator_html_ac7b5ca3fd950e1a940f875ac135640f6"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#ac7b5ca3fd950e1a940f875ac135640f6">SVF::MRGenerator::csToRefsMap</a></div><div class="ttdeci">CallSiteToPointsToMap csToRefsMap</div><div class="ttdoc">Map a callsite to its indirect uses of memory objects. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00227">MemRegion.h:227</a></div></div>
97
99
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a07dc868039c5e2764b3cc34faff6d94a"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a07dc868039c5e2764b3cc34faff6d94a">SVF::MRGenerator::hasModSideEffectOfCallSite</a></div><div class="ttdeci">bool hasModSideEffectOfCallSite(const CallBlockNode *cs)</div><div class="ttdoc">Has indirect mods of a callsite. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00409">MemRegion.h:409</a></div></div>
@@ -100,7 +102,6 @@ $(function() {
100
102
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a3e74c3706ffcc14f378771b417dcbb96"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a3e74c3706ffcc14f378771b417dcbb96">SVF::MRGenerator::funToMRsMap</a></div><div class="ttdeci">FunToMRsMap funToMRsMap</div><div class="ttdoc">Map a function to all its memory regions. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00199">MemRegion.h:199</a></div></div>
101
103
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a77cf2b1959581da2b0cdf88291664ff3"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a77cf2b1959581da2b0cdf88291664ff3">SVF::MRGenerator::addCPtsToCallSiteRefs</a></div><div class="ttdeci">void addCPtsToCallSiteRefs(NodeBS &amp;cpts, const CallBlockNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00349">MemRegion.h:349</a></div></div>
102
104
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a6d86c8ebe87cb54f39e52daa7ffb0e2e"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a6d86c8ebe87cb54f39e52daa7ffb0e2e">SVF::MRGenerator::getPointsToList</a></div><div class="ttdeci">PointsToList &amp; getPointsToList(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00363">MemRegion.h:363</a></div></div>
103
- <div class="ttc" id="classSVF_1_1MRGenerator_html_aad6c5bb3abf7449b36b2ec51c4f35f6c"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#aad6c5bb3abf7449b36b2ec51c4f35f6c">SVF::MRGenerator::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="MemRegion_8h_source.html#l00172">MemRegion.h:172</a></div></div>
104
105
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a1f69924c587c4e68a029fd4e86cffacf"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a1f69924c587c4e68a029fd4e86cffacf">SVF::MRGenerator::getMRSet</a></div><div class="ttdeci">MRSet &amp; getMRSet()</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00176">MemRegion.h:176</a></div></div>
105
106
  <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>
106
107
  <div class="ttc" id="classSVF_1_1MRGenerator_html_a7d86f708743a59aa31c0a9fd6de45dac"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a7d86f708743a59aa31c0a9fd6de45dac">SVF::MRGenerator::storesToPointsToMap</a></div><div class="ttdeci">StoresToPointsToMap storesToPointsToMap</div><div class="ttdoc">Map a store SVFIR Edge to its CPts set map. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00211">MemRegion.h:211</a></div></div>
@@ -124,7 +125,7 @@ $(function() {
124
125
  <div class="ttc" id="classSVF_1_1MemRegion_html_a7ed54700c976f9738012bc051b7f41f5"><div class="ttname"><a href="classSVF_1_1MemRegion.html#a7ed54700c976f9738012bc051b7f41f5">SVF::MemRegion::Condition</a></div><div class="ttdeci">bool Condition</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00055">MemRegion.h:55</a></div></div>
125
126
  <div class="ttc" id="classSVF_1_1MRGenerator_html_afacb458ca832ef459e873b7d90134a8c"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#afacb458ca832ef459e873b7d90134a8c">SVF::MRGenerator::StoresToMRsMap</a></div><div class="ttdeci">Map&lt; const StoreStmt *, MRSet &gt; StoresToMRsMap</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00150">MemRegion.h:150</a></div></div>
126
127
  <div class="ttc" id="classSVF_1_1MemRegion_html_aeb8ba1e0c907aeb3de84d8bd899c98b4"><div class="ttname"><a href="classSVF_1_1MemRegion.html#aeb8ba1e0c907aeb3de84d8bd899c98b4">SVF::MemRegion::rid</a></div><div class="ttdeci">MRID rid</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00059">MemRegion.h:59</a></div></div>
127
- <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>
128
+ <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>
128
129
  <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>
129
130
  <div class="ttc" id="structSVF_1_1MemRegion_1_1equalMemRegion_html_a3cd8165dfa543312d2b3bfa798b6154b"><div class="ttname"><a href="structSVF_1_1MemRegion_1_1equalMemRegion.html#a3cd8165dfa543312d2b3bfa798b6154b">SVF::MemRegion::equalMemRegion::operator()</a></div><div class="ttdeci">bool operator()(const MemRegion *lhs, const MemRegion *rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00110">MemRegion.h:110</a></div></div>
130
131
  <div class="ttc" id="classSVF_1_1MRGenerator_html_ac0007c8808654ca74feef0d8568378b9"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#ac0007c8808654ca74feef0d8568378b9">SVF::MRGenerator::getRefSideEffectOfFunction</a></div><div class="ttdeci">const NodeBS &amp; getRefSideEffectOfFunction(const SVFFunction *fun)</div><div class="ttdoc">Get indirect refs of a function. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00384">MemRegion.h:384</a></div></div>
@@ -154,7 +155,6 @@ $(function() {
154
155
  <div class="ttc" id="classSVF_1_1MRGenerator_html_ad740188222439c089907fa6c6c951f02"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#ad740188222439c089907fa6c6c951f02">SVF::MRGenerator::getAliasMemRegions</a></div><div class="ttdeci">virtual void getAliasMemRegions(MRSet &amp;aliasMRs, const NodeBS &amp;cpts, const SVFFunction *fun)</div><div class="ttdoc">Get all aliased mem regions from function fun according to cpts. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00305">MemRegion.h:305</a></div></div>
155
156
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList&lt; NodeID &gt;</a></div></div>
156
157
  <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>
157
- <div class="ttc" id="classSVF_1_1SVFIR_html_a896b591a710148fad7705a0d88652976"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a896b591a710148fad7705a0d88652976">SVF::SVFIR::PAGEdgeList</a></div><div class="ttdeci">std::vector&lt; const SVFStmt * &gt; PAGEdgeList</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00056">SVFIR.h:56</a></div></div>
158
158
  <div class="ttc" id="classSVF_1_1MemRegion_html_a1e5befaa1a46943e101b33adaf141ca1"><div class="ttname"><a href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">SVF::MemRegion::getPointsTo</a></div><div class="ttdeci">const NodeBS &amp; getPointsTo() const</div><div class="ttdoc">Return points-to. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00079">MemRegion.h:79</a></div></div>
159
159
  <div class="ttc" id="classSVF_1_1MRGenerator_html_ab01e492f002c73e2c89eb0b4c8f9647d"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#ab01e492f002c73e2c89eb0b4c8f9647d">SVF::MRGenerator::FunToNodeBSMap</a></div><div class="ttdeci">Map&lt; const SVFFunction *, NodeBS &gt; FunToNodeBSMap</div><div class="ttdoc">Maps Mod-Ref analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00164">MemRegion.h:164</a></div></div>
160
160
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
@@ -165,7 +165,7 @@ $(function() {
165
165
  <div class="ttc" id="structSVF_1_1MemRegion_1_1equalMemRegion_html"><div class="ttname"><a href="structSVF_1_1MemRegion_1_1equalMemRegion.html">SVF::MemRegion::equalMemRegion</a></div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00108">MemRegion.h:108</a></div></div>
166
166
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00086">SVFBasicTypes.h:86</a></div></div>
167
167
  <div class="ttc" id="classSVF_1_1MRGenerator_html_ab4d1ff0357d389a65ff1c2112ce631a1"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#ab4d1ff0357d389a65ff1c2112ce631a1">SVF::MRGenerator::cptsToRepCPtsMap</a></div><div class="ttdeci">PtsToRepPtsSetMap cptsToRepCPtsMap</div><div class="ttdoc">Map a condition pts to its rep conditional pts (super set points-to) </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00276">MemRegion.h:276</a></div></div>
168
- <div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00591">SVFStatements.h:591</a></div></div>
168
+ <div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00596">SVFStatements.h:596</a></div></div>
169
169
  <div class="ttc" id="WorkList_8h_html"><div class="ttname"><a href="WorkList_8h.html">WorkList.h</a></div></div>
170
170
  <div class="ttc" id="namespaceSVF_html_a0039280e908258b8e73779de51e9f63b"><div class="ttname"><a href="namespaceSVF.html#a0039280e908258b8e73779de51e9f63b">SVF::MRVERID</a></div><div class="ttdeci">NodeID MRVERID</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00047">MemRegion.h:47</a></div></div>
171
171
  <div class="ttc" id="classSVF_1_1MRGenerator_html_abe8d6217250d227e743e4b581497aae8"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#abe8d6217250d227e743e4b581497aae8">SVF::MRGenerator::getMRsForLoad</a></div><div class="ttdeci">virtual void getMRsForLoad(MRSet &amp;aliasMRs, const NodeBS &amp;cpts, const SVFFunction *)</div><div class="ttdoc">Get memory regions for a load statement according to cpts. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00315">MemRegion.h:315</a></div></div>