svf-tools 1.0.556 → 1.0.559

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 (202) hide show
  1. package/README.md +2 -2
  2. package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +15 -15
  3. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +12 -11
  4. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +11 -10
  5. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +47 -46
  6. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +9 -8
  7. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +35 -34
  8. package/SVF-doxygen/html/html/Andersen_8h_source.html +6 -6
  9. package/SVF-doxygen/html/html/CHGBuilder_8cpp.html +2 -2
  10. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +19 -18
  11. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +15 -15
  12. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +4 -4
  13. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +13 -12
  14. package/SVF-doxygen/html/html/DDAPass_8h_source.html +11 -11
  15. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +20 -19
  16. package/SVF-doxygen/html/html/DDAStat_8h_source.html +13 -13
  17. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +2 -2
  18. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +5 -2
  19. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -2
  20. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
  21. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +5 -4
  22. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +2 -2
  23. package/SVF-doxygen/html/html/MHP_8cpp_source.html +2 -2
  24. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +5 -5
  25. package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/MTA_8cpp_source.html +2 -2
  27. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
  28. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +2 -2
  29. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +67 -69
  30. package/SVF-doxygen/html/html/PTAStat_8h.html +1 -0
  31. package/SVF-doxygen/html/html/PTAStat_8h_source.html +70 -76
  32. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +2 -2
  33. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
  34. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +2 -1
  35. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +5 -4
  36. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +22 -21
  37. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +5 -5
  38. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +5 -5
  39. package/SVF-doxygen/html/html/SVFG_8h_source.html +3 -3
  40. package/SVF-doxygen/html/html/SVFStat_8cpp.html +81 -0
  41. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +85 -0
  42. package/SVF-doxygen/html/html/SVFStat_8h.html +94 -0
  43. package/SVF-doxygen/html/html/SVFStat_8h_source.html +103 -0
  44. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +1 -1
  45. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  46. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  47. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
  48. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
  49. package/SVF-doxygen/html/html/WPAStat_8h_source.html +8 -8
  50. package/SVF-doxygen/html/html/annotated.html +39 -38
  51. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +79 -79
  52. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +15 -15
  53. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +37 -37
  54. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +1 -1
  55. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +22 -22
  56. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat-members.html +24 -22
  57. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +97 -86
  58. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.png +0 -0
  59. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +24 -24
  60. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +47 -47
  61. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +4 -4
  62. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +30 -30
  63. package/SVF-doxygen/html/html/classSVF_1_1DDAStat-members.html +24 -23
  64. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +80 -67
  65. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.png +0 -0
  66. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +4 -4
  67. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +5 -4
  68. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +40 -5
  69. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +4 -4
  70. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +26 -26
  71. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat-members.html +24 -22
  72. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +67 -56
  73. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.png +0 -0
  74. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat-members.html +23 -21
  75. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +55 -42
  76. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.png +0 -0
  77. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +6 -6
  78. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +4 -4
  79. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +2 -2
  80. package/SVF-doxygen/html/html/classSVF_1_1MTAStat-members.html +25 -23
  81. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +59 -48
  82. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.png +0 -0
  83. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +5 -5
  84. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat-members.html +22 -21
  85. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +57 -44
  86. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.png +0 -0
  87. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +6 -6
  88. package/SVF-doxygen/html/html/classSVF_1_1Options.html +2 -2
  89. package/SVF-doxygen/html/html/classSVF_1_1PTAStat-members.html +24 -22
  90. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +186 -420
  91. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.png +0 -0
  92. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +2 -2
  93. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +12 -12
  94. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat-members.html +33 -32
  95. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +100 -87
  96. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.png +0 -0
  97. package/SVF-doxygen/html/html/classSVF_1_1SVFStat-members.html +100 -0
  98. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +605 -0
  99. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.png +0 -0
  100. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +1 -1
  101. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +4 -4
  102. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +12 -12
  103. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat-members.html +26 -24
  104. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +65 -54
  105. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.png +0 -0
  106. package/SVF-doxygen/html/html/classes.html +50 -50
  107. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  108. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  109. package/SVF-doxygen/html/html/dir_862d3276083eaac55caed79b9120bf29.html +2 -0
  110. package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
  111. package/SVF-doxygen/html/html/files.html +10 -8
  112. package/SVF-doxygen/html/html/functions_0x7e.html +3 -0
  113. package/SVF-doxygen/html/html/functions_c.html +28 -29
  114. package/SVF-doxygen/html/html/functions_e.html +3 -2
  115. package/SVF-doxygen/html/html/functions_enum.html +1 -1
  116. package/SVF-doxygen/html/html/functions_eval_c.html +1 -1
  117. package/SVF-doxygen/html/html/functions_eval_w.html +1 -1
  118. package/SVF-doxygen/html/html/functions_func_0x7e.html +3 -0
  119. package/SVF-doxygen/html/html/functions_func_c.html +28 -27
  120. package/SVF-doxygen/html/html/functions_func_e.html +1 -1
  121. package/SVF-doxygen/html/html/functions_func_g.html +1 -1
  122. package/SVF-doxygen/html/html/functions_func_i.html +11 -8
  123. package/SVF-doxygen/html/html/functions_func_p.html +9 -7
  124. package/SVF-doxygen/html/html/functions_func_s.html +15 -12
  125. package/SVF-doxygen/html/html/functions_g.html +2 -2
  126. package/SVF-doxygen/html/html/functions_i.html +8 -5
  127. package/SVF-doxygen/html/html/functions_l.html +3 -3
  128. package/SVF-doxygen/html/html/functions_m.html +2 -1
  129. package/SVF-doxygen/html/html/functions_n.html +1 -1
  130. package/SVF-doxygen/html/html/functions_p.html +17 -13
  131. package/SVF-doxygen/html/html/functions_r.html +7 -3
  132. package/SVF-doxygen/html/html/functions_s.html +23 -21
  133. package/SVF-doxygen/html/html/functions_t.html +6 -6
  134. package/SVF-doxygen/html/html/functions_type_n.html +1 -1
  135. package/SVF-doxygen/html/html/functions_type_s.html +1 -1
  136. package/SVF-doxygen/html/html/functions_type_t.html +1 -1
  137. package/SVF-doxygen/html/html/functions_v.html +3 -3
  138. package/SVF-doxygen/html/html/functions_vars_e.html +1 -0
  139. package/SVF-doxygen/html/html/functions_vars_g.html +1 -1
  140. package/SVF-doxygen/html/html/functions_vars_m.html +1 -0
  141. package/SVF-doxygen/html/html/functions_vars_s.html +1 -0
  142. package/SVF-doxygen/html/html/functions_vars_t.html +1 -1
  143. package/SVF-doxygen/html/html/functions_w.html +1 -1
  144. package/SVF-doxygen/html/html/hierarchy.html +47 -46
  145. package/SVF-doxygen/html/html/namespaceSVF.html +2 -0
  146. package/SVF-doxygen/html/html/search/all_10.js +8 -8
  147. package/SVF-doxygen/html/html/search/all_11.js +2 -2
  148. package/SVF-doxygen/html/html/search/all_12.js +13 -10
  149. package/SVF-doxygen/html/html/search/all_13.js +4 -4
  150. package/SVF-doxygen/html/html/search/all_14.js +1 -1
  151. package/SVF-doxygen/html/html/search/all_15.js +2 -2
  152. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  153. package/SVF-doxygen/html/html/search/all_19.js +1 -0
  154. package/SVF-doxygen/html/html/search/all_3.js +3 -3
  155. package/SVF-doxygen/html/html/search/all_5.js +2 -2
  156. package/SVF-doxygen/html/html/search/all_7.js +2 -2
  157. package/SVF-doxygen/html/html/search/all_9.js +1 -0
  158. package/SVF-doxygen/html/html/search/all_c.js +1 -1
  159. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  160. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  161. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  162. package/SVF-doxygen/html/html/search/classes_f.js +1 -0
  163. package/SVF-doxygen/html/html/search/enums_1.js +1 -1
  164. package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
  165. package/SVF-doxygen/html/html/search/enumvalues_2.js +1 -1
  166. package/SVF-doxygen/html/html/search/files_d.js +2 -0
  167. package/SVF-doxygen/html/html/search/functions_11.js +3 -2
  168. package/SVF-doxygen/html/html/search/functions_17.js +1 -0
  169. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  170. package/SVF-doxygen/html/html/search/functions_4.js +1 -1
  171. package/SVF-doxygen/html/html/search/functions_6.js +1 -1
  172. package/SVF-doxygen/html/html/search/functions_8.js +1 -0
  173. package/SVF-doxygen/html/html/search/functions_f.js +4 -4
  174. package/SVF-doxygen/html/html/search/typedefs_10.js +1 -1
  175. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  176. package/SVF-doxygen/html/html/search/typedefs_c.js +1 -1
  177. package/SVF-doxygen/html/html/search/variables_12.js +1 -1
  178. package/SVF-doxygen/html/html/search/variables_13.js +2 -2
  179. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  180. package/SVF-doxygen/html/html/search/variables_5.js +1 -1
  181. package/SVF-doxygen/html/html/search/variables_7.js +1 -1
  182. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  183. package/include/Graphs/ICFGStat.h +1 -1
  184. package/include/Util/ExtAPI.h +3 -0
  185. package/include/Util/ExtAPI.json +1456 -44
  186. package/include/Util/PTAStat.h +6 -36
  187. package/include/Util/SVFStat.h +95 -0
  188. package/include/WPA/AndersenPWC.h +1 -1
  189. package/lib/DDA/DDAPass.cpp +1 -0
  190. package/lib/DDA/DDAStat.cpp +1 -0
  191. package/lib/Graphs/SVFGReadWrite.cpp +1 -0
  192. package/lib/Graphs/SVFGStat.cpp +1 -0
  193. package/lib/SVF-FE/CHGBuilder.cpp +1 -0
  194. package/lib/Util/ExtAPI.cpp +42 -4
  195. package/lib/Util/PTAStat.cpp +2 -21
  196. package/lib/Util/SVFStat.cpp +58 -0
  197. package/lib/WPA/Andersen.cpp +1 -0
  198. package/lib/WPA/AndersenSCD.cpp +1 -0
  199. package/lib/WPA/AndersenSFR.cpp +1 -0
  200. package/lib/WPA/AndersenStat.cpp +1 -0
  201. package/lib/WPA/AndersenWaveDiff.cpp +1 -0
  202. package/package.json +1 -1
@@ -67,19 +67,19 @@ $(function() {
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
69
  <a href="Andersen_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">//===- Andersen.h -- Field-sensitive Andersen&#39;s pointer analysis-------------//</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"> * Andersen.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: Nov 12, 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 INCLUDE_WPA_ANDERSEN_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define INCLUDE_WPA_ANDERSEN_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="PointerAnalysisImpl_8h.html">MemoryModel/PointerAnalysisImpl.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="WPAStat_8h.html">WPA/WPAStat.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="WPASolver_8h.html">WPA/WPASolver.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="SVFIR_8h.html">MemoryModel/SVFIR.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="ConsG_8h.html">Graphs/ConsG.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ae9c142945ea31b6c70bceb93eb6f3ca4"> 43</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classSVF_1_1WPASolver.html">WPASolver&lt;ConstraintGraph*&gt;</a> <a class="code" href="namespaceSVF.html#ae9c142945ea31b6c70bceb93eb6f3ca4">WPAConstraintSolver</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html"> 50</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1AndersenBase.html">AndersenBase</a>: <span class="keyword">public</span> WPAConstraintSolver, <span class="keyword">public</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;{</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#af89bc974fda6bed754bb07b3b6ee8ffe"> 55</a></span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#af89bc974fda6bed754bb07b3b6ee8ffe">AndersenBase</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49">Andersen_BASE</a>, <span class="keywordtype">bool</span> alias_check = <span class="keyword">true</span>)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; : <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>(_pag, <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, alias_check), <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>(nullptr)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="classSVF_1_1WPASolver.html#aa7c0636780a86f376e9222bce771e859">iterationForPrintStat</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#afc320fbf269404fe128e69c98e6f9cac">OnTheFlyIterBudgetForStat</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#a8da8746b38c55561d3f6904e8fd0a9aa">~AndersenBase</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a944966086ecb716184c8cdcc43db5751">analyze</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">initialize</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">finalize</a>() <span class="keyword">override</span>;</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_1AndersenBase.html#ac05796a5672ddb5bd0e08924d79da065"> 74</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenBase.html#ac05796a5672ddb5bd0e08924d79da065">updateCallGraph</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a>&amp;)<span class="keyword"> override</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> <span class="keyword">false</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#afa4d710b093a6c7a33cb1aef823781f0"> 81</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenBase.html#afa4d710b093a6c7a33cb1aef823781f0">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AndersenBase.html">AndersenBase</a> *)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a0167fa7b59571c07b2cbec08905f6629"> 85</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenBase.html#a0167fa7b59571c07b2cbec08905f6629">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a> *pta)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> ( pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49">Andersen_BASE</a></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">Andersen_WPA</a></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">AndersenWaveDiff_WPA</a></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1">AndersenSCD_WPA</a></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b">AndersenSFR_WPA</a></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">TypeCPP_WPA</a></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">Steensgaard_WPA</a>);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#aaec5125db063f8c1e7431ac7fe7a70f2"> 98</a></span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>* <a class="code" href="classSVF_1_1AndersenBase.html#aaec5125db063f8c1e7431ac7fe7a70f2">getConstraintGraph</a>()</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a566830d0c7a1f5cd967bb8f2ab168f8d"> 104</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a566830d0c7a1f5cd967bb8f2ab168f8d">printStat</a>()</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ab83b827ea42d3a61aad20b1a1485d866">PointerAnalysis::dumpStat</a>();</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"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#af37392229dab0a1f2f807a12186c3b39">normalizePointsTo</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#aebfe0c7238eb24f74f105b950b86cb5e">cleanConsCG</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>);</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"><a class="line" href="classSVF_1_1AndersenBase.html#a6c3d6b4c004d9e43690c3807502eed74"> 114</a></span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1AndersenBase.html#a6c3d6b4c004d9e43690c3807502eed74">redundantGepNodes</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a4acad18a6eb585ba9e3d2276dd591067"> 118</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a4acad18a6eb585ba9e3d2276dd591067">numOfProcessedAddr</a>; </div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a04acd871bd1b98cd9e83e395334ac130"> 119</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a04acd871bd1b98cd9e83e395334ac130">numOfProcessedCopy</a>; </div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#aa1246b392aeae1fd10c8a9ebedcc2dd9"> 120</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#aa1246b392aeae1fd10c8a9ebedcc2dd9">numOfProcessedGep</a>; </div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a69aae96fc1c99bf108075e5061f50f9e"> 121</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a69aae96fc1c99bf108075e5061f50f9e">numOfProcessedLoad</a>; </div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a2b763519509ce21cf40893c01f8357b6"> 122</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a2b763519509ce21cf40893c01f8357b6">numOfProcessedStore</a>; </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a25b00d9ca71cbdd27530fc5d0dc84ee5"> 123</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a25b00d9ca71cbdd27530fc5d0dc84ee5">numOfSfrs</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a9f453ec1b4236b8194ae590981217259"> 124</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a9f453ec1b4236b8194ae590981217259">numOfFieldExpand</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a0d7298cbf83568f24fd2bd1926a32968"> 126</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a0d7298cbf83568f24fd2bd1926a32968">numOfSCCDetection</a>;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a6b7d0e57f741c446d0bf178939960143"> 127</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1AndersenBase.html#a6b7d0e57f741c446d0bf178939960143">timeOfSCCDetection</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a02c5a50b214d36921e1404784e76704d"> 128</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1AndersenBase.html#a02c5a50b214d36921e1404784e76704d">timeOfSCCMerges</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#ad40b196c2c699bd115529b806d20de25"> 129</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1AndersenBase.html#ad40b196c2c699bd115529b806d20de25">timeOfCollapse</a>;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#adaf738bee77a4b1fbb8d42911fabdb49"> 130</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#adaf738bee77a4b1fbb8d42911fabdb49">AveragePointsToSetSize</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#abd73e930450b7c605f478672bdf9bdae"> 131</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#abd73e930450b7c605f478672bdf9bdae">MaxPointsToSetSize</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#aae14de6fbca9280d8d0290326aa493f0"> 132</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1AndersenBase.html#aae14de6fbca9280d8d0290326aa493f0">timeOfProcessCopyGep</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a9fe738f1e11c80006d540f246a80bfdf"> 133</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1AndersenBase.html#a9fe738f1e11c80006d540f246a80bfdf">timeOfProcessLoadStore</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a2afb49f513c9534fd051117b59dc056b"> 134</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1AndersenBase.html#a2afb49f513c9534fd051117b59dc056b">timeOfUpdateCallGraph</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd"> 139</a></span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>* <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;};</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html"> 145</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1Andersen.html">Andersen</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AndersenBase.html">AndersenBase</a></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;{</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</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"> 149</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a77e7378a3a35622bde2371d7d3ed7013"> 150</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SCCDetection.html">SCCDetection&lt;ConstraintGraph*&gt;</a> <a class="code" href="classSVF_1_1Andersen.html#a77e7378a3a35622bde2371d7d3ed7013">CGSCC</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a0f65f1881111167bffe1cb2ad05c0a51"> 151</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;CallSite, NodeID&gt;</a> <a class="code" href="classSVF_1_1Andersen.html#a0f65f1881111167bffe1cb2ad05c0a51">CallSite2DummyValPN</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a680dc709c0263fc1a13aa5c81d95fc72"> 154</a></span>&#160; <a class="code" href="classSVF_1_1Andersen.html#a680dc709c0263fc1a13aa5c81d95fc72">Andersen</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">Andersen_WPA</a>, <span class="keywordtype">bool</span> alias_check = <span class="keyword">true</span>)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; : <a class="code" href="classSVF_1_1AndersenBase.html">AndersenBase</a>(_pag, <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, alias_check)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a15218a84e653baf2cd7f1dc95ccfb77d"> 160</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1Andersen.html#a15218a84e653baf2cd7f1dc95ccfb77d">~Andersen</a>()</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">initialize</a>();</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">finalize</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_1Andersen.html#a95c0b2f501dff61993cd43a5cab89e17"> 172</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a95c0b2f501dff61993cd43a5cab89e17">resetData</a>()</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#adaf738bee77a4b1fbb8d42911fabdb49">AveragePointsToSetSize</a> = 0;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#abd73e930450b7c605f478672bdf9bdae">MaxPointsToSetSize</a> = 0;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#aae14de6fbca9280d8d0290326aa493f0">timeOfProcessCopyGep</a> = 0;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#a9fe738f1e11c80006d540f246a80bfdf">timeOfProcessLoadStore</a> = 0;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#aaec53980b25ed769fa9a985860f810b5"> 182</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#aaec53980b25ed769fa9a985860f810b5">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1Andersen.html">Andersen</a> *)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a60214d7c6c9aac8e498644b048660ab9"> 186</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#a60214d7c6c9aac8e498644b048660ab9">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a> *pta)</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">return</span> (pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">Andersen_WPA</a></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">AndersenWaveDiff_WPA</a></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1">AndersenSCD_WPA</a></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b">AndersenSFR_WPA</a>);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#aad706e332847e6b0892350a05028ba30"> 197</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1Andersen.html#aad706e332847e6b0892350a05028ba30">sccRepNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#a39b973543acdcdc5493832cc9d0f586f">sccRepNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#acd2feff818906db49a1bb2d94c33db5f"> 201</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>&amp; <a class="code" href="classSVF_1_1Andersen.html#acd2feff818906db49a1bb2d94c33db5f">sccSubNodes</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> repId)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#aed605b010e313f4b11e95b83fe50e3b3">sccSubNodes</a>(repId);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a187285a5bdf9422d9188b2b11b667639"> 208</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; <a class="code" href="classSVF_1_1Andersen.html#a187285a5bdf9422d9188b2b11b667639">getPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1PTData.html#a9ae6037637d8b9acb323333f491f4a7d">getPts</a>(<a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(<span class="keywordtype">id</span>));</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#ab7dadfd4d810be4863f03ed996b3b3c4"> 212</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#ab7dadfd4d810be4863f03ed996b3b3c4">unionPts</a>(<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_1PointsTo.html">PointsTo</a>&amp; target)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keywordtype">id</span>, target);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a8da98a9d33a6e9be329309f4af65e969"> 217</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#a8da98a9d33a6e9be329309f4af65e969">unionPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptd)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; ptd = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(ptd);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keywordtype">id</span>,ptd);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a8d6cea841b6ded0f80ef2b5784e9b752">dumpTopLevelPtsTo</a>();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a1462bdde3748b1513e92a119b8a43794"> 227</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a1462bdde3748b1513e92a119b8a43794">setDetectPWC</a>(<span class="keywordtype">bool</span> flag)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a> = flag;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a2f88b6035ecb480f7d11afe6bc666541"> 234</a></span>&#160; CallSite2DummyValPN <a class="code" href="classSVF_1_1Andersen.html#a2f88b6035ecb480f7d11afe6bc666541">callsite2DummyValPN</a>; </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordtype">void</span> heapAllocatorViaIndCall(<a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs,<a class="code" href="namespaceSVF.html#ac82022f3f81965c3ce9b26c299f537a7">NodePairSet</a> &amp;cpySrcNodes);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a7e26ac6fb40684694f7ff2aadfde8bc7"> 238</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a7e26ac6fb40684694f7ff2aadfde8bc7">computeDiffPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3e311bdcdaf0e39fd7d8566dc7866a44">Options::DiffPts</a>)</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rep = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab9c0bb439f98ae11dd178148109697ab">getDiffPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1DiffPTData.html#a6eab8e1201083ed8705379e100cfb3b7">computeDiffPts</a>(rep, <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab9c0bb439f98ae11dd178148109697ab">getDiffPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(rep));</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a106691684d8e7a69157d423393d83d66"> 246</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; <a class="code" href="classSVF_1_1Andersen.html#a106691684d8e7a69157d423393d83d66">getDiffPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rep = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3e311bdcdaf0e39fd7d8566dc7866a44">Options::DiffPts</a>)</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab9c0bb439f98ae11dd178148109697ab">getDiffPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1DiffPTData.html#a7c4159d873a836b6f6d9b2d2c044921d">getDiffPts</a>(rep);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1PTData.html#a9ae6037637d8b9acb323333f491f4a7d">getPts</a>(rep);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a4baa6fc95d52afa370fc0fabffd42018"> 256</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a4baa6fc95d52afa370fc0fabffd42018">updatePropaPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1Options.html#a3e311bdcdaf0e39fd7d8566dc7866a44">Options::DiffPts</a>)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcRep = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(srcId);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstRep = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(dstId);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab9c0bb439f98ae11dd178148109697ab">getDiffPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1DiffPTData.html#a0f422f826bb378ebb34199f0378e351d">updatePropaPtsMap</a>(srcRep, dstRep);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a839ed248cf5ff8359217e2029f389d8a"> 264</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a839ed248cf5ff8359217e2029f389d8a">clearPropaPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src)</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3e311bdcdaf0e39fd7d8566dc7866a44">Options::DiffPts</a>)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rep = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(src);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab9c0bb439f98ae11dd178148109697ab">getDiffPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1DiffPTData.html#a7784c4a76aa41149975840af8b32c2a9">clearPropaPts</a>(rep);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a9075cd05cb21e0f08a1109b7af6c7480"> 273</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a9075cd05cb21e0f08a1109b7af6c7480">initWorklist</a>() {}</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPASolver.html#abd7fd785e70f66d394088101d78598ca">processNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</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;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordtype">void</span> processAllAddr();</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> processLoad(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* load);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> processStore(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* load);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> processCopy(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> processGep(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node, <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepCGEdge.html">GepCGEdge</a>* edge);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> handleCopyGep(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> handleLoadStore(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> processAddr(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> processGepPts(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepCGEdge.html">GepCGEdge</a>* edge);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a8ba593bd16d4436310f2f25e75687c57"> 293</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#a8ba593bd16d4436310f2f25e75687c57">addCopyEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758">addCopyCGEdge</a>(src, dst))</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; updatePropaPts(src, dst);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenBase.html#ac05796a5672ddb5bd0e08924d79da065">updateCallGraph</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a>&amp; callsites);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordtype">void</span> connectCaller2CalleeParams(<a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>, <a class="code" href="namespaceSVF.html#ac82022f3f81965c3ce9b26c299f537a7">NodePairSet</a>&amp; cpySrcNodes);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> mergeNodeToRep(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId,<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> newRepId);</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; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> mergeSrcToTgt(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId,<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> tgtId);</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"> 315</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordtype">void</span> mergeSccNodes(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> repNodeId, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>&amp; subNodes);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordtype">void</span> mergeSccCycle();</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> collapsePWCNode(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPASolver.html#a79c2b3f10f3f813396d8caaa1f7bc62a">collapseFields</a>();</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordtype">bool</span> collapseNodePts(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordtype">bool</span> collapseField(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordtype">void</span> updateNodeRepAndSubs(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId,<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> newRepId);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#a1811127aebdb9c926e39d155e20b3dc0">NodeStack</a>&amp; <a class="code" href="classSVF_1_1WPASolver.html#aaa932894d00b69cfa741f9987a9cc6b8">SCCDetect</a>();</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a308ef1f3a1c9fd7ac1858d0c690aa37a"> 336</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a308ef1f3a1c9fd7ac1858d0c690aa37a">sanitizePts</a>()</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">ConstraintGraph::iterator</a> it = <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(it-&gt;first);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> fldInsenObjs;</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"> 343</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : pts)</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; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">isFieldInsensitive</a>(o))</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; fldInsenObjs.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(o);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : fldInsenObjs)</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> &amp;allFields = <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#afd200919cf8742bb62bb0bde279a558a">getAllFieldsObjVars</a>(o);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> f : allFields) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(it-&gt;first, f);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#ad92dbecc91170b235180e59ba307acda"> 358</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1Andersen.html#ad92dbecc91170b235180e59ba307acda">PTAName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;AndersenWPA&quot;</span>;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> cluster(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</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"> 367</span>&#160;</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;</div><div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenWaveDiff.html"> 373</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1Andersen.html">Andersen</a></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;{</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenWaveDiff.html#add4dcb6d74a8ce8747bcac5f740cd672"> 378</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>* <a class="code" href="classSVF_1_1AndersenWaveDiff.html#add4dcb6d74a8ce8747bcac5f740cd672">diffWave</a>; <span class="comment">// static instance</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenWaveDiff.html#a7478d23055a5db981d7a9515cffc99da"> 381</a></span>&#160; <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a7478d23055a5db981d7a9515cffc99da">AndersenWaveDiff</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">AndersenWaveDiff_WPA</a>, <span class="keywordtype">bool</span> alias_check = <span class="keyword">true</span>): <a class="code" href="classSVF_1_1Andersen.html">Andersen</a>(_pag, <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, alias_check) {}</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_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540"> 384</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>* <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">createAndersenWaveDiff</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag)</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">if</span>(diffWave==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; diffWave = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>(_pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">AndersenWaveDiff_WPA</a>, <span class="keyword">false</span>);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; diffWave-&gt;<a class="code" href="classSVF_1_1AndersenBase.html#a944966086ecb716184c8cdcc43db5751">analyze</a>();</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">return</span> diffWave;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">return</span> diffWave;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenWaveDiff.html#a5da6abb1a7f0ef3e3871ea6e5a623625"> 394</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a5da6abb1a7f0ef3e3871ea6e5a623625">releaseAndersenWaveDiff</a>()</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">if</span> (diffWave)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keyword">delete</span> diffWave;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; diffWave = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">initialize</a>();</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPASolver.html#af1bb670efde7006e3e99b3735e4fc4cc">solveWorklist</a>();</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPASolver.html#abd7fd785e70f66d394088101d78598ca">processNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> postProcessNode(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> handleLoad(<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_1ConstraintEdge.html">ConstraintEdge</a>* load);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> handleStore(<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_1ConstraintEdge.html">ConstraintEdge</a>* store);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;};</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;} <span class="comment">// End namespace SVF</span></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="preprocessor">#endif </span><span class="comment">/* INCLUDE_WPA_ANDERSEN_H_ */</span><span class="preprocessor"></span></div><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>
70
- <div class="ttc" id="classSVF_1_1AndersenBase_html_a8da8746b38c55561d3f6904e8fd0a9aa"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a8da8746b38c55561d3f6904e8fd0a9aa">SVF::AndersenBase::~AndersenBase</a></div><div class="ttdeci">~AndersenBase() override</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00063">Andersen.cpp:63</a></div></div>
70
+ <div class="ttc" id="classSVF_1_1AndersenBase_html_a8da8746b38c55561d3f6904e8fd0a9aa"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a8da8746b38c55561d3f6904e8fd0a9aa">SVF::AndersenBase::~AndersenBase</a></div><div class="ttdeci">~AndersenBase() override</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00064">Andersen.cpp:64</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1AndersenBase_html_aae14de6fbca9280d8d0290326aa493f0"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#aae14de6fbca9280d8d0290326aa493f0">SVF::AndersenBase::timeOfProcessCopyGep</a></div><div class="ttdeci">static double timeOfProcessCopyGep</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00132">Andersen.h:132</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ae94cea78b71fb75837ee2a17b5ed0e81"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">SVF::BVDataPTAImpl::getPTDataTy</a></div><div class="ttdeci">PTDataTy * getPTDataTy() const</div><div class="ttdoc">Get points-to data structure. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00162">PointerAnalysisImpl.h:162</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1Andersen_html_a187285a5bdf9422d9188b2b11b667639"><div class="ttname"><a href="classSVF_1_1Andersen.html#a187285a5bdf9422d9188b2b11b667639">SVF::Andersen::getPts</a></div><div class="ttdeci">virtual const PointsTo &amp; getPts(NodeID id)</div><div class="ttdoc">Operation of points-to set. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00208">Andersen.h:208</a></div></div>
75
75
  <div class="ttc" id="WPAStat_8h_html"><div class="ttname"><a href="WPAStat_8h.html">WPAStat.h</a></div></div>
76
- <div class="ttc" id="classSVF_1_1AndersenBase_html_a891816407a4c6346f56bc01a67b78aac"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">SVF::AndersenBase::initialize</a></div><div class="ttdeci">virtual void initialize() override</div><div class="ttdoc">Initialize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00072">Andersen.cpp:72</a></div></div>
76
+ <div class="ttc" id="classSVF_1_1AndersenBase_html_a891816407a4c6346f56bc01a67b78aac"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">SVF::AndersenBase::initialize</a></div><div class="ttdeci">virtual void initialize() override</div><div class="ttdoc">Initialize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00073">Andersen.cpp:73</a></div></div>
77
77
  <div class="ttc" id="classSVF_1_1Andersen_html_ad92dbecc91170b235180e59ba307acda"><div class="ttname"><a href="classSVF_1_1Andersen.html#ad92dbecc91170b235180e59ba307acda">SVF::Andersen::PTAName</a></div><div class="ttdeci">virtual const std::string PTAName() const</div><div class="ttdoc">Get PTA name. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00358">Andersen.h:358</a></div></div>
78
78
  <div class="ttc" id="classSVF_1_1Andersen_html_a106691684d8e7a69157d423393d83d66"><div class="ttname"><a href="classSVF_1_1Andersen.html#a106691684d8e7a69157d423393d83d66">SVF::Andersen::getDiffPts</a></div><div class="ttdeci">virtual const PointsTo &amp; getDiffPts(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00246">Andersen.h:246</a></div></div>
79
- <div class="ttc" id="classSVF_1_1AndersenBase_html_aebfe0c7238eb24f74f105b950b86cb5e"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#aebfe0c7238eb24f74f105b950b86cb5e">SVF::AndersenBase::cleanConsCG</a></div><div class="ttdeci">void cleanConsCG(NodeID id)</div><div class="ttdoc">remove redundant gepnodes in constraint graph </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00152">Andersen.cpp:152</a></div></div>
79
+ <div class="ttc" id="classSVF_1_1AndersenBase_html_aebfe0c7238eb24f74f105b950b86cb5e"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#aebfe0c7238eb24f74f105b950b86cb5e">SVF::AndersenBase::cleanConsCG</a></div><div class="ttdeci">void cleanConsCG(NodeID id)</div><div class="ttdoc">remove redundant gepnodes in constraint graph </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00153">Andersen.cpp:153</a></div></div>
80
80
  <div class="ttc" id="ConsG_8h_html"><div class="ttname"><a href="ConsG_8h.html">ConsG.h</a></div></div>
81
81
  <div class="ttc" id="classSVF_1_1DiffPTData_html_a6eab8e1201083ed8705379e100cfb3b7"><div class="ttname"><a href="classSVF_1_1DiffPTData.html#a6eab8e1201083ed8705379e100cfb3b7">SVF::DiffPTData::computeDiffPts</a></div><div class="ttdeci">virtual bool computeDiffPts(Key &amp;var, const DataSet &amp;all)=0</div></div>
82
- <div class="ttc" id="classSVF_1_1AndersenBase_html_af37392229dab0a1f2f807a12186c3b39"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#af37392229dab0a1f2f807a12186c3b39">SVF::AndersenBase::normalizePointsTo</a></div><div class="ttdeci">virtual void normalizePointsTo() override</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00162">Andersen.cpp:162</a></div></div>
82
+ <div class="ttc" id="classSVF_1_1AndersenBase_html_af37392229dab0a1f2f807a12186c3b39"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#af37392229dab0a1f2f807a12186c3b39">SVF::AndersenBase::normalizePointsTo</a></div><div class="ttdeci">virtual void normalizePointsTo() override</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00163">Andersen.cpp:163</a></div></div>
83
83
  <div class="ttc" id="classSVF_1_1Andersen_html_ab7dadfd4d810be4863f03ed996b3b3c4"><div class="ttname"><a href="classSVF_1_1Andersen.html#ab7dadfd4d810be4863f03ed996b3b3c4">SVF::Andersen::unionPts</a></div><div class="ttdeci">virtual bool unionPts(NodeID id, const PointsTo &amp;target)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00212">Andersen.h:212</a></div></div>
84
84
  <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#l00019">MTAResultValidator.h:19</a></div></div>
85
85
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html">SVF::ConstraintGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00044">ConsG.h:44</a></div></div>
@@ -104,7 +104,7 @@ $(function() {
104
104
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a04acd871bd1b98cd9e83e395334ac130"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a04acd871bd1b98cd9e83e395334ac130">SVF::AndersenBase::numOfProcessedCopy</a></div><div class="ttdeci">static u32_t numOfProcessedCopy</div><div class="ttdoc">Number of processed Addr edge. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00119">Andersen.h:119</a></div></div>
105
105
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a02c5a50b214d36921e1404784e76704d"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a02c5a50b214d36921e1404784e76704d">SVF::AndersenBase::timeOfSCCMerges</a></div><div class="ttdeci">static double timeOfSCCMerges</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00128">Andersen.h:128</a></div></div>
106
106
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_afc320fbf269404fe128e69c98e6f9cac"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#afc320fbf269404fe128e69c98e6f9cac">SVF::PointerAnalysis::OnTheFlyIterBudgetForStat</a></div><div class="ttdeci">u32_t OnTheFlyIterBudgetForStat</div><div class="ttdoc">Flag for iteration budget for on-the-fly statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00138">PointerAnalysis.h:138</a></div></div>
107
- <div class="ttc" id="classSVF_1_1AndersenBase_html_a944966086ecb716184c8cdcc43db5751"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a944966086ecb716184c8cdcc43db5751">SVF::AndersenBase::analyze</a></div><div class="ttdeci">virtual void analyze() override</div><div class="ttdoc">Andersen analysis. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00102">Andersen.cpp:102</a></div></div>
107
+ <div class="ttc" id="classSVF_1_1AndersenBase_html_a944966086ecb716184c8cdcc43db5751"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a944966086ecb716184c8cdcc43db5751">SVF::AndersenBase::analyze</a></div><div class="ttdeci">virtual void analyze() override</div><div class="ttdoc">Andersen analysis. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00103">Andersen.cpp:103</a></div></div>
108
108
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ac23f71c1307cda9cba44acc40059f0a3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">SVF::PointerAnalysis::getAnalysisTy</a></div><div class="ttdeci">PTATY getAnalysisTy() const</div><div class="ttdoc">Type of pointer analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00188">PointerAnalysis.h:188</a></div></div>
109
109
  <div class="ttc" id="SVFIR_8h_html"><div class="ttname"><a href="SVFIR_8h.html">SVFIR.h</a></div></div>
110
110
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a4acad18a6eb585ba9e3d2276dd591067"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a4acad18a6eb585ba9e3d2276dd591067">SVF::AndersenBase::numOfProcessedAddr</a></div><div class="ttdeci">static u32_t numOfProcessedAddr</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00118">Andersen.h:118</a></div></div>
@@ -143,7 +143,7 @@ $(function() {
143
143
  <div class="ttc" id="classSVF_1_1AndersenBase_html_afa4d710b093a6c7a33cb1aef823781f0"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#afa4d710b093a6c7a33cb1aef823781f0">SVF::AndersenBase::classof</a></div><div class="ttdeci">static bool classof(const AndersenBase *)</div><div class="ttdoc">Methods for support type inquiry through isa, cast, and dyn_cast: </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00081">Andersen.h:81</a></div></div>
144
144
  <div class="ttc" id="classSVF_1_1WPASolver_html_a3bd463cd456a1d58242f118328f51ddb"><div class="ttname"><a href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">SVF::WPASolver::sccRepNode</a></div><div class="ttdeci">virtual NodeID sccRepNode(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00148">WPASolver.h:148</a></div></div>
145
145
  <div class="ttc" id="classSVF_1_1DiffPTData_html_a7c4159d873a836b6f6d9b2d2c044921d"><div class="ttname"><a href="classSVF_1_1DiffPTData.html#a7c4159d873a836b6f6d9b2d2c044921d">SVF::DiffPTData::getDiffPts</a></div><div class="ttdeci">virtual const DataSet &amp; getDiffPts(Key &amp;var)=0</div><div class="ttdoc">Get diff points to. </div></div>
146
- <div class="ttc" id="classSVF_1_1AndersenBase_html_a28a1c3571cdee5e05004b29ace364e67"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">SVF::AndersenBase::finalize</a></div><div class="ttdeci">virtual void finalize() override</div><div class="ttdoc">Finalize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00088">Andersen.cpp:88</a></div></div>
146
+ <div class="ttc" id="classSVF_1_1AndersenBase_html_a28a1c3571cdee5e05004b29ace364e67"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">SVF::AndersenBase::finalize</a></div><div class="ttdeci">virtual void finalize() override</div><div class="ttdoc">Finalize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00089">Andersen.cpp:89</a></div></div>
147
147
  <div class="ttc" id="classSVF_1_1AndersenBase_html_af89bc974fda6bed754bb07b3b6ee8ffe"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#af89bc974fda6bed754bb07b3b6ee8ffe">SVF::AndersenBase::AndersenBase</a></div><div class="ttdeci">AndersenBase(SVFIR *_pag, PTATY type=Andersen_BASE, bool alias_check=true)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00055">Andersen.h:55</a></div></div>
148
148
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a39b973543acdcdc5493832cc9d0f586f"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a39b973543acdcdc5493832cc9d0f586f">SVF::ConstraintGraph::sccRepNode</a></div><div class="ttdeci">NodeID sccRepNode(NodeID id) const</div><div class="ttdoc">SCC rep/sub nodes methods. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00233">ConsG.h:233</a></div></div>
149
149
  <div class="ttc" id="classSVF_1_1Options_html_a3e311bdcdaf0e39fd7d8566dc7866a44"><div class="ttname"><a href="classSVF_1_1Options.html#a3e311bdcdaf0e39fd7d8566dc7866a44">SVF::Options::DiffPts</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; DiffPts</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00237">Options.h:237</a></div></div>
@@ -107,7 +107,7 @@ Variables</h2></td></tr>
107
107
  </table>
108
108
  </div><div class="memdoc">
109
109
 
110
- <p class="definition">Definition at line <a class="el" href="CHGBuilder_8cpp_source.html#l00053">53</a> of file <a class="el" href="CHGBuilder_8cpp_source.html">CHGBuilder.cpp</a>.</p>
110
+ <p class="definition">Definition at line <a class="el" href="CHGBuilder_8cpp_source.html#l00054">54</a> of file <a class="el" href="CHGBuilder_8cpp_source.html">CHGBuilder.cpp</a>.</p>
111
111
 
112
112
  </div>
113
113
  </div>
@@ -123,7 +123,7 @@ Variables</h2></td></tr>
123
123
  </table>
124
124
  </div><div class="memdoc">
125
125
 
126
- <p class="definition">Definition at line <a class="el" href="CHGBuilder_8cpp_source.html#l00055">55</a> of file <a class="el" href="CHGBuilder_8cpp_source.html">CHGBuilder.cpp</a>.</p>
126
+ <p class="definition">Definition at line <a class="el" href="CHGBuilder_8cpp_source.html#l00056">56</a> of file <a class="el" href="CHGBuilder_8cpp_source.html">CHGBuilder.cpp</a>.</p>
127
127
 
128
128
  </div>
129
129
  </div>