svf-tools 1.0.577 → 1.0.579

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 (166) hide show
  1. package/SVF-doxygen/html/html/CFLAlias_8cpp.html +0 -1
  2. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +10 -42
  3. package/SVF-doxygen/html/html/CFLAlias_8h.html +1 -8
  4. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +22 -49
  5. package/SVF-doxygen/html/html/CFLBase_8cpp.html +89 -0
  6. package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +119 -0
  7. package/SVF-doxygen/html/html/CFLBase_8h.html +104 -0
  8. package/SVF-doxygen/html/html/CFLBase_8h_source.html +117 -0
  9. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +2 -2
  10. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +5 -4
  11. package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +17 -58
  12. package/SVF-doxygen/html/html/CFLStat_8h.html +1 -0
  13. package/SVF-doxygen/html/html/CFLStat_8h_source.html +12 -22
  14. package/SVF-doxygen/html/html/CFLVF_8cpp.html +0 -2
  15. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +4 -15
  16. package/SVF-doxygen/html/html/CFLVF_8h.html +3 -8
  17. package/SVF-doxygen/html/html/CFLVF_8h_source.html +11 -26
  18. package/SVF-doxygen/html/html/CHG_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
  20. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  21. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  22. package/SVF-doxygen/html/html/ConsG_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
  24. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +1 -1
  27. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -1
  28. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
  29. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  30. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
  32. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  34. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +1 -1
  35. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  36. package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/TCT_8h_source.html +1 -1
  38. package/SVF-doxygen/html/html/VFG_8cpp_source.html +1 -1
  39. package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
  40. package/SVF-doxygen/html/html/annotated.html +271 -270
  41. package/SVF-doxygen/html/html/cfl_8cpp.html +6 -9
  42. package/SVF-doxygen/html/html/cfl_8cpp_source.html +6 -8
  43. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +9 -8
  44. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.png +0 -0
  45. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +120 -121
  46. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +212 -713
  47. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.png +0 -0
  48. package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +270 -0
  49. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +1199 -0
  50. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.png +0 -0
  51. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph-members.html +21 -20
  52. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +33 -3
  53. package/SVF-doxygen/html/html/classSVF_1_1CFLStat-members.html +21 -31
  54. package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +62 -358
  55. package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +94 -80
  56. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +207 -287
  57. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.png +0 -0
  58. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  59. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
  60. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +21 -20
  61. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  62. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +12 -11
  63. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.png +0 -0
  64. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +1 -1
  65. package/SVF-doxygen/html/html/classes.html +96 -95
  66. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  67. package/SVF-doxygen/html/html/dir_98f9a352f241e0e917d4efaa4086f6e8.html +2 -0
  68. package/SVF-doxygen/html/html/dir_ae8aa099e368efaa962140c6624142bc.html +2 -0
  69. package/SVF-doxygen/html/html/files.html +15 -13
  70. package/SVF-doxygen/html/html/functions.html +0 -8
  71. package/SVF-doxygen/html/html/functions_0x7e.html +2 -5
  72. package/SVF-doxygen/html/html/functions_a.html +9 -11
  73. package/SVF-doxygen/html/html/functions_b.html +11 -4
  74. package/SVF-doxygen/html/html/functions_c.html +33 -32
  75. package/SVF-doxygen/html/html/functions_f.html +16 -14
  76. package/SVF-doxygen/html/html/functions_func.html +6 -7
  77. package/SVF-doxygen/html/html/functions_func_0x7e.html +2 -5
  78. package/SVF-doxygen/html/html/functions_func_b.html +7 -0
  79. package/SVF-doxygen/html/html/functions_func_c.html +31 -23
  80. package/SVF-doxygen/html/html/functions_func_f.html +3 -1
  81. package/SVF-doxygen/html/html/functions_func_g.html +14 -11
  82. package/SVF-doxygen/html/html/functions_func_i.html +9 -7
  83. package/SVF-doxygen/html/html/functions_func_n.html +3 -0
  84. package/SVF-doxygen/html/html/functions_func_p.html +1 -1
  85. package/SVF-doxygen/html/html/functions_func_s.html +14 -13
  86. package/SVF-doxygen/html/html/functions_g.html +19 -15
  87. package/SVF-doxygen/html/html/functions_i.html +16 -14
  88. package/SVF-doxygen/html/html/functions_l.html +6 -6
  89. package/SVF-doxygen/html/html/functions_m.html +1 -2
  90. package/SVF-doxygen/html/html/functions_n.html +15 -8
  91. package/SVF-doxygen/html/html/functions_p.html +10 -10
  92. package/SVF-doxygen/html/html/functions_r.html +1 -1
  93. package/SVF-doxygen/html/html/functions_s.html +22 -21
  94. package/SVF-doxygen/html/html/functions_t.html +17 -13
  95. package/SVF-doxygen/html/html/functions_type_c.html +0 -1
  96. package/SVF-doxygen/html/html/functions_v.html +3 -3
  97. package/SVF-doxygen/html/html/functions_vars.html +0 -8
  98. package/SVF-doxygen/html/html/functions_vars_a.html +0 -1
  99. package/SVF-doxygen/html/html/functions_vars_c.html +0 -2
  100. package/SVF-doxygen/html/html/functions_vars_g.html +5 -4
  101. package/SVF-doxygen/html/html/functions_vars_m.html +0 -1
  102. package/SVF-doxygen/html/html/functions_vars_n.html +12 -8
  103. package/SVF-doxygen/html/html/functions_vars_p.html +1 -1
  104. package/SVF-doxygen/html/html/functions_vars_s.html +2 -4
  105. package/SVF-doxygen/html/html/functions_vars_t.html +12 -6
  106. package/SVF-doxygen/html/html/hierarchy.html +58 -57
  107. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  108. package/SVF-doxygen/html/html/namespaceSVF.html +3 -0
  109. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  110. package/SVF-doxygen/html/html/search/all_0.js +8 -8
  111. package/SVF-doxygen/html/html/search/all_1.js +2 -2
  112. package/SVF-doxygen/html/html/search/all_10.js +6 -6
  113. package/SVF-doxygen/html/html/search/all_11.js +1 -1
  114. package/SVF-doxygen/html/html/search/all_12.js +11 -11
  115. package/SVF-doxygen/html/html/search/all_13.js +16 -12
  116. package/SVF-doxygen/html/html/search/all_15.js +3 -3
  117. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  118. package/SVF-doxygen/html/html/search/all_19.js +1 -2
  119. package/SVF-doxygen/html/html/search/all_2.js +2 -0
  120. package/SVF-doxygen/html/html/search/all_3.js +12 -7
  121. package/SVF-doxygen/html/html/search/all_6.js +4 -4
  122. package/SVF-doxygen/html/html/search/all_7.js +5 -4
  123. package/SVF-doxygen/html/html/search/all_9.js +4 -4
  124. package/SVF-doxygen/html/html/search/all_b.js +1 -1
  125. package/SVF-doxygen/html/html/search/all_c.js +4 -4
  126. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  127. package/SVF-doxygen/html/html/search/all_e.js +14 -9
  128. package/SVF-doxygen/html/html/search/classes_2.js +1 -0
  129. package/SVF-doxygen/html/html/search/files_2.js +2 -0
  130. package/SVF-doxygen/html/html/search/functions_0.js +1 -1
  131. package/SVF-doxygen/html/html/search/functions_1.js +2 -0
  132. package/SVF-doxygen/html/html/search/functions_11.js +3 -3
  133. package/SVF-doxygen/html/html/search/functions_17.js +1 -2
  134. package/SVF-doxygen/html/html/search/functions_2.js +5 -2
  135. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  136. package/SVF-doxygen/html/html/search/functions_6.js +2 -1
  137. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  138. package/SVF-doxygen/html/html/search/functions_d.js +1 -0
  139. package/SVF-doxygen/html/html/search/functions_f.js +1 -1
  140. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
  141. package/SVF-doxygen/html/html/search/variables_0.js +8 -8
  142. package/SVF-doxygen/html/html/search/variables_1.js +1 -1
  143. package/SVF-doxygen/html/html/search/variables_10.js +1 -1
  144. package/SVF-doxygen/html/html/search/variables_12.js +2 -2
  145. package/SVF-doxygen/html/html/search/variables_13.js +13 -9
  146. package/SVF-doxygen/html/html/search/variables_3.js +2 -2
  147. package/SVF-doxygen/html/html/search/variables_7.js +3 -2
  148. package/SVF-doxygen/html/html/search/variables_9.js +1 -1
  149. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  150. package/SVF-doxygen/html/html/search/variables_e.js +12 -8
  151. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +1 -1
  152. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +2 -2
  153. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +1 -1
  154. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  155. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  156. package/include/CFL/CFLAlias.h +12 -51
  157. package/include/CFL/CFLBase.h +110 -0
  158. package/include/CFL/CFLStat.h +7 -18
  159. package/include/CFL/CFLVF.h +13 -25
  160. package/include/Graphs/CFLGraph.h +5 -0
  161. package/lib/CFL/CFLAlias.cpp +33 -66
  162. package/lib/CFL/CFLBase.cpp +133 -0
  163. package/lib/CFL/CFLStat.cpp +22 -149
  164. package/lib/CFL/CFLVF.cpp +28 -38
  165. package/package.json +1 -1
  166. package/tools/CFL/cfl.cpp +12 -25
@@ -79,6 +79,7 @@ Inheritance diagram for SVF::CFLAlias:</div>
79
79
  <div class="center">
80
80
  <img src="classSVF_1_1CFLAlias.png" usemap="#SVF::CFLAlias_map" alt=""/>
81
81
  <map id="SVF::CFLAlias_map" name="SVF::CFLAlias_map">
82
+ <area href="classSVF_1_1CFLBase.html" title="CFL Client Base Class. " alt="SVF::CFLBase" shape="rect" coords="0,112,132,136"/>
82
83
  <area href="classSVF_1_1BVDataPTAImpl.html" alt="SVF::BVDataPTAImpl" shape="rect" coords="0,56,132,80"/>
83
84
  <area href="classSVF_1_1PointerAnalysis.html" alt="SVF::PointerAnalysis" shape="rect" coords="0,0,132,24"/>
84
85
  </map>
@@ -182,17 +183,20 @@ Public Types</h2></td></tr>
182
183
  Public Member Functions</h2></td></tr>
183
184
  <tr class="memitem:aae1dbf8d8c413eb7812ca428edfbae48"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#aae1dbf8d8c413eb7812ca428edfbae48">CFLAlias</a> (<a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> *ir)</td></tr>
184
185
  <tr class="separator:aae1dbf8d8c413eb7812ca428edfbae48"><td class="memSeparator" colspan="2">&#160;</td></tr>
185
- <tr class="memitem:a0e8b474695b21c55a11e71ff59d646d5"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#a0e8b474695b21c55a11e71ff59d646d5">~CFLAlias</a> ()</td></tr>
186
- <tr class="memdesc:a0e8b474695b21c55a11e71ff59d646d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <a href="#a0e8b474695b21c55a11e71ff59d646d5">More...</a><br /></td></tr>
187
- <tr class="separator:a0e8b474695b21c55a11e71ff59d646d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
188
- <tr class="memitem:afc6922e9f1965ed85ef87151e00f5311"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#afc6922e9f1965ed85ef87151e00f5311">analyze</a> ()</td></tr>
189
- <tr class="memdesc:afc6922e9f1965ed85ef87151e00f5311"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start Analysis here (main part of pointer analysis). <a href="#afc6922e9f1965ed85ef87151e00f5311">More...</a><br /></td></tr>
190
- <tr class="separator:afc6922e9f1965ed85ef87151e00f5311"><td class="memSeparator" colspan="2">&#160;</td></tr>
186
+ <tr class="memitem:aef129edd61d7f15947c6539f8d0c36a0"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#aef129edd61d7f15947c6539f8d0c36a0">initialize</a> ()</td></tr>
187
+ <tr class="memdesc:aef129edd61d7f15947c6539f8d0c36a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the grammar, graph, solver. <a href="#aef129edd61d7f15947c6539f8d0c36a0">More...</a><br /></td></tr>
188
+ <tr class="separator:aef129edd61d7f15947c6539f8d0c36a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
189
+ <tr class="memitem:a1b7e49b3f42d625f1f25258044f8b885"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#a1b7e49b3f42d625f1f25258044f8b885">finalize</a> ()</td></tr>
190
+ <tr class="memdesc:a1b7e49b3f42d625f1f25258044f8b885"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print grammar and graph. <a href="#a1b7e49b3f42d625f1f25258044f8b885">More...</a><br /></td></tr>
191
+ <tr class="separator:a1b7e49b3f42d625f1f25258044f8b885"><td class="memSeparator" colspan="2">&#160;</td></tr>
192
+ <tr class="memitem:a5b7d65e7e74d596d61a1aad75e53cf27"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#a5b7d65e7e74d596d61a1aad75e53cf27">solve</a> ()</td></tr>
193
+ <tr class="memdesc:a5b7d65e7e74d596d61a1aad75e53cf27"><td class="mdescLeft">&#160;</td><td class="mdescRight">Solving CFL Reachability. <a href="#a5b7d65e7e74d596d61a1aad75e53cf27">More...</a><br /></td></tr>
194
+ <tr class="separator:a5b7d65e7e74d596d61a1aad75e53cf27"><td class="memSeparator" colspan="2">&#160;</td></tr>
191
195
  <tr class="memitem:a0575c3badff6a158a6043e3e940af507"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943">AliasResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#a0575c3badff6a158a6043e3e940af507">alias</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *v1, const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *v2)</td></tr>
192
- <tr class="memdesc:a0575c3badff6a158a6043e3e940af507"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interface exposed to users of our pointer analysis, given Value infos. <a href="#a0575c3badff6a158a6043e3e940af507">More...</a><br /></td></tr>
196
+ <tr class="memdesc:a0575c3badff6a158a6043e3e940af507"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interface exposed to users of our Alias analysis, given Value infos. <a href="#a0575c3badff6a158a6043e3e940af507">More...</a><br /></td></tr>
193
197
  <tr class="separator:a0575c3badff6a158a6043e3e940af507"><td class="memSeparator" colspan="2">&#160;</td></tr>
194
198
  <tr class="memitem:afb96040a903b9b889fcf23b26cb4565a"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943">AliasResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#afb96040a903b9b889fcf23b26cb4565a">alias</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node1, <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node2)</td></tr>
195
- <tr class="memdesc:afb96040a903b9b889fcf23b26cb4565a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interface exposed to users of our pointer analysis, given PAGNodeID. <a href="#afb96040a903b9b889fcf23b26cb4565a">More...</a><br /></td></tr>
199
+ <tr class="memdesc:afb96040a903b9b889fcf23b26cb4565a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interface exposed to users of our Alias analysis, given PAGNodeID. <a href="#afb96040a903b9b889fcf23b26cb4565a">More...</a><br /></td></tr>
196
200
  <tr class="separator:afb96040a903b9b889fcf23b26cb4565a"><td class="memSeparator" colspan="2">&#160;</td></tr>
197
201
  <tr class="memitem:acbbacca91cb85f67523aa8f84f6fe629"><td class="memItemLeft" align="right" valign="top">virtual const <a class="el" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#acbbacca91cb85f67523aa8f84f6fe629">getCFLPts</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptr)</td></tr>
198
202
  <tr class="memdesc:acbbacca91cb85f67523aa8f84f6fe629"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get points-to targets of a pointer. V In this context. <a href="#acbbacca91cb85f67523aa8f84f6fe629">More...</a><br /></td></tr>
@@ -214,9 +218,30 @@ Public Member Functions</h2></td></tr>
214
218
  <tr class="separator:abfab36c0d5edbdfb94e617bed61ba875"><td class="memSeparator" colspan="2">&#160;</td></tr>
215
219
  <tr class="memitem:a40841c2b47cf690af5c13ba7662d0863"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#a40841c2b47cf690af5c13ba7662d0863">heapAllocatorViaIndCall</a> (<a class="el" href="classSVF_1_1CallSite.html">CallSite</a> cs)</td></tr>
216
220
  <tr class="separator:a40841c2b47cf690af5c13ba7662d0863"><td class="memSeparator" colspan="2">&#160;</td></tr>
217
- <tr class="memitem:ade2773347ef08df69713e14cf1a24352"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1CFLGraph.html">CFLGraph</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#ade2773347ef08df69713e14cf1a24352">getCFLGraph</a> ()</td></tr>
218
- <tr class="memdesc:ade2773347ef08df69713e14cf1a24352"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get CFL graph. <a href="#ade2773347ef08df69713e14cf1a24352">More...</a><br /></td></tr>
219
- <tr class="separator:ade2773347ef08df69713e14cf1a24352"><td class="memSeparator" colspan="2">&#160;</td></tr>
221
+ <tr class="inherit_header pub_methods_classSVF_1_1CFLBase"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classSVF_1_1CFLBase')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classSVF_1_1CFLBase.html">SVF::CFLBase</a></td></tr>
222
+ <tr class="memitem:a59c71b0eada5c763ce776f3618d08dd8 inherit pub_methods_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#a59c71b0eada5c763ce776f3618d08dd8">CFLBase</a> (<a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> *ir, <a class="el" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PointerAnalysis::PTATY</a> pty)</td></tr>
223
+ <tr class="separator:a59c71b0eada5c763ce776f3618d08dd8 inherit pub_methods_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
224
+ <tr class="memitem:a9bcd55546fc9ec1fbbac2b257ffa3243 inherit pub_methods_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#a9bcd55546fc9ec1fbbac2b257ffa3243">~CFLBase</a> ()</td></tr>
225
+ <tr class="memdesc:a9bcd55546fc9ec1fbbac2b257ffa3243 inherit pub_methods_classSVF_1_1CFLBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <a href="classSVF_1_1CFLBase.html#a9bcd55546fc9ec1fbbac2b257ffa3243">More...</a><br /></td></tr>
226
+ <tr class="separator:a9bcd55546fc9ec1fbbac2b257ffa3243 inherit pub_methods_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
227
+ <tr class="memitem:a77bc3b0260fe02cdcf41fdb6b80caa09 inherit pub_methods_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#a77bc3b0260fe02cdcf41fdb6b80caa09">buildCFLGrammar</a> ()</td></tr>
228
+ <tr class="memdesc:a77bc3b0260fe02cdcf41fdb6b80caa09 inherit pub_methods_classSVF_1_1CFLBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Build Grammar from text file. <a href="classSVF_1_1CFLBase.html#a77bc3b0260fe02cdcf41fdb6b80caa09">More...</a><br /></td></tr>
229
+ <tr class="separator:a77bc3b0260fe02cdcf41fdb6b80caa09 inherit pub_methods_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
230
+ <tr class="memitem:a0daabb58bd7d5be40379ccc670c37a93 inherit pub_methods_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#a0daabb58bd7d5be40379ccc670c37a93">buildCFLGraph</a> ()</td></tr>
231
+ <tr class="memdesc:a0daabb58bd7d5be40379ccc670c37a93 inherit pub_methods_classSVF_1_1CFLBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Build <a class="el" href="classSVF_1_1CFLGraph.html">CFLGraph</a> based on Option. <a href="classSVF_1_1CFLBase.html#a0daabb58bd7d5be40379ccc670c37a93">More...</a><br /></td></tr>
232
+ <tr class="separator:a0daabb58bd7d5be40379ccc670c37a93 inherit pub_methods_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
233
+ <tr class="memitem:a462de3facd2a9365d32397d250414ee9 inherit pub_methods_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#a462de3facd2a9365d32397d250414ee9">normalizeCFLGrammar</a> ()</td></tr>
234
+ <tr class="memdesc:a462de3facd2a9365d32397d250414ee9 inherit pub_methods_classSVF_1_1CFLBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Normalize grammar. <a href="classSVF_1_1CFLBase.html#a462de3facd2a9365d32397d250414ee9">More...</a><br /></td></tr>
235
+ <tr class="separator:a462de3facd2a9365d32397d250414ee9 inherit pub_methods_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
236
+ <tr class="memitem:a22ab9bbaee16e06d04817db8c394cc0b inherit pub_methods_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1CFLGraph.html">CFLGraph</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#a22ab9bbaee16e06d04817db8c394cc0b">getCFLGraph</a> ()</td></tr>
237
+ <tr class="memdesc:a22ab9bbaee16e06d04817db8c394cc0b inherit pub_methods_classSVF_1_1CFLBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get CFL graph. <a href="classSVF_1_1CFLBase.html#a22ab9bbaee16e06d04817db8c394cc0b">More...</a><br /></td></tr>
238
+ <tr class="separator:a22ab9bbaee16e06d04817db8c394cc0b inherit pub_methods_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
239
+ <tr class="memitem:a824da17d03599090d4e3b4c50aeccff9 inherit pub_methods_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#a824da17d03599090d4e3b4c50aeccff9">countSumEdges</a> ()</td></tr>
240
+ <tr class="memdesc:a824da17d03599090d4e3b4c50aeccff9 inherit pub_methods_classSVF_1_1CFLBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Count the num of Nonterminal Edges. <a href="classSVF_1_1CFLBase.html#a824da17d03599090d4e3b4c50aeccff9">More...</a><br /></td></tr>
241
+ <tr class="separator:a824da17d03599090d4e3b4c50aeccff9 inherit pub_methods_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
242
+ <tr class="memitem:a2aac58e19676290042874c262f1edd4d inherit pub_methods_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#a2aac58e19676290042874c262f1edd4d">analyze</a> ()</td></tr>
243
+ <tr class="memdesc:a2aac58e19676290042874c262f1edd4d inherit pub_methods_classSVF_1_1CFLBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform analyze (main part of CFLR Analysis) <a href="classSVF_1_1CFLBase.html#a2aac58e19676290042874c262f1edd4d">More...</a><br /></td></tr>
244
+ <tr class="separator:a2aac58e19676290042874c262f1edd4d inherit pub_methods_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
220
245
  <tr class="inherit_header pub_methods_classSVF_1_1BVDataPTAImpl"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classSVF_1_1BVDataPTAImpl')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classSVF_1_1BVDataPTAImpl.html">SVF::BVDataPTAImpl</a></td></tr>
221
246
  <tr class="memitem:ab0e1242aadfe1e16a2bd1445658a5476 inherit pub_methods_classSVF_1_1BVDataPTAImpl"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BVDataPTAImpl.html#ab0e1242aadfe1e16a2bd1445658a5476">BVDataPTAImpl</a> (<a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> *<a class="el" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>, <a class="el" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PointerAnalysis::PTATY</a> <a class="el" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, bool alias_check=<a class="el" href="cJSON_8cpp.html#a930920b2bc42824a5c03be681830f4b2">true</a>)</td></tr>
222
247
  <tr class="memdesc:ab0e1242aadfe1e16a2bd1445658a5476 inherit pub_methods_classSVF_1_1BVDataPTAImpl"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <a href="classSVF_1_1BVDataPTAImpl.html#ab0e1242aadfe1e16a2bd1445658a5476">More...</a><br /></td></tr>
@@ -308,9 +333,6 @@ Public Member Functions</h2></td></tr>
308
333
  <tr class="memitem:a4aeca84393c5586eea7a480737daf17c inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PointerAnalysis.html#a4aeca84393c5586eea7a480737daf17c">~PointerAnalysis</a> ()</td></tr>
309
334
  <tr class="memdesc:a4aeca84393c5586eea7a480737daf17c inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <a href="classSVF_1_1PointerAnalysis.html#a4aeca84393c5586eea7a480737daf17c">More...</a><br /></td></tr>
310
335
  <tr class="separator:a4aeca84393c5586eea7a480737daf17c inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="memSeparator" colspan="2">&#160;</td></tr>
311
- <tr class="memitem:a431ec4f85eb0f029e5740b92fd9ceb32 inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PointerAnalysis.html#a431ec4f85eb0f029e5740b92fd9ceb32">initialize</a> ()</td></tr>
312
- <tr class="memdesc:a431ec4f85eb0f029e5740b92fd9ceb32 inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialization of a pointer analysis, including building symbol table and <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> etc. <a href="classSVF_1_1PointerAnalysis.html#a431ec4f85eb0f029e5740b92fd9ceb32">More...</a><br /></td></tr>
313
- <tr class="separator:a431ec4f85eb0f029e5740b92fd9ceb32 inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="memSeparator" colspan="2">&#160;</td></tr>
314
336
  <tr class="memitem:a0bb90b398ef85504bcd816ae57bee01d inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PointerAnalysis.html#a0bb90b398ef85504bcd816ae57bee01d">computeDDAPts</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>)</td></tr>
315
337
  <tr class="memdesc:a0bb90b398ef85504bcd816ae57bee01d inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute points-to results on-demand, overridden by derived classes. <a href="classSVF_1_1PointerAnalysis.html#a0bb90b398ef85504bcd816ae57bee01d">More...</a><br /></td></tr>
316
338
  <tr class="separator:a0bb90b398ef85504bcd816ae57bee01d inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -408,47 +430,35 @@ Public Member Functions</h2></td></tr>
408
430
  <tr class="memdesc:a108380f6f0b67654bb7c7676686096c8 inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether a local variable is in function recursions. <a href="classSVF_1_1PointerAnalysis.html#a108380f6f0b67654bb7c7676686096c8">More...</a><br /></td></tr>
409
431
  <tr class="separator:a108380f6f0b67654bb7c7676686096c8 inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="memSeparator" colspan="2">&#160;</td></tr>
410
432
  </table><table class="memberdecls">
411
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
412
- Static Public Attributes</h2></td></tr>
413
- <tr><td colspan="2"><div class="groupHeader"></div></td></tr>
414
- <tr class="memitem:acd6070559826ef7983a828852ac93331"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#acd6070559826ef7983a828852ac93331">numOfProcessedAddr</a> = 0</td></tr>
415
- <tr class="memdesc:acd6070559826ef7983a828852ac93331"><td class="mdescLeft">&#160;</td><td class="mdescRight">Statistics. <a href="#acd6070559826ef7983a828852ac93331">More...</a><br /></td></tr>
416
- <tr class="separator:acd6070559826ef7983a828852ac93331"><td class="memSeparator" colspan="2">&#160;</td></tr>
417
- <tr class="memitem:a320eed3b2074070c5a58a97d24e379db"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#a320eed3b2074070c5a58a97d24e379db">numOfProcessedCopy</a> = 0</td></tr>
418
- <tr class="memdesc:a320eed3b2074070c5a58a97d24e379db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of processed Addr edge. <a href="#a320eed3b2074070c5a58a97d24e379db">More...</a><br /></td></tr>
419
- <tr class="separator:a320eed3b2074070c5a58a97d24e379db"><td class="memSeparator" colspan="2">&#160;</td></tr>
420
- <tr class="memitem:aa6a5ed4632eeef28f35910514b9e8a66"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#aa6a5ed4632eeef28f35910514b9e8a66">numOfProcessedGep</a> = 0</td></tr>
421
- <tr class="memdesc:aa6a5ed4632eeef28f35910514b9e8a66"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of processed Copy edge. <a href="#aa6a5ed4632eeef28f35910514b9e8a66">More...</a><br /></td></tr>
422
- <tr class="separator:aa6a5ed4632eeef28f35910514b9e8a66"><td class="memSeparator" colspan="2">&#160;</td></tr>
423
- <tr class="memitem:a35356e309560c939ca47bccf47d2ba50"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#a35356e309560c939ca47bccf47d2ba50">numOfProcessedLoad</a> = 0</td></tr>
424
- <tr class="memdesc:a35356e309560c939ca47bccf47d2ba50"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of processed Gep edge. <a href="#a35356e309560c939ca47bccf47d2ba50">More...</a><br /></td></tr>
425
- <tr class="separator:a35356e309560c939ca47bccf47d2ba50"><td class="memSeparator" colspan="2">&#160;</td></tr>
426
- <tr class="memitem:afc529c27f0e572948de13c319435b415"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#afc529c27f0e572948de13c319435b415">numOfProcessedStore</a> = 0</td></tr>
427
- <tr class="memdesc:afc529c27f0e572948de13c319435b415"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of processed Load edge. <a href="#afc529c27f0e572948de13c319435b415">More...</a><br /></td></tr>
428
- <tr class="separator:afc529c27f0e572948de13c319435b415"><td class="memSeparator" colspan="2">&#160;</td></tr>
429
- <tr class="memitem:a7f63c7509ac67a697b248dd28e9c2409"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#a7f63c7509ac67a697b248dd28e9c2409">numOfSfrs</a> = 0</td></tr>
430
- <tr class="memdesc:a7f63c7509ac67a697b248dd28e9c2409"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of processed Store edge. <a href="#a7f63c7509ac67a697b248dd28e9c2409">More...</a><br /></td></tr>
431
- <tr class="separator:a7f63c7509ac67a697b248dd28e9c2409"><td class="memSeparator" colspan="2">&#160;</td></tr>
432
- <tr class="memitem:a46b3d4d12aa4fbf38038ce68e4e77096"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#a46b3d4d12aa4fbf38038ce68e4e77096">numOfFieldExpand</a> = 0</td></tr>
433
- <tr class="separator:a46b3d4d12aa4fbf38038ce68e4e77096"><td class="memSeparator" colspan="2">&#160;</td></tr>
434
- <tr class="memitem:abde85bf1f0f4ff2cf01e05b2f645a876"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#abde85bf1f0f4ff2cf01e05b2f645a876">numOfSCCDetection</a> = 0</td></tr>
435
- <tr class="separator:abde85bf1f0f4ff2cf01e05b2f645a876"><td class="memSeparator" colspan="2">&#160;</td></tr>
436
- <tr class="memitem:ad72796a2cdd2fbfad0ea79c4bf4e0fc9"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#ad72796a2cdd2fbfad0ea79c4bf4e0fc9">timeOfSCCDetection</a> = 0</td></tr>
437
- <tr class="separator:ad72796a2cdd2fbfad0ea79c4bf4e0fc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
438
- <tr class="memitem:ad2528dbf000ff2c85722fd8c95df5d86"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#ad2528dbf000ff2c85722fd8c95df5d86">timeOfSCCMerges</a> = 0</td></tr>
439
- <tr class="separator:ad2528dbf000ff2c85722fd8c95df5d86"><td class="memSeparator" colspan="2">&#160;</td></tr>
440
- <tr class="memitem:a1615a97f72dfa8f979c429b3d4f3463b"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#a1615a97f72dfa8f979c429b3d4f3463b">timeOfCollapse</a> = 0</td></tr>
441
- <tr class="separator:a1615a97f72dfa8f979c429b3d4f3463b"><td class="memSeparator" colspan="2">&#160;</td></tr>
442
- <tr class="memitem:ab30e7513dd0d743c59b38448a45a8ff8"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#ab30e7513dd0d743c59b38448a45a8ff8">AveragePointsToSetSize</a> = 0</td></tr>
443
- <tr class="separator:ab30e7513dd0d743c59b38448a45a8ff8"><td class="memSeparator" colspan="2">&#160;</td></tr>
444
- <tr class="memitem:a593d1b7b7380629ec8194d3a7b970ab5"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#a593d1b7b7380629ec8194d3a7b970ab5">MaxPointsToSetSize</a> = 0</td></tr>
445
- <tr class="separator:a593d1b7b7380629ec8194d3a7b970ab5"><td class="memSeparator" colspan="2">&#160;</td></tr>
446
- <tr class="memitem:a2339baef879400c3abceaa6cd710438f"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#a2339baef879400c3abceaa6cd710438f">timeOfProcessCopyGep</a> = 0</td></tr>
447
- <tr class="separator:a2339baef879400c3abceaa6cd710438f"><td class="memSeparator" colspan="2">&#160;</td></tr>
448
- <tr class="memitem:ab8a98cf58afbc7fd00bd42b312073012"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#ab8a98cf58afbc7fd00bd42b312073012">timeOfProcessLoadStore</a> = 0</td></tr>
449
- <tr class="separator:ab8a98cf58afbc7fd00bd42b312073012"><td class="memSeparator" colspan="2">&#160;</td></tr>
450
- <tr class="memitem:ac94c14718ca0dbae6cddd8a0e093e111"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#ac94c14718ca0dbae6cddd8a0e093e111">timeOfUpdateCallGraph</a> = 0</td></tr>
451
- <tr class="separator:ac94c14718ca0dbae6cddd8a0e093e111"><td class="memSeparator" colspan="2">&#160;</td></tr>
433
+ <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
434
+ Private Attributes</h2></td></tr>
435
+ <tr class="memitem:ae879c990852862e5ed4e4e7da76dda05"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1CFLAlias.html#af8424cab679dae62320c6dec6253036a">CallSite2DummyValPN</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#ae879c990852862e5ed4e4e7da76dda05">callsite2DummyValPN</a></td></tr>
436
+ <tr class="memdesc:ae879c990852862e5ed4e4e7da76dda05"><td class="mdescLeft">&#160;</td><td class="mdescRight">Map an instruction to a dummy obj which created at an indirect callsite, which invokes a heap allocator. <a href="#ae879c990852862e5ed4e4e7da76dda05">More...</a><br /></td></tr>
437
+ <tr class="separator:ae879c990852862e5ed4e4e7da76dda05"><td class="memSeparator" colspan="2">&#160;</td></tr>
438
+ </table><table class="memberdecls">
439
+ <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
440
+ Additional Inherited Members</h2></td></tr>
441
+ <tr class="inherit_header pub_static_methods_classSVF_1_1BVDataPTAImpl"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classSVF_1_1BVDataPTAImpl')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classSVF_1_1BVDataPTAImpl.html">SVF::BVDataPTAImpl</a></td></tr>
442
+ <tr class="memitem:a6ba68138c10d1fbe5be6346c8dfeca74 inherit pub_static_methods_classSVF_1_1BVDataPTAImpl"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BVDataPTAImpl.html#a6ba68138c10d1fbe5be6346c8dfeca74">classof</a> (const <a class="el" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a> *pta)</td></tr>
443
+ <tr class="separator:a6ba68138c10d1fbe5be6346c8dfeca74 inherit pub_static_methods_classSVF_1_1BVDataPTAImpl"><td class="memSeparator" colspan="2">&#160;</td></tr>
444
+ <tr class="inherit_header pub_static_attribs_classSVF_1_1CFLBase"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classSVF_1_1CFLBase')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classSVF_1_1CFLBase.html">SVF::CFLBase</a></td></tr>
445
+ <tr class="memitem:a0d3217f4c3796b58a98add5c92298ad2 inherit pub_static_attribs_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#a0d3217f4c3796b58a98add5c92298ad2">timeOfBuildCFLGrammar</a> = 0</td></tr>
446
+ <tr class="memdesc:a0d3217f4c3796b58a98add5c92298ad2 inherit pub_static_attribs_classSVF_1_1CFLBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Statistics. <a href="classSVF_1_1CFLBase.html#a0d3217f4c3796b58a98add5c92298ad2">More...</a><br /></td></tr>
447
+ <tr class="separator:a0d3217f4c3796b58a98add5c92298ad2 inherit pub_static_attribs_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
448
+ <tr class="memitem:ad4d65dd4c3e173d014199ac6b08a5261 inherit pub_static_attribs_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#ad4d65dd4c3e173d014199ac6b08a5261">timeOfNormalizeGrammar</a> = 0</td></tr>
449
+ <tr class="separator:ad4d65dd4c3e173d014199ac6b08a5261 inherit pub_static_attribs_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
450
+ <tr class="memitem:a9453bf479ccd00bacb3b371fa6383a9c inherit pub_static_attribs_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#a9453bf479ccd00bacb3b371fa6383a9c">timeOfBuildCFLGraph</a> = 0</td></tr>
451
+ <tr class="separator:a9453bf479ccd00bacb3b371fa6383a9c inherit pub_static_attribs_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
452
+ <tr class="memitem:abc5502f15583f0546bbc2a678d2f2ed9 inherit pub_static_attribs_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#abc5502f15583f0546bbc2a678d2f2ed9">numOfTerminalEdges</a></td></tr>
453
+ <tr class="separator:abc5502f15583f0546bbc2a678d2f2ed9 inherit pub_static_attribs_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
454
+ <tr class="memitem:ac3b408acb295e2c319e3542539e6df47 inherit pub_static_attribs_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#ac3b408acb295e2c319e3542539e6df47">numOfTemporaryNonterminalEdges</a></td></tr>
455
+ <tr class="separator:ac3b408acb295e2c319e3542539e6df47 inherit pub_static_attribs_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
456
+ <tr class="memitem:a4c03b83cb2a3c0c166d96550d6771a1b inherit pub_static_attribs_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#a4c03b83cb2a3c0c166d96550d6771a1b">numOfNonterminalEdges</a></td></tr>
457
+ <tr class="separator:a4c03b83cb2a3c0c166d96550d6771a1b inherit pub_static_attribs_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
458
+ <tr class="memitem:a25a593cb2a855a93d3593efba382a58c inherit pub_static_attribs_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#a25a593cb2a855a93d3593efba382a58c">numOfStartEdges</a> = 0</td></tr>
459
+ <tr class="separator:a25a593cb2a855a93d3593efba382a58c inherit pub_static_attribs_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
460
+ <tr class="memitem:a88e40af43705550a78837b8589bbf3f8 inherit pub_static_attribs_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#a88e40af43705550a78837b8589bbf3f8">timeOfSolving</a> = 0</td></tr>
461
+ <tr class="separator:a88e40af43705550a78837b8589bbf3f8 inherit pub_static_attribs_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
452
462
  <tr class="inherit_header pub_static_attribs_classSVF_1_1PointerAnalysis"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classSVF_1_1PointerAnalysis')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classSVF_1_1PointerAnalysis.html">SVF::PointerAnalysis</a></td></tr>
453
463
  <tr class="memitem:a7648a0358e2c0798db1c547ec7aa7c64 inherit pub_static_attribs_classSVF_1_1PointerAnalysis"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PointerAnalysis.html#a7648a0358e2c0798db1c547ec7aa7c64">aliasTestMayAlias</a> = &quot;MAYALIAS&quot;</td></tr>
454
464
  <tr class="separator:a7648a0358e2c0798db1c547ec7aa7c64 inherit pub_static_attribs_classSVF_1_1PointerAnalysis"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -474,33 +484,10 @@ Static Public Attributes</h2></td></tr>
474
484
  <tr class="separator:a18347e41bc66b16e3f42c7c52811ad42 inherit pub_static_attribs_classSVF_1_1PointerAnalysis"><td class="memSeparator" colspan="2">&#160;</td></tr>
475
485
  <tr class="memitem:aefd4e9ea66da5ad84a45efead823eb22 inherit pub_static_attribs_classSVF_1_1PointerAnalysis"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PointerAnalysis.html#aefd4e9ea66da5ad84a45efead823eb22">aliasTestFailNoAliasMangled</a> = &quot;_Z20EXPECTEDFAIL_NOALIASPvS_&quot;</td></tr>
476
486
  <tr class="separator:aefd4e9ea66da5ad84a45efead823eb22 inherit pub_static_attribs_classSVF_1_1PointerAnalysis"><td class="memSeparator" colspan="2">&#160;</td></tr>
477
- </table><table class="memberdecls">
478
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
479
- Private Attributes</h2></td></tr>
480
- <tr class="memitem:ae879c990852862e5ed4e4e7da76dda05"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1CFLAlias.html#af8424cab679dae62320c6dec6253036a">CallSite2DummyValPN</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#ae879c990852862e5ed4e4e7da76dda05">callsite2DummyValPN</a></td></tr>
481
- <tr class="memdesc:ae879c990852862e5ed4e4e7da76dda05"><td class="mdescLeft">&#160;</td><td class="mdescRight">Map an instruction to a dummy obj which created at an indirect callsite, which invokes a heap allocator. <a href="#ae879c990852862e5ed4e4e7da76dda05">More...</a><br /></td></tr>
482
- <tr class="separator:ae879c990852862e5ed4e4e7da76dda05"><td class="memSeparator" colspan="2">&#160;</td></tr>
483
- <tr class="memitem:a0bf4ce7e4fb3d1d95608c06420cc65dc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a></td></tr>
484
- <tr class="separator:a0bf4ce7e4fb3d1d95608c06420cc65dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
485
- <tr class="memitem:abd4d8eb59209a1f1cedebcf41117914b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1CFLGraph.html">CFLGraph</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a></td></tr>
486
- <tr class="separator:abd4d8eb59209a1f1cedebcf41117914b"><td class="memSeparator" colspan="2">&#160;</td></tr>
487
- <tr class="memitem:a31ffa49b8e0995b6ee9b8a1f5ecab7be"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1CFLGrammar.html">CFLGrammar</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#a31ffa49b8e0995b6ee9b8a1f5ecab7be">grammar</a></td></tr>
488
- <tr class="separator:a31ffa49b8e0995b6ee9b8a1f5ecab7be"><td class="memSeparator" colspan="2">&#160;</td></tr>
489
- <tr class="memitem:aa61c3683c9b759b6eca65b1f88e00b35"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1CFLSolver.html">CFLSolver</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLAlias.html#aa61c3683c9b759b6eca65b1f88e00b35">solver</a></td></tr>
490
- <tr class="separator:aa61c3683c9b759b6eca65b1f88e00b35"><td class="memSeparator" colspan="2">&#160;</td></tr>
491
- </table><table class="memberdecls">
492
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
493
- Additional Inherited Members</h2></td></tr>
494
- <tr class="inherit_header pub_static_methods_classSVF_1_1BVDataPTAImpl"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classSVF_1_1BVDataPTAImpl')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classSVF_1_1BVDataPTAImpl.html">SVF::BVDataPTAImpl</a></td></tr>
495
- <tr class="memitem:a6ba68138c10d1fbe5be6346c8dfeca74 inherit pub_static_methods_classSVF_1_1BVDataPTAImpl"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BVDataPTAImpl.html#a6ba68138c10d1fbe5be6346c8dfeca74">classof</a> (const <a class="el" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a> *pta)</td></tr>
496
- <tr class="separator:a6ba68138c10d1fbe5be6346c8dfeca74 inherit pub_static_methods_classSVF_1_1BVDataPTAImpl"><td class="memSeparator" colspan="2">&#160;</td></tr>
497
487
  <tr class="inherit_header pro_methods_classSVF_1_1BVDataPTAImpl"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classSVF_1_1BVDataPTAImpl')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classSVF_1_1BVDataPTAImpl.html">SVF::BVDataPTAImpl</a></td></tr>
498
488
  <tr class="memitem:ae94cea78b71fb75837ee2a17b5ed0e81 inherit pro_methods_classSVF_1_1BVDataPTAImpl"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1BVDataPTAImpl.html#acfdb43f20bbcababc928cc4df93a8483">PTDataTy</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a> () const</td></tr>
499
489
  <tr class="memdesc:ae94cea78b71fb75837ee2a17b5ed0e81 inherit pro_methods_classSVF_1_1BVDataPTAImpl"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get points-to data structure. <a href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">More...</a><br /></td></tr>
500
490
  <tr class="separator:ae94cea78b71fb75837ee2a17b5ed0e81 inherit pro_methods_classSVF_1_1BVDataPTAImpl"><td class="memSeparator" colspan="2">&#160;</td></tr>
501
- <tr class="memitem:a57ff2bf45ede7a730a8adaba8e61179d inherit pro_methods_classSVF_1_1BVDataPTAImpl"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BVDataPTAImpl.html#a57ff2bf45ede7a730a8adaba8e61179d">finalize</a> ()</td></tr>
502
- <tr class="memdesc:a57ff2bf45ede7a730a8adaba8e61179d inherit pro_methods_classSVF_1_1BVDataPTAImpl"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finalization of pointer analysis, and normalize points-to information to Bit Vector representation. <a href="classSVF_1_1BVDataPTAImpl.html#a57ff2bf45ede7a730a8adaba8e61179d">More...</a><br /></td></tr>
503
- <tr class="separator:a57ff2bf45ede7a730a8adaba8e61179d inherit pro_methods_classSVF_1_1BVDataPTAImpl"><td class="memSeparator" colspan="2">&#160;</td></tr>
504
491
  <tr class="memitem:ab9c0bb439f98ae11dd178148109697ab inherit pro_methods_classSVF_1_1BVDataPTAImpl"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1BVDataPTAImpl.html#abd8bb73e9beac5e39667091b1e211bd3">DiffPTDataTy</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BVDataPTAImpl.html#ab9c0bb439f98ae11dd178148109697ab">getDiffPTDataTy</a> () const</td></tr>
505
492
  <tr class="separator:ab9c0bb439f98ae11dd178148109697ab inherit pro_methods_classSVF_1_1BVDataPTAImpl"><td class="memSeparator" colspan="2">&#160;</td></tr>
506
493
  <tr class="memitem:a642613e98982259183d3f34a97f05502 inherit pro_methods_classSVF_1_1BVDataPTAImpl"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1BVDataPTAImpl.html#a5c2288519153467142e74c8dd4e77180">DFPTDataTy</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a> () const</td></tr>
@@ -528,6 +515,17 @@ Additional Inherited Members</h2></td></tr>
528
515
  <tr class="separator:a7accf4e4db4001716e53d98ce5217ac8 inherit pro_methods_classSVF_1_1PointerAnalysis"><td class="memSeparator" colspan="2">&#160;</td></tr>
529
516
  <tr class="memitem:ab982e6bbd99a2f9a0a3abbebeeb00dcc inherit pro_methods_classSVF_1_1PointerAnalysis"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PointerAnalysis.html#ab982e6bbd99a2f9a0a3abbebeeb00dcc">validateExpectedFailureTests</a> (<a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> fun)</td></tr>
530
517
  <tr class="separator:ab982e6bbd99a2f9a0a3abbebeeb00dcc inherit pro_methods_classSVF_1_1PointerAnalysis"><td class="memSeparator" colspan="2">&#160;</td></tr>
518
+ <tr class="inherit_header pro_attribs_classSVF_1_1CFLBase"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classSVF_1_1CFLBase')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classSVF_1_1CFLBase.html">SVF::CFLBase</a></td></tr>
519
+ <tr class="memitem:a9e6cbab31612da4a1f8f660d1fabc4c0 inherit pro_attribs_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a></td></tr>
520
+ <tr class="separator:a9e6cbab31612da4a1f8f660d1fabc4c0 inherit pro_attribs_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
521
+ <tr class="memitem:a8101683062b9a71c0b2309cbdfb7b26f inherit pro_attribs_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1CFLGraph.html">CFLGraph</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a></td></tr>
522
+ <tr class="separator:a8101683062b9a71c0b2309cbdfb7b26f inherit pro_attribs_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
523
+ <tr class="memitem:aef3da4ce970597586757cafd2a435c1f inherit pro_attribs_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1GrammarBase.html">GrammarBase</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#aef3da4ce970597586757cafd2a435c1f">grammarBase</a></td></tr>
524
+ <tr class="separator:aef3da4ce970597586757cafd2a435c1f inherit pro_attribs_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
525
+ <tr class="memitem:af7b0e90b8f8998ab6cf4e05155c7a503 inherit pro_attribs_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1CFLGrammar.html">CFLGrammar</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#af7b0e90b8f8998ab6cf4e05155c7a503">grammar</a></td></tr>
526
+ <tr class="separator:af7b0e90b8f8998ab6cf4e05155c7a503 inherit pro_attribs_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
527
+ <tr class="memitem:a34c3a3eec2d7d34ef78b5031d8844b17 inherit pro_attribs_classSVF_1_1CFLBase"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1CFLSolver.html">CFLSolver</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLBase.html#a34c3a3eec2d7d34ef78b5031d8844b17">solver</a></td></tr>
528
+ <tr class="separator:a34c3a3eec2d7d34ef78b5031d8844b17 inherit pro_attribs_classSVF_1_1CFLBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
531
529
  <tr class="inherit_header pro_attribs_classSVF_1_1PointerAnalysis"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classSVF_1_1PointerAnalysis')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classSVF_1_1PointerAnalysis.html">SVF::PointerAnalysis</a></td></tr>
532
530
  <tr class="memitem:a7e8b3f6843e5ea75fd189162d2cd60a5 inherit pro_attribs_classSVF_1_1PointerAnalysis"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1SVFModule.html">SVFModule</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PointerAnalysis.html#a7e8b3f6843e5ea75fd189162d2cd60a5">svfMod</a></td></tr>
533
531
  <tr class="memdesc:a7e8b3f6843e5ea75fd189162d2cd60a5 inherit pro_attribs_classSVF_1_1PointerAnalysis"><td class="mdescLeft">&#160;</td><td class="mdescRight">Module. <a href="classSVF_1_1PointerAnalysis.html#a7e8b3f6843e5ea75fd189162d2cd60a5">More...</a><br /></td></tr>
@@ -572,7 +570,7 @@ Additional Inherited Members</h2></td></tr>
572
570
  </table>
573
571
  <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
574
572
  <div class="textblock">
575
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00048">48</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
573
+ <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00041">41</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
576
574
  </div><h2 class="groupheader">Member Typedef Documentation</h2>
577
575
  <a id="af8424cab679dae62320c6dec6253036a"></a>
578
576
  <h2 class="memtitle"><span class="permalink"><a href="#af8424cab679dae62320c6dec6253036a">&#9670;&nbsp;</a></span>CallSite2DummyValPN</h2>
@@ -586,7 +584,7 @@ Additional Inherited Members</h2></td></tr>
586
584
  </table>
587
585
  </div><div class="memdoc">
588
586
 
589
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00052">52</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
587
+ <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00045">45</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
590
588
 
591
589
  </div>
592
590
  </div>
@@ -615,43 +613,9 @@ Additional Inherited Members</h2></td></tr>
615
613
  </table>
616
614
  </div><div class="memdoc">
617
615
 
618
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00054">54</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
619
- <div class="fragment"><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; : <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab0e1242aadfe1e16a2bd1445658a5476">BVDataPTAImpl</a>(ir, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb">PointerAnalysis::CFLFICI_WPA</a>), <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>(ir), <a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>(<span class="keyword">nullptr</span>), <a class="code" href="classSVF_1_1CFLAlias.html#a31ffa49b8e0995b6ee9b8a1f5ecab7be">grammar</a>(<span class="keyword">nullptr</span>), <a class="code" href="classSVF_1_1CFLAlias.html#aa61c3683c9b759b6eca65b1f88e00b35">solver</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="ttc" id="classSVF_1_1CFLAlias_html_aa61c3683c9b759b6eca65b1f88e00b35"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#aa61c3683c9b759b6eca65b1f88e00b35">SVF::CFLAlias::solver</a></div><div class="ttdeci">CFLSolver * solver</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00177">CFLAlias.h:177</a></div></div>
620
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb">SVF::PointerAnalysis::CFLFICI_WPA</a></div><div class="ttdoc">Flow-, context-, insensitive CFL-reachability-based analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00077">PointerAnalysis.h:77</a></div></div>
621
- <div class="ttc" id="classSVF_1_1CFLAlias_html_a31ffa49b8e0995b6ee9b8a1f5ecab7be"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a31ffa49b8e0995b6ee9b8a1f5ecab7be">SVF::CFLAlias::grammar</a></div><div class="ttdeci">CFLGrammar * grammar</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00176">CFLAlias.h:176</a></div></div>
622
- <div class="ttc" id="classSVF_1_1CFLAlias_html_abd4d8eb59209a1f1cedebcf41117914b"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">SVF::CFLAlias::graph</a></div><div class="ttdeci">CFLGraph * graph</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00175">CFLAlias.h:175</a></div></div>
623
- <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ab0e1242aadfe1e16a2bd1445658a5476"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ab0e1242aadfe1e16a2bd1445658a5476">SVF::BVDataPTAImpl::BVDataPTAImpl</a></div><div class="ttdeci">BVDataPTAImpl(SVFIR *pag, PointerAnalysis::PTATY type, bool alias_check=true)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00048">PointerAnalysisImpl.cpp:48</a></div></div>
624
- <div class="ttc" id="classSVF_1_1CFLAlias_html_a0bf4ce7e4fb3d1d95608c06420cc65dc"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">SVF::CFLAlias::svfir</a></div><div class="ttdeci">SVFIR * svfir</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00174">CFLAlias.h:174</a></div></div>
625
- </div><!-- fragment -->
626
- </div>
627
- </div>
628
- <a id="a0e8b474695b21c55a11e71ff59d646d5"></a>
629
- <h2 class="memtitle"><span class="permalink"><a href="#a0e8b474695b21c55a11e71ff59d646d5">&#9670;&nbsp;</a></span>~CFLAlias()</h2>
630
-
631
- <div class="memitem">
632
- <div class="memproto">
633
- <table class="mlabels">
634
- <tr>
635
- <td class="mlabels-left">
636
- <table class="memname">
637
- <tr>
638
- <td class="memname">virtual SVF::CFLAlias::~CFLAlias </td>
639
- <td>(</td>
640
- <td class="paramname"></td><td>)</td>
641
- <td></td>
642
- </tr>
643
- </table>
644
- </td>
645
- <td class="mlabels-right">
646
- <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
647
- </tr>
648
- </table>
649
- </div><div class="memdoc">
650
-
651
- <p>Destructor. </p>
652
-
653
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00059">59</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
654
- <div class="fragment"><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1CFLAlias.html#aa61c3683c9b759b6eca65b1f88e00b35">solver</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="ttc" id="classSVF_1_1CFLAlias_html_aa61c3683c9b759b6eca65b1f88e00b35"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#aa61c3683c9b759b6eca65b1f88e00b35">SVF::CFLAlias::solver</a></div><div class="ttdeci">CFLSolver * solver</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00177">CFLAlias.h:177</a></div></div>
616
+ <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00047">47</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
617
+ <div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; : <a class="code" href="classSVF_1_1CFLBase.html#a59c71b0eada5c763ce776f3618d08dd8">CFLBase</a>(ir, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb">PointerAnalysis::CFLFICI_WPA</a>)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb">SVF::PointerAnalysis::CFLFICI_WPA</a></div><div class="ttdoc">Flow-, context-, insensitive CFL-reachability-based analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00077">PointerAnalysis.h:77</a></div></div>
618
+ <div class="ttc" id="classSVF_1_1CFLBase_html_a59c71b0eada5c763ce776f3618d08dd8"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a59c71b0eada5c763ce776f3618d08dd8">SVF::CFLBase::CFLBase</a></div><div class="ttdeci">CFLBase(SVFIR *ir, PointerAnalysis::PTATY pty)</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00053">CFLBase.h:53</a></div></div>
655
619
  </div><!-- fragment -->
656
620
  </div>
657
621
  </div>
@@ -693,14 +657,14 @@ Additional Inherited Members</h2></td></tr>
693
657
  <p>Need Original one for virtual table. </p>
694
658
  <p>Add copy edge on constraint graph </p>
695
659
 
696
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00112">112</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
697
- <div class="fragment"><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">const</span> CFLEdge *edge = <a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#aca4c22dd10f65bcde5dadb7688544b50">hasEdge</a>(<a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src),<a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst), 1);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span> )</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">CFLGrammar::Kind</a> copyKind = <a class="code" href="classSVF_1_1CFLAlias.html#a31ffa49b8e0995b6ee9b8a1f5ecab7be">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ad2d56d8cdc4539d4201d1995fb36e772">str2Kind</a>(<span class="stringliteral">&quot;Copy&quot;</span>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">CFLGrammar::Kind</a> copybarKind = <a class="code" href="classSVF_1_1CFLAlias.html#a31ffa49b8e0995b6ee9b8a1f5ecab7be">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ad2d56d8cdc4539d4201d1995fb36e772">str2Kind</a>(<span class="stringliteral">&quot;Copybar&quot;</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#aa61c3683c9b759b6eca65b1f88e00b35">solver</a>-&gt;<a class="code" href="classSVF_1_1CFLSolver.html#afc745dc72fd0572a145a78fe6a93ae5c">pushIntoWorklist</a>(<a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#a9eea8083dbeaf898948595b1d75cfee2">addCFLEdge</a>(<a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src),<a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst), copyKind));</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#aa61c3683c9b759b6eca65b1f88e00b35">solver</a>-&gt;<a class="code" href="classSVF_1_1CFLSolver.html#afc745dc72fd0572a145a78fe6a93ae5c">pushIntoWorklist</a>(<a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#a9eea8083dbeaf898948595b1d75cfee2">addCFLEdge</a>(<a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst),<a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src), copybarKind));</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="ttc" id="classSVF_1_1CFLGraph_html_aca4c22dd10f65bcde5dadb7688544b50"><div class="ttname"><a href="classSVF_1_1CFLGraph.html#aca4c22dd10f65bcde5dadb7688544b50">SVF::CFLGraph::hasEdge</a></div><div class="ttdeci">virtual const CFLEdge * hasEdge(CFLNode *src, CFLNode *dst, CFLEdge::GEdgeFlag label)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8cpp_source.html#l00060">CFLGraph.cpp:60</a></div></div>
660
+ <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00104">104</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
661
+ <div class="fragment"><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; <span class="keyword">const</span> CFLEdge *edge = <a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#aca4c22dd10f65bcde5dadb7688544b50">hasEdge</a>(<a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src),<a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst), 1);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span> )</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="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">CFLGrammar::Kind</a> copyKind = <a class="code" href="classSVF_1_1CFLBase.html#af7b0e90b8f8998ab6cf4e05155c7a503">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ad2d56d8cdc4539d4201d1995fb36e772">str2Kind</a>(<span class="stringliteral">&quot;Copy&quot;</span>);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">CFLGrammar::Kind</a> copybarKind = <a class="code" href="classSVF_1_1CFLBase.html#af7b0e90b8f8998ab6cf4e05155c7a503">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ad2d56d8cdc4539d4201d1995fb36e772">str2Kind</a>(<span class="stringliteral">&quot;Copybar&quot;</span>);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="classSVF_1_1CFLBase.html#a34c3a3eec2d7d34ef78b5031d8844b17">solver</a>-&gt;<a class="code" href="classSVF_1_1CFLSolver.html#afc745dc72fd0572a145a78fe6a93ae5c">pushIntoWorklist</a>(<a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#a9eea8083dbeaf898948595b1d75cfee2">addCFLEdge</a>(<a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src),<a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst), copyKind));</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="classSVF_1_1CFLBase.html#a34c3a3eec2d7d34ef78b5031d8844b17">solver</a>-&gt;<a class="code" href="classSVF_1_1CFLSolver.html#afc745dc72fd0572a145a78fe6a93ae5c">pushIntoWorklist</a>(<a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#a9eea8083dbeaf898948595b1d75cfee2">addCFLEdge</a>(<a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst),<a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src), copybarKind));</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="ttc" id="classSVF_1_1CFLGraph_html_aca4c22dd10f65bcde5dadb7688544b50"><div class="ttname"><a href="classSVF_1_1CFLGraph.html#aca4c22dd10f65bcde5dadb7688544b50">SVF::CFLGraph::hasEdge</a></div><div class="ttdeci">virtual const CFLEdge * hasEdge(CFLNode *src, CFLNode *dst, CFLEdge::GEdgeFlag label)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8cpp_source.html#l00060">CFLGraph.cpp:60</a></div></div>
662
+ <div class="ttc" id="classSVF_1_1CFLBase_html_a8101683062b9a71c0b2309cbdfb7b26f"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">SVF::CFLBase::graph</a></div><div class="ttdeci">CFLGraph * graph</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00102">CFLBase.h:102</a></div></div>
698
663
  <div class="ttc" id="classSVF_1_1CFLSolver_html_afc745dc72fd0572a145a78fe6a93ae5c"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#afc745dc72fd0572a145a78fe6a93ae5c">SVF::CFLSolver::pushIntoWorklist</a></div><div class="ttdeci">bool pushIntoWorklist(const CFLEdge *item)</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00074">CFLSolver.h:74</a></div></div>
699
- <div class="ttc" id="classSVF_1_1CFLAlias_html_aa61c3683c9b759b6eca65b1f88e00b35"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#aa61c3683c9b759b6eca65b1f88e00b35">SVF::CFLAlias::solver</a></div><div class="ttdeci">CFLSolver * solver</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00177">CFLAlias.h:177</a></div></div>
664
+ <div class="ttc" id="classSVF_1_1CFLBase_html_af7b0e90b8f8998ab6cf4e05155c7a503"><div class="ttname"><a href="classSVF_1_1CFLBase.html#af7b0e90b8f8998ab6cf4e05155c7a503">SVF::CFLBase::grammar</a></div><div class="ttdeci">CFLGrammar * grammar</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00104">CFLBase.h:104</a></div></div>
700
665
  <div class="ttc" id="classSVF_1_1CFLGraph_html_a9eea8083dbeaf898948595b1d75cfee2"><div class="ttname"><a href="classSVF_1_1CFLGraph.html#a9eea8083dbeaf898948595b1d75cfee2">SVF::CFLGraph::addCFLEdge</a></div><div class="ttdeci">virtual const CFLEdge * addCFLEdge(CFLNode *src, CFLNode *dst, CFLEdge::GEdgeFlag label)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8cpp_source.html#l00047">CFLGraph.cpp:47</a></div></div>
701
- <div class="ttc" id="classSVF_1_1CFLAlias_html_a31ffa49b8e0995b6ee9b8a1f5ecab7be"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a31ffa49b8e0995b6ee9b8a1f5ecab7be">SVF::CFLAlias::grammar</a></div><div class="ttdeci">CFLGrammar * grammar</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00176">CFLAlias.h:176</a></div></div>
702
666
  <div class="ttc" id="classSVF_1_1GrammarBase_html_ad2d56d8cdc4539d4201d1995fb36e772"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ad2d56d8cdc4539d4201d1995fb36e772">SVF::GrammarBase::str2Kind</a></div><div class="ttdeci">Kind str2Kind(std::string str) const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00055">CFLGrammar.cpp:55</a></div></div>
703
- <div class="ttc" id="classSVF_1_1CFLAlias_html_abd4d8eb59209a1f1cedebcf41117914b"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">SVF::CFLAlias::graph</a></div><div class="ttdeci">CFLGraph * graph</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00175">CFLAlias.h:175</a></div></div>
667
+ <div class="ttc" id="classSVF_1_1CFLBase_html_a34c3a3eec2d7d34ef78b5031d8844b17"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a34c3a3eec2d7d34ef78b5031d8844b17">SVF::CFLBase::solver</a></div><div class="ttdeci">CFLSolver * solver</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00105">CFLBase.h:105</a></div></div>
704
668
  <div class="ttc" id="classSVF_1_1GrammarBase_html_a7aef5c42fbd8a62dd4a541cc0e8e8187"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">SVF::GrammarBase::Kind</a></div><div class="ttdeci">u32_t Kind</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00039">CFLGrammar.h:39</a></div></div>
705
669
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00391">GenericGraph.h:391</a></div></div>
706
670
  </div><!-- fragment -->
@@ -740,15 +704,15 @@ Additional Inherited Members</h2></td></tr>
740
704
  </table>
741
705
  </div><div class="memdoc">
742
706
 
743
- <p>Interface exposed to users of our pointer analysis, given Value infos. </p>
707
+ <p>Interface exposed to users of our Alias analysis, given Value infos. </p>
744
708
 
745
709
  <p>Reimplemented from <a class="el" href="classSVF_1_1BVDataPTAImpl.html#adaba5a41a60e32d18d964bdb8ae5b2df">SVF::BVDataPTAImpl</a>.</p>
746
710
 
747
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00068">68</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
748
- <div class="fragment"><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n1 = <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(v1);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n2 = <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(v2);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CFLAlias.html#a0575c3badff6a158a6043e3e940af507">alias</a>(n1,n2);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><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>
711
+ <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00061">61</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
712
+ <div class="fragment"><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n1 = <a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(v1);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n2 = <a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(v2);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CFLAlias.html#a0575c3badff6a158a6043e3e940af507">alias</a>(n1,n2);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="ttc" id="classSVF_1_1CFLBase_html_a9e6cbab31612da4a1f8f660d1fabc4c0"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">SVF::CFLBase::svfir</a></div><div class="ttdeci">SVFIR * svfir</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00101">CFLBase.h:101</a></div></div>
713
+ <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>
749
714
  <div class="ttc" id="classSVF_1_1IRGraph_html_abffddd41cc308b9b3bd5ad4a7f8f1624"><div class="ttname"><a href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00124">IRGraph.h:124</a></div></div>
750
- <div class="ttc" id="classSVF_1_1CFLAlias_html_a0bf4ce7e4fb3d1d95608c06420cc65dc"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">SVF::CFLAlias::svfir</a></div><div class="ttdeci">SVFIR * svfir</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00174">CFLAlias.h:174</a></div></div>
751
- <div class="ttc" id="classSVF_1_1CFLAlias_html_a0575c3badff6a158a6043e3e940af507"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a0575c3badff6a158a6043e3e940af507">SVF::CFLAlias::alias</a></div><div class="ttdeci">virtual AliasResult alias(const Value *v1, const Value *v2)</div><div class="ttdoc">Interface exposed to users of our pointer analysis, given Value infos. </div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00068">CFLAlias.h:68</a></div></div>
715
+ <div class="ttc" id="classSVF_1_1CFLAlias_html_a0575c3badff6a158a6043e3e940af507"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a0575c3badff6a158a6043e3e940af507">SVF::CFLAlias::alias</a></div><div class="ttdeci">virtual AliasResult alias(const Value *v1, const Value *v2)</div><div class="ttdoc">Interface exposed to users of our Alias analysis, given Value infos. </div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00061">CFLAlias.h:61</a></div></div>
752
716
  </div><!-- fragment -->
753
717
  </div>
754
718
  </div>
@@ -786,83 +750,20 @@ Additional Inherited Members</h2></td></tr>
786
750
  </table>
787
751
  </div><div class="memdoc">
788
752
 
789
- <p>Interface exposed to users of our pointer analysis, given PAGNodeID. </p>
753
+ <p>Interface exposed to users of our Alias analysis, given PAGNodeID. </p>
790
754
 
791
755
  <p>Reimplemented from <a class="el" href="classSVF_1_1BVDataPTAImpl.html#a949533e5c99698c7f9862aae5de23687">SVF::BVDataPTAImpl</a>.</p>
792
756
 
793
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00076">76</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
794
- <div class="fragment"><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; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#aca4c22dd10f65bcde5dadb7688544b50">hasEdge</a>(<a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(node1), <a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(node2), <a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#a0723f25be2a163b21f478cddca5293d2">startKind</a>))</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">AliasResult::MayAlias</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">AliasResult::NoAlias</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="ttc" id="classSVF_1_1CFLGraph_html_aca4c22dd10f65bcde5dadb7688544b50"><div class="ttname"><a href="classSVF_1_1CFLGraph.html#aca4c22dd10f65bcde5dadb7688544b50">SVF::CFLGraph::hasEdge</a></div><div class="ttdeci">virtual const CFLEdge * hasEdge(CFLNode *src, CFLNode *dst, CFLEdge::GEdgeFlag label)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8cpp_source.html#l00060">CFLGraph.cpp:60</a></div></div>
757
+ <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00069">69</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
758
+ <div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#aca4c22dd10f65bcde5dadb7688544b50">hasEdge</a>(<a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(node1), <a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(node2), <a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#a0723f25be2a163b21f478cddca5293d2">startKind</a>))</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">AliasResult::MayAlias</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">AliasResult::NoAlias</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="ttc" id="classSVF_1_1CFLGraph_html_aca4c22dd10f65bcde5dadb7688544b50"><div class="ttname"><a href="classSVF_1_1CFLGraph.html#aca4c22dd10f65bcde5dadb7688544b50">SVF::CFLGraph::hasEdge</a></div><div class="ttdeci">virtual const CFLEdge * hasEdge(CFLNode *src, CFLNode *dst, CFLEdge::GEdgeFlag label)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8cpp_source.html#l00060">CFLGraph.cpp:60</a></div></div>
759
+ <div class="ttc" id="classSVF_1_1CFLBase_html_a8101683062b9a71c0b2309cbdfb7b26f"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">SVF::CFLBase::graph</a></div><div class="ttdeci">CFLGraph * graph</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00102">CFLBase.h:102</a></div></div>
795
760
  <div class="ttc" id="namespaceSVF_html_a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f"><div class="ttname"><a href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">SVF::MayAlias</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00199">SVFBasicTypes.h:199</a></div></div>
796
- <div class="ttc" id="classSVF_1_1CFLAlias_html_abd4d8eb59209a1f1cedebcf41117914b"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">SVF::CFLAlias::graph</a></div><div class="ttdeci">CFLGraph * graph</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00175">CFLAlias.h:175</a></div></div>
797
761
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00391">GenericGraph.h:391</a></div></div>
798
762
  <div class="ttc" id="classSVF_1_1CFLGraph_html_a0723f25be2a163b21f478cddca5293d2"><div class="ttname"><a href="classSVF_1_1CFLGraph.html#a0723f25be2a163b21f478cddca5293d2">SVF::CFLGraph::startKind</a></div><div class="ttdeci">Kind startKind</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8h_source.html#l00092">CFLGraph.h:92</a></div></div>
799
763
  <div class="ttc" id="namespaceSVF_html_a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239"><div class="ttname"><a href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">SVF::NoAlias</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00198">SVFBasicTypes.h:198</a></div></div>
800
764
  </div><!-- fragment -->
801
765
  </div>
802
766
  </div>
803
- <a id="afc6922e9f1965ed85ef87151e00f5311"></a>
804
- <h2 class="memtitle"><span class="permalink"><a href="#afc6922e9f1965ed85ef87151e00f5311">&#9670;&nbsp;</a></span>analyze()</h2>
805
-
806
- <div class="memitem">
807
- <div class="memproto">
808
- <table class="mlabels">
809
- <tr>
810
- <td class="mlabels-left">
811
- <table class="memname">
812
- <tr>
813
- <td class="memname">void CFLAlias::analyze </td>
814
- <td>(</td>
815
- <td class="paramname"></td><td>)</td>
816
- <td></td>
817
- </tr>
818
- </table>
819
- </td>
820
- <td class="mlabels-right">
821
- <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
822
- </tr>
823
- </table>
824
- </div><div class="memdoc">
825
-
826
- <p>Start Analysis here (main part of pointer analysis). </p>
827
-
828
- <p>Implements <a class="el" href="classSVF_1_1PointerAnalysis.html#ae1e217dc18be0ce70bee5ad930cb54c6">SVF::PointerAnalysis</a>.</p>
829
-
830
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8cpp_source.html#l00217">217</a> of file <a class="el" href="CFLAlias_8cpp_source.html">CFLAlias.cpp</a>.</p>
831
- <div class="fragment"><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; <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLStat.html">CFLStat</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="classSVF_1_1GrammarBuilder.html">GrammarBuilder</a> grammarBuilder = <a class="code" href="classSVF_1_1GrammarBuilder.html">GrammarBuilder</a>(<a class="code" href="classSVF_1_1Options.html#aa929e2ae2c0a78181c3a1311bfe73596">Options::GrammarFilename</a>);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html">CFGNormalizer</a> normalizer = <a class="code" href="classSVF_1_1CFGNormalizer.html">CFGNormalizer</a>();</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="classSVF_1_1AliasCFLGraphBuilder.html">AliasCFLGraphBuilder</a> cflGraphBuilder = <a class="code" href="classSVF_1_1AliasCFLGraphBuilder.html">AliasCFLGraphBuilder</a>();</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="classSVF_1_1CFLGramGraphChecker.html">CFLGramGraphChecker</a> cflChecker = <a class="code" href="classSVF_1_1CFLGramGraphChecker.html">CFLGramGraphChecker</a>();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a87b63f1f8f4f65cdf6647f9f056ffc53">Options::CFLGraph</a>.empty())</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a431ec4f85eb0f029e5740b92fd9ceb32">PointerAnalysis::initialize</a>();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html">GrammarBase</a> *grammarBase = grammarBuilder.<a class="code" href="classSVF_1_1GrammarBuilder.html#a23d03b2cd348d85bda1ee582dded6505">build</a>();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a> *consCG = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>(<a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a7d566af0280a0c2457947fd426c81c81">Options::PEGTransfer</a>)</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; <a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a> = cflGraphBuilder.<a class="code" href="classSVF_1_1AliasCFLGraphBuilder.html#ac74b55198d73acebb9843fd13c1fd880">buildBiPEGgraph</a>(consCG, grammarBase-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a8921a7d7a006e31f13d88b8c808c931b">getStartKind</a>(), grammarBase, <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a> = cflGraphBuilder.<a class="code" href="classSVF_1_1AliasCFLGraphBuilder.html#ab19243c4aceffce7b257f3d8cb3050fd">buildBigraph</a>(consCG, grammarBase-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a8921a7d7a006e31f13d88b8c808c931b">getStartKind</a>(), grammarBase);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; cflChecker.<a class="code" href="classSVF_1_1CFLGramGraphChecker.html#ada643d980c2590711660eb5f2a4e5f93">check</a>(grammarBase, &amp;cflGraphBuilder, <a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#a31ffa49b8e0995b6ee9b8a1f5ecab7be">grammar</a> = normalizer.<a class="code" href="classSVF_1_1CFGNormalizer.html#ae8e2b22944e9d3d2ec14cd6aaa8b93c9">normalize</a>(grammarBase);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; cflChecker.<a class="code" href="classSVF_1_1CFLGramGraphChecker.html#ada643d980c2590711660eb5f2a4e5f93">check</a>(<a class="code" href="classSVF_1_1CFLAlias.html#a31ffa49b8e0995b6ee9b8a1f5ecab7be">grammar</a>, &amp;cflGraphBuilder, <a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keyword">delete</span> consCG;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keyword">delete</span> grammarBase;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">else</span></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"> 246</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html">GrammarBase</a> *grammarBase = grammarBuilder.<a class="code" href="classSVF_1_1GrammarBuilder.html#a23d03b2cd348d85bda1ee582dded6505">build</a>();</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a> = cflGraphBuilder.<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a6c9fa25204550dc5bea1cae52a61472b">buildFromDot</a>(<a class="code" href="classSVF_1_1Options.html#a87b63f1f8f4f65cdf6647f9f056ffc53">Options::CFLGraph</a>, grammarBase);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; cflChecker.<a class="code" href="classSVF_1_1CFLGramGraphChecker.html#ada643d980c2590711660eb5f2a4e5f93">check</a>(grammarBase, &amp;cflGraphBuilder, <a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#a31ffa49b8e0995b6ee9b8a1f5ecab7be">grammar</a> = normalizer.<a class="code" href="classSVF_1_1CFGNormalizer.html#ae8e2b22944e9d3d2ec14cd6aaa8b93c9">normalize</a>(grammarBase);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; cflChecker.<a class="code" href="classSVF_1_1CFLGramGraphChecker.html#ada643d980c2590711660eb5f2a4e5f93">check</a>(<a class="code" href="classSVF_1_1CFLAlias.html#a31ffa49b8e0995b6ee9b8a1f5ecab7be">grammar</a>, &amp;cflGraphBuilder, <a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">delete</span> grammarBase;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#aa61c3683c9b759b6eca65b1f88e00b35">solver</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLSolver.html">CFLSolver</a>(<a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>, <a class="code" href="classSVF_1_1CFLAlias.html#a31ffa49b8e0995b6ee9b8a1f5ecab7be">grammar</a>);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#aa61c3683c9b759b6eca65b1f88e00b35">solver</a>-&gt;<a class="code" href="classSVF_1_1CFLSolver.html#a2ee3436c26ebdb2aaf790c25b1d8b5a6">solve</a>();</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="classSVF_1_1CFLAlias.html#a9637bcb592d250b5556b242d2ffc88fa">updateCallGraph</a>(<a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">getIndirectCallsites</a>()))</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#aa61c3683c9b759b6eca65b1f88e00b35">solver</a>-&gt;<a class="code" href="classSVF_1_1CFLSolver.html#a2ee3436c26ebdb2aaf790c25b1d8b5a6">solve</a>();</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a0beb2da0f9ab691c0b7729bb42f8354c">Options::PrintCFL</a> == <span class="keyword">true</span>)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">dump</a>(<span class="stringliteral">&quot;IR&quot;</span>);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#a31ffa49b8e0995b6ee9b8a1f5ecab7be">grammar</a>-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#aa663563ea03e11371d67ff4673e98a54">dump</a>(<span class="stringliteral">&quot;Grammar&quot;</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#ab32869931e46babcfaa6791efe2ba91e">dump</a>(<span class="stringliteral">&quot;CFLGraph&quot;</span>);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a87b63f1f8f4f65cdf6647f9f056ffc53">Options::CFLGraph</a>.empty())</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a118dabc50024b5cd91095814ade47166">PointerAnalysis::finalize</a>();</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;}</div><div class="ttc" id="classSVF_1_1CFLGramGraphChecker_html_ada643d980c2590711660eb5f2a4e5f93"><div class="ttname"><a href="classSVF_1_1CFLGramGraphChecker.html#ada643d980c2590711660eb5f2a4e5f93">SVF::CFLGramGraphChecker::check</a></div><div class="ttdeci">void check(GrammarBase *grammar, CFLGraphBuilder *graphBuilder, CFLGraph *graph)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGramGraphChecker_8h_source.html#l00040">CFLGramGraphChecker.h:40</a></div></div>
832
- <div class="ttc" id="classSVF_1_1CFLGramGraphChecker_html"><div class="ttname"><a href="classSVF_1_1CFLGramGraphChecker.html">SVF::CFLGramGraphChecker</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGramGraphChecker_8h_source.html#l00037">CFLGramGraphChecker.h:37</a></div></div>
833
- <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>
834
- <div class="ttc" id="classSVF_1_1AliasCFLGraphBuilder_html_ab19243c4aceffce7b257f3d8cb3050fd"><div class="ttname"><a href="classSVF_1_1AliasCFLGraphBuilder.html#ab19243c4aceffce7b257f3d8cb3050fd">SVF::AliasCFLGraphBuilder::buildBigraph</a></div><div class="ttdeci">CFLGraph * buildBigraph(ConstraintGraph *graph, Kind startKind, GrammarBase *grammar)</div><div class="ttdoc">Build Bidirectional graph by copying nodes and edges from const graph inherited from GenericGraph...</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8cpp_source.html#l00162">CFLGraphBuilder.cpp:162</a></div></div>
835
- <div class="ttc" id="classSVF_1_1IRGraph_html_a1cb32461439c4dc8d044c2bfadb11307"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">SVF::IRGraph::dump</a></div><div class="ttdeci">void dump(std::string name)</div><div class="ttdoc">Dump SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00102">IRGraph.cpp:102</a></div></div>
836
- <div class="ttc" id="classSVF_1_1AliasCFLGraphBuilder_html"><div class="ttname"><a href="classSVF_1_1AliasCFLGraphBuilder.html">SVF::AliasCFLGraphBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00151">CFLGraphBuilder.h:151</a></div></div>
837
- <div class="ttc" id="classSVF_1_1GrammarBuilder_html"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html">SVF::GrammarBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8h_source.html#l00070">GrammarBuilder.h:70</a></div></div>
838
- <div class="ttc" id="classSVF_1_1CFLSolver_html"><div class="ttname"><a href="classSVF_1_1CFLSolver.html">SVF::CFLSolver</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00041">CFLSolver.h:41</a></div></div>
839
- <div class="ttc" id="classSVF_1_1CFLAlias_html_aa61c3683c9b759b6eca65b1f88e00b35"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#aa61c3683c9b759b6eca65b1f88e00b35">SVF::CFLAlias::solver</a></div><div class="ttdeci">CFLSolver * solver</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00177">CFLAlias.h:177</a></div></div>
840
- <div class="ttc" id="classSVF_1_1Options_html_a7d566af0280a0c2457947fd426c81c81"><div class="ttname"><a href="classSVF_1_1Options.html#a7d566af0280a0c2457947fd426c81c81">SVF::Options::PEGTransfer</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PEGTransfer</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00256">Options.h:256</a></div></div>
841
- <div class="ttc" id="classSVF_1_1CFGNormalizer_html_ae8e2b22944e9d3d2ec14cd6aaa8b93c9"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#ae8e2b22944e9d3d2ec14cd6aaa8b93c9">SVF::CFGNormalizer::normalize</a></div><div class="ttdeci">CFLGrammar * normalize(GrammarBase *generalGrammar)</div><div class="ttdoc">Binary Normal Form(BNF) normalization with variable attribute expanded. </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00042">CFGNormalizer.cpp:42</a></div></div>
842
- <div class="ttc" id="classSVF_1_1GrammarBase_html_a8921a7d7a006e31f13d88b8c808c931b"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a8921a7d7a006e31f13d88b8c808c931b">SVF::GrammarBase::getStartKind</a></div><div class="ttdeci">Kind getStartKind()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00195">CFLGrammar.h:195</a></div></div>
843
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a118dabc50024b5cd91095814ade47166"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a118dabc50024b5cd91095814ade47166">SVF::PointerAnalysis::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalization of a pointer analysis, including checking alias correctness. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00192">PointerAnalysis.cpp:192</a></div></div>
844
- <div class="ttc" id="classSVF_1_1CFLAlias_html_a31ffa49b8e0995b6ee9b8a1f5ecab7be"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a31ffa49b8e0995b6ee9b8a1f5ecab7be">SVF::CFLAlias::grammar</a></div><div class="ttdeci">CFLGrammar * grammar</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00176">CFLAlias.h:176</a></div></div>
845
- <div class="ttc" id="classSVF_1_1CFLGrammar_html_aa663563ea03e11371d67ff4673e98a54"><div class="ttname"><a href="classSVF_1_1CFLGrammar.html#aa663563ea03e11371d67ff4673e98a54">SVF::CFLGrammar::dump</a></div><div class="ttdeci">void dump() const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00281">CFLGrammar.cpp:281</a></div></div>
846
- <div class="ttc" id="classSVF_1_1CFLGraph_html_ab32869931e46babcfaa6791efe2ba91e"><div class="ttname"><a href="classSVF_1_1CFLGraph.html#ab32869931e46babcfaa6791efe2ba91e">SVF::CFLGraph::dump</a></div><div class="ttdeci">void dump(const std::string &amp;filename)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8cpp_source.html#l00070">CFLGraph.cpp:70</a></div></div>
847
- <div class="ttc" id="classSVF_1_1CFLAlias_html_a9637bcb592d250b5556b242d2ffc88fa"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a9637bcb592d250b5556b242d2ffc88fa">SVF::CFLAlias::updateCallGraph</a></div><div class="ttdeci">virtual bool updateCallGraph(const CallSiteToFunPtrMap &amp;callsites)</div><div class="ttdoc">Update call graph for the input indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8cpp_source.html#l00194">CFLAlias.cpp:194</a></div></div>
848
- <div class="ttc" id="classSVF_1_1CFGNormalizer_html"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html">SVF::CFGNormalizer</a></div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00047">CFGNormalizer.h:47</a></div></div>
849
- <div class="ttc" id="classSVF_1_1Options_html_a87b63f1f8f4f65cdf6647f9f056ffc53"><div class="ttname"><a href="classSVF_1_1Options.html#a87b63f1f8f4f65cdf6647f9f056ffc53">SVF::Options::CFLGraph</a></div><div class="ttdeci">static const llvm::cl::opt&lt; std::string &gt; CFLGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00253">Options.h:253</a></div></div>
850
- <div class="ttc" id="classSVF_1_1Options_html_a0beb2da0f9ab691c0b7729bb42f8354c"><div class="ttname"><a href="classSVF_1_1Options.html#a0beb2da0f9ab691c0b7729bb42f8354c">SVF::Options::PrintCFL</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PrintCFL</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00254">Options.h:254</a></div></div>
851
- <div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a6c9fa25204550dc5bea1cae52a61472b"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a6c9fa25204550dc5bea1cae52a61472b">SVF::CFLGraphBuilder::buildFromDot</a></div><div class="ttdeci">CFLGraph * buildFromDot(std::string filename, GrammarBase *grammar)</div><div class="ttdoc">Build graph from Dot. </div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8cpp_source.html#l00059">CFLGraphBuilder.cpp:59</a></div></div>
852
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00150">PointerAnalysis.h:150</a></div></div>
853
- <div class="ttc" id="classSVF_1_1CFLStat_html"><div class="ttname"><a href="classSVF_1_1CFLStat.html">SVF::CFLStat</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00047">CFLStat.h:47</a></div></div>
854
- <div class="ttc" id="classSVF_1_1CFLAlias_html_abd4d8eb59209a1f1cedebcf41117914b"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">SVF::CFLAlias::graph</a></div><div class="ttdeci">CFLGraph * graph</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00175">CFLAlias.h:175</a></div></div>
855
- <div class="ttc" id="classSVF_1_1GrammarBase_html"><div class="ttname"><a href="classSVF_1_1GrammarBase.html">SVF::GrammarBase</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00036">CFLGrammar.h:36</a></div></div>
856
- <div class="ttc" id="classSVF_1_1Options_html_aa929e2ae2c0a78181c3a1311bfe73596"><div class="ttname"><a href="classSVF_1_1Options.html#aa929e2ae2c0a78181c3a1311bfe73596">SVF::Options::GrammarFilename</a></div><div class="ttdeci">static const llvm::cl::opt&lt; std::string &gt; GrammarFilename</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00252">Options.h:252</a></div></div>
857
- <div class="ttc" id="classSVF_1_1CFLAlias_html_a0bf4ce7e4fb3d1d95608c06420cc65dc"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">SVF::CFLAlias::svfir</a></div><div class="ttdeci">SVFIR * svfir</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00174">CFLAlias.h:174</a></div></div>
858
- <div class="ttc" id="classSVF_1_1CFLSolver_html_a2ee3436c26ebdb2aaf790c25b1d8b5a6"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a2ee3436c26ebdb2aaf790c25b1d8b5a6">SVF::CFLSolver::solve</a></div><div class="ttdeci">void solve()</div><div class="ttdoc">Start solving. </div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8cpp_source.html#l00034">CFLSolver.cpp:34</a></div></div>
859
- <div class="ttc" id="classSVF_1_1SVFIR_html_a2d2131128ceb3362b5dc89317cfd88a0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">SVF::SVFIR::getIndirectCallsites</a></div><div class="ttdeci">const CallSiteToFunPtrMap &amp; getIndirectCallsites() const</div><div class="ttdoc">Add/get indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00299">SVFIR.h:299</a></div></div>
860
- <div class="ttc" id="classSVF_1_1AliasCFLGraphBuilder_html_ac74b55198d73acebb9843fd13c1fd880"><div class="ttname"><a href="classSVF_1_1AliasCFLGraphBuilder.html#ac74b55198d73acebb9843fd13c1fd880">SVF::AliasCFLGraphBuilder::buildBiPEGgraph</a></div><div class="ttdeci">CFLGraph * buildBiPEGgraph(ConstraintGraph *graph, Kind startKind, GrammarBase *grammar, SVFIR *pag)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8cpp_source.html#l00225">CFLGraphBuilder.cpp:225</a></div></div>
861
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a431ec4f85eb0f029e5740b92fd9ceb32"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a431ec4f85eb0f029e5740b92fd9ceb32">SVF::PointerAnalysis::initialize</a></div><div class="ttdeci">virtual void initialize()</div><div class="ttdoc">Initialization of a pointer analysis, including building symbol table and SVFIR etc. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00111">PointerAnalysis.cpp:111</a></div></div>
862
- <div class="ttc" id="classSVF_1_1GrammarBuilder_html_a23d03b2cd348d85bda1ee582dded6505"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a23d03b2cd348d85bda1ee582dded6505">SVF::GrammarBuilder::build</a></div><div class="ttdeci">GrammarBase * build() const</div><div class="ttdoc">Build grammarBase from fileName. </div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8cpp_source.html#l00110">GrammarBuilder.cpp:110</a></div></div>
863
- </div><!-- fragment -->
864
- </div>
865
- </div>
866
767
  <a id="abfab36c0d5edbdfb94e617bed61ba875"></a>
867
768
  <h2 class="memtitle"><span class="permalink"><a href="#abfab36c0d5edbdfb94e617bed61ba875">&#9670;&nbsp;</a></span>connectCaller2CalleeParams()</h2>
868
769
 
@@ -892,12 +793,13 @@ Additional Inherited Members</h2></td></tr>
892
793
  <p>Connect formal and actual parameters for indirect callsites. </p>
893
794
  <p>Connect formal and actual parameters for indirect callsites </p>
894
795
 
895
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8cpp_source.html#l00083">83</a> of file <a class="el" href="CFLAlias_8cpp_source.html">CFLAlias.cpp</a>.</p>
896
- <div class="fragment"><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;{</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; assert(F);</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; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#adbfc4364261f019dc6cf33234a5177d2">DAndersen</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;connect parameters from indirect callsite &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>()) &lt;&lt; <span class="stringliteral">&quot; to callee &quot;</span> &lt;&lt; *F &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlockNode = <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retBlockNode = <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">getRetICFGNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a19b96a872d9096037f20e25122e469ea">SVFUtil::isHeapAllocExtFunViaRet</a>(F) &amp;&amp; <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa79dba26cb34b40eee682713db299d5f">callsiteHasRet</a>(retBlockNode))</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#a40841c2b47cf690af5c13ba7662d0863">heapAllocatorViaIndCall</a>(cs);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#afe8274c3b7317fccef5314662a182046">funHasRet</a>(F) &amp;&amp; <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa79dba26cb34b40eee682713db299d5f">callsiteHasRet</a>(retBlockNode))</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* cs_return = <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3145677c7a3763fc0d6aa7e21b264ab6">getCallSiteRet</a>(retBlockNode);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fun_return = <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a34e27b8bcfeaafda190dcdb9169a346f">getFunRet</a>(F);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (cs_return-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>() &amp;&amp; fun_return-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstrec = cs_return-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcret = fun_return-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#a1fb9134ce0a8e901bb86c4a1954b17f2">addCopyEdge</a>(srcret, dstrec);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">else</span></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; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#adbfc4364261f019dc6cf33234a5177d2">DAndersen</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;not a pointer ignored\n&quot;</span>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a95f77211550ec2374d57779d88cf5138">hasCallSiteArgsMap</a>(callBlockNode) &amp;&amp; <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ac359813747b4f75920c5f395ba74f410">hasFunArgsList</a>(F))</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// connect actual and formal param</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVFIR::SVFVarList</a>&amp; csArgList = <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2a1e8ce39bf8deace3c344d5f05fe6ac">getCallSiteArgsList</a>(callBlockNode);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVFIR::SVFVarList</a>&amp; funArgList = <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa148e3e14ebad8460e32079f2f44413a">getFunArgsList</a>(F);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="comment">//Go through the fixed parameters.</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; args:&quot;</span>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; SVFIR::SVFVarList::const_iterator funArgIt = funArgList.begin(), funArgEit = funArgList.end();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; SVFIR::SVFVarList::const_iterator csArgIt = csArgList.begin(), csArgEit = csArgList.end();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">for</span> (; funArgIt != funArgEit; ++csArgIt, ++funArgIt)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="comment">//Some programs (e.g. Linux kernel) leave unneeded parameters empty.</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">if</span> (csArgIt == csArgEit)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#adbfc4364261f019dc6cf33234a5177d2">DAndersen</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; !! not enough args\n&quot;</span>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *cs_arg = *csArgIt ;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *fun_arg = *funArgIt;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">if</span> (cs_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>() &amp;&amp; fun_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#adbfc4364261f019dc6cf33234a5177d2">DAndersen</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process actual parm &quot;</span> &lt;&lt; cs_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcAA = cs_arg-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstFA = fun_arg-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#a1fb9134ce0a8e901bb86c4a1954b17f2">addCopyEdge</a>(srcAA, dstFA);</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="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">//Any remaining actual args must be varargs.</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">if</span> (F-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a3c1fa59deae39c75c72c97e47326d982">isVarArg</a>())</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vaF = <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a8b10c318674a47035d617b3ade4f069b">getVarargNode</a>(F);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n varargs:&quot;</span>);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">for</span> (; csArgIt != csArgEit; ++csArgIt)</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *cs_arg = *csArgIt;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span> (cs_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnAA = cs_arg-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#a1fb9134ce0a8e901bb86c4a1954b17f2">addCopyEdge</a>(vnAA,vaF);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; }</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; <span class="keywordflow">if</span>(csArgIt != csArgEit)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;too many args to non-vararg func.&quot;</span>);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;(&quot;</span> + <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>()) + <span class="stringliteral">&quot;)&quot;</span>);</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="ttc" id="classSVF_1_1SVFIR_html_a64939d7ecfd8e2cf862782954a56596b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVF::SVFIR::SVFVarList</a></div><div class="ttdeci">std::vector&lt; const SVFVar * &gt; SVFVarList</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00057">SVFIR.h:57</a></div></div>
796
+ <p class="definition">Definition at line <a class="el" href="CFLAlias_8cpp_source.html#l00063">63</a> of file <a class="el" href="CFLAlias_8cpp_source.html">CFLAlias.cpp</a>.</p>
797
+ <div class="fragment"><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; assert(F);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#adbfc4364261f019dc6cf33234a5177d2">DAndersen</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;connect parameters from indirect callsite &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>()) &lt;&lt; <span class="stringliteral">&quot; to callee &quot;</span> &lt;&lt; *F &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlockNode = <a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retBlockNode = <a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">getRetICFGNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a19b96a872d9096037f20e25122e469ea">SVFUtil::isHeapAllocExtFunViaRet</a>(F) &amp;&amp; <a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa79dba26cb34b40eee682713db299d5f">callsiteHasRet</a>(retBlockNode))</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#a40841c2b47cf690af5c13ba7662d0863">heapAllocatorViaIndCall</a>(cs);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#afe8274c3b7317fccef5314662a182046">funHasRet</a>(F) &amp;&amp; <a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa79dba26cb34b40eee682713db299d5f">callsiteHasRet</a>(retBlockNode))</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* cs_return = <a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3145677c7a3763fc0d6aa7e21b264ab6">getCallSiteRet</a>(retBlockNode);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fun_return = <a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a34e27b8bcfeaafda190dcdb9169a346f">getFunRet</a>(F);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">if</span> (cs_return-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>() &amp;&amp; fun_return-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</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; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstrec = cs_return-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcret = fun_return-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#a1fb9134ce0a8e901bb86c4a1954b17f2">addCopyEdge</a>(srcret, dstrec);</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">else</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#adbfc4364261f019dc6cf33234a5177d2">DAndersen</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;not a pointer ignored\n&quot;</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a95f77211550ec2374d57779d88cf5138">hasCallSiteArgsMap</a>(callBlockNode) &amp;&amp; <a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ac359813747b4f75920c5f395ba74f410">hasFunArgsList</a>(F))</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// connect actual and formal param</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVFIR::SVFVarList</a>&amp; csArgList = <a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2a1e8ce39bf8deace3c344d5f05fe6ac">getCallSiteArgsList</a>(callBlockNode);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVFIR::SVFVarList</a>&amp; funArgList = <a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa148e3e14ebad8460e32079f2f44413a">getFunArgsList</a>(F);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">//Go through the fixed parameters.</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; args:&quot;</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; SVFIR::SVFVarList::const_iterator funArgIt = funArgList.begin(), funArgEit = funArgList.end();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; SVFIR::SVFVarList::const_iterator csArgIt = csArgList.begin(), csArgEit = csArgList.end();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">for</span> (; funArgIt != funArgEit; ++csArgIt, ++funArgIt)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="comment">//Some programs (e.g. Linux kernel) leave unneeded parameters empty.</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span> (csArgIt == csArgEit)</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; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#adbfc4364261f019dc6cf33234a5177d2">DAndersen</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; !! not enough args\n&quot;</span>);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *cs_arg = *csArgIt ;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *fun_arg = *funArgIt;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">if</span> (cs_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>() &amp;&amp; fun_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#adbfc4364261f019dc6cf33234a5177d2">DAndersen</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process actual parm &quot;</span> &lt;&lt; cs_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcAA = cs_arg-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstFA = fun_arg-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#a1fb9134ce0a8e901bb86c4a1954b17f2">addCopyEdge</a>(srcAA, dstFA);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">//Any remaining actual args must be varargs.</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">if</span> (F-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a3c1fa59deae39c75c72c97e47326d982">isVarArg</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"> 126</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vaF = <a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a8b10c318674a47035d617b3ade4f069b">getVarargNode</a>(F);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n varargs:&quot;</span>);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">for</span> (; csArgIt != csArgEit; ++csArgIt)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *cs_arg = *csArgIt;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">if</span> (cs_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnAA = cs_arg-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#a1fb9134ce0a8e901bb86c4a1954b17f2">addCopyEdge</a>(vnAA,vaF);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">if</span>(csArgIt != csArgEit)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;too many args to non-vararg func.&quot;</span>);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;(&quot;</span> + <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>()) + <span class="stringliteral">&quot;)&quot;</span>);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_a64939d7ecfd8e2cf862782954a56596b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVF::SVFIR::SVFVarList</a></div><div class="ttdeci">std::vector&lt; const SVFVar * &gt; SVFVarList</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00057">SVFIR.h:57</a></div></div>
798
+ <div class="ttc" id="classSVF_1_1CFLBase_html_a9e6cbab31612da4a1f8f660d1fabc4c0"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">SVF::CFLBase::svfir</a></div><div class="ttdeci">SVFIR * svfir</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00101">CFLBase.h:101</a></div></div>
897
799
  <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>
898
800
  <div class="ttc" id="classSVF_1_1IRGraph_html_a8b10c318674a47035d617b3ade4f069b"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a8b10c318674a47035d617b3ade4f069b">SVF::IRGraph::getVarargNode</a></div><div class="ttdeci">NodeID getVarargNode(const SVFFunction *func) const</div><div class="ttdoc">getVarargNode - Return the unique node representing the variadic argument of a variadic function...</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00144">IRGraph.h:144</a></div></div>
899
801
  <div class="ttc" id="classSVF_1_1ICFG_html_a66cb50d8c176f800f06d9cb8924eb896"><div class="ttname"><a href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">SVF::ICFG::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00252">ICFG.cpp:252</a></div></div>
900
- <div class="ttc" id="classSVF_1_1CFLAlias_html_a40841c2b47cf690af5c13ba7662d0863"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a40841c2b47cf690af5c13ba7662d0863">SVF::CFLAlias::heapAllocatorViaIndCall</a></div><div class="ttdeci">void heapAllocatorViaIndCall(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8cpp_source.html#l00166">CFLAlias.cpp:166</a></div></div>
802
+ <div class="ttc" id="classSVF_1_1CFLAlias_html_a40841c2b47cf690af5c13ba7662d0863"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a40841c2b47cf690af5c13ba7662d0863">SVF::CFLAlias::heapAllocatorViaIndCall</a></div><div class="ttdeci">void heapAllocatorViaIndCall(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8cpp_source.html#l00146">CFLAlias.cpp:146</a></div></div>
901
803
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
902
804
  <div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00395">BasicTypes.h:395</a></div></div>
903
805
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00267">SVFUtil.cpp:267</a></div></div>
@@ -919,18 +821,17 @@ Additional Inherited Members</h2></td></tr>
919
821
  <div class="ttc" id="classSVF_1_1SVFIR_html_a34e27b8bcfeaafda190dcdb9169a346f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a34e27b8bcfeaafda190dcdb9169a346f">SVF::SVFIR::getFunRet</a></div><div class="ttdeci">const SVFVar * getFunRet(const SVFFunction *func) const</div><div class="ttdoc">Get function return list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00270">SVFIR.h:270</a></div></div>
920
822
  <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
921
823
  <div class="ttc" id="SVFBasicTypes_8h_html_a7a295e02c56a93cf9206dd9d3b18dd17"><div class="ttname"><a href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a></div><div class="ttdeci">#define DPAGBuild</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00162">SVFBasicTypes.h:162</a></div></div>
922
- <div class="ttc" id="classSVF_1_1CFLAlias_html_a0bf4ce7e4fb3d1d95608c06420cc65dc"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">SVF::CFLAlias::svfir</a></div><div class="ttdeci">SVFIR * svfir</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00174">CFLAlias.h:174</a></div></div>
923
824
  <div class="ttc" id="classSVF_1_1SVFFunction_html_a3c1fa59deae39c75c72c97e47326d982"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a3c1fa59deae39c75c72c97e47326d982">SVF::SVFFunction::isVarArg</a></div><div class="ttdeci">bool isVarArg() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00167">BasicTypes.h:167</a></div></div>
924
825
  <div class="ttc" id="classSVF_1_1SVFIR_html_a3145677c7a3763fc0d6aa7e21b264ab6"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3145677c7a3763fc0d6aa7e21b264ab6">SVF::SVFIR::getCallSiteRet</a></div><div class="ttdeci">const SVFVar * getCallSiteRet(const RetICFGNode *cs) const</div><div class="ttdoc">Get callsite return. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00254">SVFIR.h:254</a></div></div>
925
826
  <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
926
- <div class="ttc" id="classSVF_1_1CFLAlias_html_a1fb9134ce0a8e901bb86c4a1954b17f2"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a1fb9134ce0a8e901bb86c4a1954b17f2">SVF::CFLAlias::addCopyEdge</a></div><div class="ttdeci">virtual bool addCopyEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Need Original one for virtual table. </div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00112">CFLAlias.h:112</a></div></div>
827
+ <div class="ttc" id="classSVF_1_1CFLAlias_html_a1fb9134ce0a8e901bb86c4a1954b17f2"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a1fb9134ce0a8e901bb86c4a1954b17f2">SVF::CFLAlias::addCopyEdge</a></div><div class="ttdeci">virtual bool addCopyEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Need Original one for virtual table. </div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00104">CFLAlias.h:104</a></div></div>
927
828
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00155">SVFBasicTypes.h:155</a></div></div>
928
829
  <div class="ttc" id="classSVF_1_1SVFIR_html_aa79dba26cb34b40eee682713db299d5f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa79dba26cb34b40eee682713db299d5f">SVF::SVFIR::callsiteHasRet</a></div><div class="ttdeci">bool callsiteHasRet(const RetICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00260">SVFIR.h:260</a></div></div>
929
830
  </div><!-- fragment -->
930
831
  </div>
931
832
  </div>
932
- <a id="ade2773347ef08df69713e14cf1a24352"></a>
933
- <h2 class="memtitle"><span class="permalink"><a href="#ade2773347ef08df69713e14cf1a24352">&#9670;&nbsp;</a></span>getCFLGraph()</h2>
833
+ <a id="a1b7e49b3f42d625f1f25258044f8b885"></a>
834
+ <h2 class="memtitle"><span class="permalink"><a href="#a1b7e49b3f42d625f1f25258044f8b885">&#9670;&nbsp;</a></span>finalize()</h2>
934
835
 
935
836
  <div class="memitem">
936
837
  <div class="memproto">
@@ -939,7 +840,7 @@ Additional Inherited Members</h2></td></tr>
939
840
  <td class="mlabels-left">
940
841
  <table class="memname">
941
842
  <tr>
942
- <td class="memname"><a class="el" href="classSVF_1_1CFLGraph.html">CFLGraph</a>* SVF::CFLAlias::getCFLGraph </td>
843
+ <td class="memname">void CFLAlias::finalize </td>
943
844
  <td>(</td>
944
845
  <td class="paramname"></td><td>)</td>
945
846
  <td></td>
@@ -947,15 +848,25 @@ Additional Inherited Members</h2></td></tr>
947
848
  </table>
948
849
  </td>
949
850
  <td class="mlabels-right">
950
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
851
+ <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
951
852
  </tr>
952
853
  </table>
953
854
  </div><div class="memdoc">
954
855
 
955
- <p>Get CFL graph. </p>
856
+ <p>Print grammar and graph. </p>
857
+
858
+ <p>Reimplemented from <a class="el" href="classSVF_1_1BVDataPTAImpl.html#a57ff2bf45ede7a730a8adaba8e61179d">SVF::BVDataPTAImpl</a>.</p>
956
859
 
957
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00146">146</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
958
- <div class="fragment"><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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div><div class="ttc" id="classSVF_1_1CFLAlias_html_abd4d8eb59209a1f1cedebcf41117914b"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">SVF::CFLAlias::graph</a></div><div class="ttdeci">CFLGraph * graph</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00175">CFLAlias.h:175</a></div></div>
860
+ <p class="definition">Definition at line <a class="el" href="CFLAlias_8cpp_source.html#l00207">207</a> of file <a class="el" href="CFLAlias_8cpp_source.html">CFLAlias.cpp</a>.</p>
861
+ <div class="fragment"><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;{</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a0beb2da0f9ab691c0b7729bb42f8354c">Options::PrintCFL</a> == <span class="keyword">true</span>)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a87b63f1f8f4f65cdf6647f9f056ffc53">Options::CFLGraph</a>.empty())</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">dump</a>(<span class="stringliteral">&quot;IR&quot;</span>);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="classSVF_1_1CFLBase.html#af7b0e90b8f8998ab6cf4e05155c7a503">grammar</a>-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#aa663563ea03e11371d67ff4673e98a54">dump</a>(<span class="stringliteral">&quot;Grammar&quot;</span>);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#ab32869931e46babcfaa6791efe2ba91e">dump</a>(<span class="stringliteral">&quot;CFLGraph&quot;</span>);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a87b63f1f8f4f65cdf6647f9f056ffc53">Options::CFLGraph</a>.empty())</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a118dabc50024b5cd91095814ade47166">PointerAnalysis::finalize</a>();</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;}</div><div class="ttc" id="classSVF_1_1CFLBase_html_a9e6cbab31612da4a1f8f660d1fabc4c0"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">SVF::CFLBase::svfir</a></div><div class="ttdeci">SVFIR * svfir</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00101">CFLBase.h:101</a></div></div>
862
+ <div class="ttc" id="classSVF_1_1CFLBase_html_a8101683062b9a71c0b2309cbdfb7b26f"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">SVF::CFLBase::graph</a></div><div class="ttdeci">CFLGraph * graph</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00102">CFLBase.h:102</a></div></div>
863
+ <div class="ttc" id="classSVF_1_1IRGraph_html_a1cb32461439c4dc8d044c2bfadb11307"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">SVF::IRGraph::dump</a></div><div class="ttdeci">void dump(std::string name)</div><div class="ttdoc">Dump SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00102">IRGraph.cpp:102</a></div></div>
864
+ <div class="ttc" id="classSVF_1_1CFLBase_html_af7b0e90b8f8998ab6cf4e05155c7a503"><div class="ttname"><a href="classSVF_1_1CFLBase.html#af7b0e90b8f8998ab6cf4e05155c7a503">SVF::CFLBase::grammar</a></div><div class="ttdeci">CFLGrammar * grammar</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00104">CFLBase.h:104</a></div></div>
865
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a118dabc50024b5cd91095814ade47166"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a118dabc50024b5cd91095814ade47166">SVF::PointerAnalysis::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalization of a pointer analysis, including checking alias correctness. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00192">PointerAnalysis.cpp:192</a></div></div>
866
+ <div class="ttc" id="classSVF_1_1CFLGrammar_html_aa663563ea03e11371d67ff4673e98a54"><div class="ttname"><a href="classSVF_1_1CFLGrammar.html#aa663563ea03e11371d67ff4673e98a54">SVF::CFLGrammar::dump</a></div><div class="ttdeci">void dump() const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00281">CFLGrammar.cpp:281</a></div></div>
867
+ <div class="ttc" id="classSVF_1_1CFLGraph_html_ab32869931e46babcfaa6791efe2ba91e"><div class="ttname"><a href="classSVF_1_1CFLGraph.html#ab32869931e46babcfaa6791efe2ba91e">SVF::CFLGraph::dump</a></div><div class="ttdeci">void dump(const std::string &amp;filename)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8cpp_source.html#l00070">CFLGraph.cpp:70</a></div></div>
868
+ <div class="ttc" id="classSVF_1_1Options_html_a87b63f1f8f4f65cdf6647f9f056ffc53"><div class="ttname"><a href="classSVF_1_1Options.html#a87b63f1f8f4f65cdf6647f9f056ffc53">SVF::Options::CFLGraph</a></div><div class="ttdeci">static const llvm::cl::opt&lt; std::string &gt; CFLGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00253">Options.h:253</a></div></div>
869
+ <div class="ttc" id="classSVF_1_1Options_html_a0beb2da0f9ab691c0b7729bb42f8354c"><div class="ttname"><a href="classSVF_1_1Options.html#a0beb2da0f9ab691c0b7729bb42f8354c">SVF::Options::PrintCFL</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PrintCFL</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00254">Options.h:254</a></div></div>
959
870
  </div><!-- fragment -->
960
871
  </div>
961
872
  </div>
@@ -986,13 +897,13 @@ Additional Inherited Members</h2></td></tr>
986
897
  <p>Get points-to targets of a pointer. V In this context. </p>
987
898
  <p>Check V Dst of ptr. </p>
988
899
 
989
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00085">85</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
990
- <div class="fragment"><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; CFLNode *funNode = <a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(ptr);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> outedge = funNode-&gt;getOutEdges().begin(); outedge!=funNode-&gt;getOutEdges().end(); outedge++)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span>((*outedge)-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#a685fb852b2cd3767258225aa3b87caa4">getStartKind</a>())</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// Need to Find dst addr src</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; CFLNode *vNode = <a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>((*outedge)-&gt;getDstID());</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(ptr, <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">getBaseValVar</a>((*outedge)-&gt;getDstID()));</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> inEdge = vNode-&gt;getInEdges().begin(); inEdge!=vNode-&gt;getInEdges().end(); inEdge++)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">if</span>((*inEdge)-&gt;getEdgeKind() == 0)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(ptr, (*inEdge)-&gt;getSrcID());</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="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(ptr);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a5298f34143ec3a2e6bb74ebad668cbbc"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">SVF::SVFIR::getBaseValVar</a></div><div class="ttdeci">NodeID getBaseValVar(NodeID nodeId)</div><div class="ttdoc">Base and Offset methods for Value and Object node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00521">SVFIR.cpp:521</a></div></div>
900
+ <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00078">78</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
901
+ <div class="fragment"><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; CFLNode *funNode = <a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(ptr);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> outedge = funNode-&gt;getOutEdges().begin(); outedge!=funNode-&gt;getOutEdges().end(); outedge++)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span>((*outedge)-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#a685fb852b2cd3767258225aa3b87caa4">getStartKind</a>())</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">// Need to Find dst addr src</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; CFLNode *vNode = <a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>((*outedge)-&gt;getDstID());</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(ptr, <a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">getBaseValVar</a>((*outedge)-&gt;getDstID()));</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> inEdge = vNode-&gt;getInEdges().begin(); inEdge!=vNode-&gt;getInEdges().end(); inEdge++)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span>((*inEdge)-&gt;getEdgeKind() == 0)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(ptr, (*inEdge)-&gt;getSrcID());</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(ptr);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="ttc" id="classSVF_1_1CFLBase_html_a9e6cbab31612da4a1f8f660d1fabc4c0"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">SVF::CFLBase::svfir</a></div><div class="ttdeci">SVFIR * svfir</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00101">CFLBase.h:101</a></div></div>
902
+ <div class="ttc" id="classSVF_1_1CFLBase_html_a8101683062b9a71c0b2309cbdfb7b26f"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">SVF::CFLBase::graph</a></div><div class="ttdeci">CFLGraph * graph</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00102">CFLBase.h:102</a></div></div>
903
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a5298f34143ec3a2e6bb74ebad668cbbc"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">SVF::SVFIR::getBaseValVar</a></div><div class="ttdeci">NodeID getBaseValVar(NodeID nodeId)</div><div class="ttdoc">Base and Offset methods for Value and Object node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00521">SVFIR.cpp:521</a></div></div>
991
904
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_af68485a2208553579f9c2e4b2cb20cff"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">SVF::BVDataPTAImpl::addPts</a></div><div class="ttdeci">virtual bool addPts(NodeID id, NodeID ptd)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00132">PointerAnalysisImpl.h:132</a></div></div>
992
905
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee289e298e421448caaa604b7eb34fcb"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">SVF::BVDataPTAImpl::getPts</a></div><div class="ttdeci">virtual const PointsTo &amp; getPts(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00099">PointerAnalysisImpl.h:99</a></div></div>
993
- <div class="ttc" id="classSVF_1_1CFLAlias_html_abd4d8eb59209a1f1cedebcf41117914b"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">SVF::CFLAlias::graph</a></div><div class="ttdeci">CFLGraph * graph</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00175">CFLAlias.h:175</a></div></div>
994
906
  <div class="ttc" id="classSVF_1_1CFLGraph_html_a685fb852b2cd3767258225aa3b87caa4"><div class="ttname"><a href="classSVF_1_1CFLGraph.html#a685fb852b2cd3767258225aa3b87caa4">SVF::CFLGraph::getStartKind</a></div><div class="ttdeci">Kind getStartKind() const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8cpp_source.html#l00037">CFLGraph.cpp:37</a></div></div>
995
- <div class="ttc" id="classSVF_1_1CFLAlias_html_a0bf4ce7e4fb3d1d95608c06420cc65dc"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">SVF::CFLAlias::svfir</a></div><div class="ttdeci">SVFIR * svfir</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00174">CFLAlias.h:174</a></div></div>
996
907
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00391">GenericGraph.h:391</a></div></div>
997
908
  </div><!-- fragment -->
998
909
  </div>
@@ -1026,8 +937,8 @@ Additional Inherited Members</h2></td></tr>
1026
937
 
1027
938
  <p>Reimplemented from <a class="el" href="classSVF_1_1BVDataPTAImpl.html#a58113943e4e7144d94d26991dcc8bcc7">SVF::BVDataPTAImpl</a>.</p>
1028
939
 
1029
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00128">128</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1030
- <div class="fragment"><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; abort(); <span class="comment">// to be implemented</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div></div><!-- fragment -->
940
+ <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00120">120</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
941
+ <div class="fragment"><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; abort(); <span class="comment">// to be implemented</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div></div><!-- fragment -->
1031
942
  </div>
1032
943
  </div>
1033
944
  <a id="a40841c2b47cf690af5c13ba7662d0863"></a>
@@ -1046,9 +957,11 @@ Additional Inherited Members</h2></td></tr>
1046
957
  </table>
1047
958
  </div><div class="memdoc">
1048
959
 
1049
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8cpp_source.html#l00166">166</a> of file <a class="el" href="CFLAlias_8cpp_source.html">CFLAlias.cpp</a>.</p>
1050
- <div class="fragment"><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;{</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; assert(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(cs) == <span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;not an indirect callsite?&quot;</span>);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retBlockNode = <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">getRetICFGNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* cs_return = <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3145677c7a3763fc0d6aa7e21b264ab6">getCallSiteRet</a>(retBlockNode);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcret;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; CallSite2DummyValPN::const_iterator it = <a class="code" href="classSVF_1_1CFLAlias.html#ae879c990852862e5ed4e4e7da76dda05">callsite2DummyValPN</a>.find(cs);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">if</span>(it != <a class="code" href="classSVF_1_1CFLAlias.html#ae879c990852862e5ed4e4e7da76dda05">callsite2DummyValPN</a>.end())</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; srcret = it-&gt;second;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">else</span></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; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> valNode = <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">addDummyValNode</a>();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> objNode = <a class="code" href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a905b16c9fe739c4e95902b2729951b5b">addDummyObjNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a9b7d53a345875e4e6c72eb23ac6475de">getType</a>());</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#ae879c990852862e5ed4e4e7da76dda05">callsite2DummyValPN</a>.insert(std::make_pair(cs,valNode));</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#a58b944d0f2c11868e17223acdb35f82c">addCFLNode</a>(valNode, <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLNode.html">CFLNode</a>(valNode));</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">graph</a>-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#a58b944d0f2c11868e17223acdb35f82c">addCFLNode</a>(objNode, <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLNode.html">CFLNode</a>(objNode));</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; srcret = valNode;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstrec = cs_return-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#a1fb9134ce0a8e901bb86c4a1954b17f2">addCopyEdge</a>(srcret, dstrec);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_aa7e98cd2fd599aedefa4c2e6fb659da0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">SVF::SVFIR::addDummyValNode</a></div><div class="ttdeci">NodeID addDummyValNode()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00425">SVFIR.h:425</a></div></div>
960
+ <p class="definition">Definition at line <a class="el" href="CFLAlias_8cpp_source.html#l00146">146</a> of file <a class="el" href="CFLAlias_8cpp_source.html">CFLAlias.cpp</a>.</p>
961
+ <div class="fragment"><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; assert(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(cs) == <span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;not an indirect callsite?&quot;</span>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retBlockNode = <a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">getRetICFGNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* cs_return = <a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3145677c7a3763fc0d6aa7e21b264ab6">getCallSiteRet</a>(retBlockNode);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcret;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; CallSite2DummyValPN::const_iterator it = <a class="code" href="classSVF_1_1CFLAlias.html#ae879c990852862e5ed4e4e7da76dda05">callsite2DummyValPN</a>.find(cs);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">if</span>(it != <a class="code" href="classSVF_1_1CFLAlias.html#ae879c990852862e5ed4e4e7da76dda05">callsite2DummyValPN</a>.end())</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; srcret = it-&gt;second;</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> valNode = <a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">addDummyValNode</a>();</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> objNode = <a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a905b16c9fe739c4e95902b2729951b5b">addDummyObjNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a9b7d53a345875e4e6c72eb23ac6475de">getType</a>());</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#ae879c990852862e5ed4e4e7da76dda05">callsite2DummyValPN</a>.insert(std::make_pair(cs,valNode));</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#a58b944d0f2c11868e17223acdb35f82c">addCFLNode</a>(valNode, <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLNode.html">CFLNode</a>(valNode));</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#a58b944d0f2c11868e17223acdb35f82c">addCFLNode</a>(objNode, <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLNode.html">CFLNode</a>(objNode));</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; srcret = valNode;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstrec = cs_return-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#a1fb9134ce0a8e901bb86c4a1954b17f2">addCopyEdge</a>(srcret, dstrec);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;}</div><div class="ttc" id="classSVF_1_1CFLBase_html_a9e6cbab31612da4a1f8f660d1fabc4c0"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">SVF::CFLBase::svfir</a></div><div class="ttdeci">SVFIR * svfir</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00101">CFLBase.h:101</a></div></div>
962
+ <div class="ttc" id="classSVF_1_1SVFIR_html_aa7e98cd2fd599aedefa4c2e6fb659da0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">SVF::SVFIR::addDummyValNode</a></div><div class="ttdeci">NodeID addDummyValNode()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00425">SVFIR.h:425</a></div></div>
1051
963
  <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>
964
+ <div class="ttc" id="classSVF_1_1CFLBase_html_a8101683062b9a71c0b2309cbdfb7b26f"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">SVF::CFLBase::graph</a></div><div class="ttdeci">CFLGraph * graph</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00102">CFLBase.h:102</a></div></div>
1052
965
  <div class="ttc" id="classSVF_1_1CFLGraph_html_a58b944d0f2c11868e17223acdb35f82c"><div class="ttname"><a href="classSVF_1_1CFLGraph.html#a58b944d0f2c11868e17223acdb35f82c">SVF::CFLGraph::addCFLNode</a></div><div class="ttdeci">virtual void addCFLNode(NodeID id, CFLNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8cpp_source.html#l00042">CFLGraph.cpp:42</a></div></div>
1053
966
  <div class="ttc" id="classSVF_1_1ICFG_html_a66cb50d8c176f800f06d9cb8924eb896"><div class="ttname"><a href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">SVF::ICFG::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00252">ICFG.cpp:252</a></div></div>
1054
967
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
@@ -1057,14 +970,52 @@ Additional Inherited Members</h2></td></tr>
1057
970
  <div class="ttc" id="classSVF_1_1CFLNode_html"><div class="ttname"><a href="classSVF_1_1CFLNode.html">SVF::CFLNode</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8h_source.html#l00074">CFLGraph.h:74</a></div></div>
1058
971
  <div class="ttc" id="classSVF_1_1SVFIR_html_a905b16c9fe739c4e95902b2729951b5b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a905b16c9fe739c4e95902b2729951b5b">SVF::SVFIR::addDummyObjNode</a></div><div class="ttdeci">NodeID addDummyObjNode(const Type *type)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00429">SVFIR.h:429</a></div></div>
1059
972
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00269">SVFUtil.h:269</a></div></div>
1060
- <div class="ttc" id="classSVF_1_1CFLAlias_html_abd4d8eb59209a1f1cedebcf41117914b"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#abd4d8eb59209a1f1cedebcf41117914b">SVF::CFLAlias::graph</a></div><div class="ttdeci">CFLGraph * graph</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00175">CFLAlias.h:175</a></div></div>
1061
- <div class="ttc" id="classSVF_1_1CFLAlias_html_ae879c990852862e5ed4e4e7da76dda05"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#ae879c990852862e5ed4e4e7da76dda05">SVF::CFLAlias::callsite2DummyValPN</a></div><div class="ttdeci">CallSite2DummyValPN callsite2DummyValPN</div><div class="ttdoc">Map an instruction to a dummy obj which created at an indirect callsite, which invokes a heap allocat...</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00173">CFLAlias.h:173</a></div></div>
973
+ <div class="ttc" id="classSVF_1_1CFLAlias_html_ae879c990852862e5ed4e4e7da76dda05"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#ae879c990852862e5ed4e4e7da76dda05">SVF::CFLAlias::callsite2DummyValPN</a></div><div class="ttdeci">CallSite2DummyValPN callsite2DummyValPN</div><div class="ttdoc">Map an instruction to a dummy obj which created at an indirect callsite, which invokes a heap allocat...</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00138">CFLAlias.h:138</a></div></div>
1062
974
  <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
1063
975
  <div class="ttc" id="classSVF_1_1CallSite_html_a9b7d53a345875e4e6c72eb23ac6475de"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9b7d53a345875e4e6c72eb23ac6475de">SVF::CallSite::getType</a></div><div class="ttdeci">Type * getType() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00403">BasicTypes.h:403</a></div></div>
1064
- <div class="ttc" id="classSVF_1_1CFLAlias_html_a0bf4ce7e4fb3d1d95608c06420cc65dc"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a0bf4ce7e4fb3d1d95608c06420cc65dc">SVF::CFLAlias::svfir</a></div><div class="ttdeci">SVFIR * svfir</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00174">CFLAlias.h:174</a></div></div>
1065
976
  <div class="ttc" id="classSVF_1_1SVFIR_html_a3145677c7a3763fc0d6aa7e21b264ab6"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3145677c7a3763fc0d6aa7e21b264ab6">SVF::SVFIR::getCallSiteRet</a></div><div class="ttdeci">const SVFVar * getCallSiteRet(const RetICFGNode *cs) const</div><div class="ttdoc">Get callsite return. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00254">SVFIR.h:254</a></div></div>
1066
977
  <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
1067
- <div class="ttc" id="classSVF_1_1CFLAlias_html_a1fb9134ce0a8e901bb86c4a1954b17f2"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a1fb9134ce0a8e901bb86c4a1954b17f2">SVF::CFLAlias::addCopyEdge</a></div><div class="ttdeci">virtual bool addCopyEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Need Original one for virtual table. </div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00112">CFLAlias.h:112</a></div></div>
978
+ <div class="ttc" id="classSVF_1_1CFLAlias_html_a1fb9134ce0a8e901bb86c4a1954b17f2"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a1fb9134ce0a8e901bb86c4a1954b17f2">SVF::CFLAlias::addCopyEdge</a></div><div class="ttdeci">virtual bool addCopyEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Need Original one for virtual table. </div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00104">CFLAlias.h:104</a></div></div>
979
+ </div><!-- fragment -->
980
+ </div>
981
+ </div>
982
+ <a id="aef129edd61d7f15947c6539f8d0c36a0"></a>
983
+ <h2 class="memtitle"><span class="permalink"><a href="#aef129edd61d7f15947c6539f8d0c36a0">&#9670;&nbsp;</a></span>initialize()</h2>
984
+
985
+ <div class="memitem">
986
+ <div class="memproto">
987
+ <table class="mlabels">
988
+ <tr>
989
+ <td class="mlabels-left">
990
+ <table class="memname">
991
+ <tr>
992
+ <td class="memname">void CFLAlias::initialize </td>
993
+ <td>(</td>
994
+ <td class="paramname"></td><td>)</td>
995
+ <td></td>
996
+ </tr>
997
+ </table>
998
+ </td>
999
+ <td class="mlabels-right">
1000
+ <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
1001
+ </tr>
1002
+ </table>
1003
+ </div><div class="memdoc">
1004
+
1005
+ <p>Initialize the grammar, graph, solver. </p>
1006
+
1007
+ <p>Reimplemented from <a class="el" href="classSVF_1_1PointerAnalysis.html#a431ec4f85eb0f029e5740b92fd9ceb32">SVF::PointerAnalysis</a>.</p>
1008
+
1009
+ <p class="definition">Definition at line <a class="el" href="CFLAlias_8cpp_source.html#l00190">190</a> of file <a class="el" href="CFLAlias_8cpp_source.html">CFLAlias.cpp</a>.</p>
1010
+ <div class="fragment"><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLStat.html">CFLStat</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="comment">// Build CFL Grammar</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="classSVF_1_1CFLBase.html#a77bc3b0260fe02cdcf41fdb6b80caa09">buildCFLGrammar</a>();</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"> 197</span>&#160; <span class="comment">// Build CFL Graph</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="classSVF_1_1CFLBase.html#a0daabb58bd7d5be40379ccc670c37a93">buildCFLGraph</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="comment">// Normalize CFL Grammar</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="classSVF_1_1CFLBase.html#a462de3facd2a9365d32397d250414ee9">normalizeCFLGrammar</a>();</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="comment">// Initialize sovler</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="classSVF_1_1CFLBase.html#a34c3a3eec2d7d34ef78b5031d8844b17">solver</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLSolver.html">CFLSolver</a>(<a class="code" href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">graph</a>, <a class="code" href="classSVF_1_1CFLBase.html#af7b0e90b8f8998ab6cf4e05155c7a503">grammar</a>);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;}</div><div class="ttc" id="classSVF_1_1CFLBase_html_a77bc3b0260fe02cdcf41fdb6b80caa09"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a77bc3b0260fe02cdcf41fdb6b80caa09">SVF::CFLBase::buildCFLGrammar</a></div><div class="ttdeci">virtual void buildCFLGrammar()</div><div class="ttdoc">Build Grammar from text file. </div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8cpp_source.html#l00044">CFLBase.cpp:44</a></div></div>
1011
+ <div class="ttc" id="classSVF_1_1CFLBase_html_a8101683062b9a71c0b2309cbdfb7b26f"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a8101683062b9a71c0b2309cbdfb7b26f">SVF::CFLBase::graph</a></div><div class="ttdeci">CFLGraph * graph</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00102">CFLBase.h:102</a></div></div>
1012
+ <div class="ttc" id="classSVF_1_1CFLSolver_html"><div class="ttname"><a href="classSVF_1_1CFLSolver.html">SVF::CFLSolver</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00041">CFLSolver.h:41</a></div></div>
1013
+ <div class="ttc" id="classSVF_1_1CFLBase_html_af7b0e90b8f8998ab6cf4e05155c7a503"><div class="ttname"><a href="classSVF_1_1CFLBase.html#af7b0e90b8f8998ab6cf4e05155c7a503">SVF::CFLBase::grammar</a></div><div class="ttdeci">CFLGrammar * grammar</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00104">CFLBase.h:104</a></div></div>
1014
+ <div class="ttc" id="classSVF_1_1CFLBase_html_a462de3facd2a9365d32397d250414ee9"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a462de3facd2a9365d32397d250414ee9">SVF::CFLBase::normalizeCFLGrammar</a></div><div class="ttdeci">virtual void normalizeCFLGrammar()</div><div class="ttdoc">Normalize grammar. </div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8cpp_source.html#l00085">CFLBase.cpp:85</a></div></div>
1015
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00150">PointerAnalysis.h:150</a></div></div>
1016
+ <div class="ttc" id="classSVF_1_1CFLStat_html"><div class="ttname"><a href="classSVF_1_1CFLStat.html">SVF::CFLStat</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00049">CFLStat.h:49</a></div></div>
1017
+ <div class="ttc" id="classSVF_1_1CFLBase_html_a34c3a3eec2d7d34ef78b5031d8844b17"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a34c3a3eec2d7d34ef78b5031d8844b17">SVF::CFLBase::solver</a></div><div class="ttdeci">CFLSolver * solver</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00105">CFLBase.h:105</a></div></div>
1018
+ <div class="ttc" id="classSVF_1_1CFLBase_html_a0daabb58bd7d5be40379ccc670c37a93"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a0daabb58bd7d5be40379ccc670c37a93">SVF::CFLBase::buildCFLGraph</a></div><div class="ttdeci">virtual void buildCFLGraph()</div><div class="ttdoc">Build CFLGraph based on Option. </div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8cpp_source.html#l00057">CFLBase.cpp:57</a></div></div>
1068
1019
  </div><!-- fragment -->
1069
1020
  </div>
1070
1021
  </div>
@@ -1107,9 +1058,9 @@ Additional Inherited Members</h2></td></tr>
1107
1058
 
1108
1059
  <p>Reimplemented from <a class="el" href="classSVF_1_1BVDataPTAImpl.html#a9830d4676fd424b633f8e4d918734296">SVF::BVDataPTAImpl</a>.</p>
1109
1060
 
1110
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8cpp_source.html#l00061">61</a> of file <a class="el" href="CFLAlias_8cpp_source.html">CFLAlias.cpp</a>.</p>
1111
- <div class="fragment"><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">for</span>(CallSiteToFunPtrMap::const_iterator iter = callsites.begin(), eiter = callsites.end(); iter!=eiter; ++iter)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = iter-&gt;first;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">isVirtualCallSite</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>())))</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *vtbl = <a class="code" href="namespaceSVF_1_1cppUtil.html#a3b00cc9770022f124958513bf1e52a05">getVCallVtblPtr</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()));</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; assert(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#aceb17dfbe137658625e16291127267d1">hasValueNode</a>(vtbl));</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vtblId = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(vtbl);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac04b64a5884710508b304f93da88c7ba">resolveCPPIndCalls</a>(cs, <a class="code" href="classSVF_1_1CFLAlias.html#acbbacca91cb85f67523aa8f84f6fe629">getCFLPts</a>(vtblId), newEdges);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a8d128246f86f28fdf4981d91169ab440">resolveIndCalls</a>(iter-&gt;first,<a class="code" href="classSVF_1_1CFLAlias.html#acbbacca91cb85f67523aa8f84f6fe629">getCFLPts</a>(iter-&gt;second),newEdges);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a8d128246f86f28fdf4981d91169ab440"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a8d128246f86f28fdf4981d91169ab440">SVF::PointerAnalysis::resolveIndCalls</a></div><div class="ttdeci">virtual void resolveIndCalls(const CallICFGNode *cs, const PointsTo &amp;target, CallEdgeMap &amp;newEdges)</div><div class="ttdoc">Resolve indirect call edges. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00399">PointerAnalysis.cpp:399</a></div></div>
1112
- <div class="ttc" id="classSVF_1_1CFLAlias_html_acbbacca91cb85f67523aa8f84f6fe629"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#acbbacca91cb85f67523aa8f84f6fe629">SVF::CFLAlias::getCFLPts</a></div><div class="ttdeci">virtual const PointsTo &amp; getCFLPts(NodeID ptr)</div><div class="ttdoc">Get points-to targets of a pointer. V In this context. </div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00085">CFLAlias.h:85</a></div></div>
1061
+ <p class="definition">Definition at line <a class="el" href="CFLAlias_8cpp_source.html#l00041">41</a> of file <a class="el" href="CFLAlias_8cpp_source.html">CFLAlias.cpp</a>.</p>
1062
+ <div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">for</span>(CallSiteToFunPtrMap::const_iterator iter = callsites.begin(), eiter = callsites.end(); iter!=eiter; ++iter)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = iter-&gt;first;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">isVirtualCallSite</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>())))</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *vtbl = <a class="code" href="namespaceSVF_1_1cppUtil.html#a3b00cc9770022f124958513bf1e52a05">getVCallVtblPtr</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()));</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; assert(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#aceb17dfbe137658625e16291127267d1">hasValueNode</a>(vtbl));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vtblId = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(vtbl);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac04b64a5884710508b304f93da88c7ba">resolveCPPIndCalls</a>(cs, <a class="code" href="classSVF_1_1CFLAlias.html#acbbacca91cb85f67523aa8f84f6fe629">getCFLPts</a>(vtblId), newEdges);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a8d128246f86f28fdf4981d91169ab440">resolveIndCalls</a>(iter-&gt;first,<a class="code" href="classSVF_1_1CFLAlias.html#acbbacca91cb85f67523aa8f84f6fe629">getCFLPts</a>(iter-&gt;second),newEdges);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a8d128246f86f28fdf4981d91169ab440"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a8d128246f86f28fdf4981d91169ab440">SVF::PointerAnalysis::resolveIndCalls</a></div><div class="ttdeci">virtual void resolveIndCalls(const CallICFGNode *cs, const PointsTo &amp;target, CallEdgeMap &amp;newEdges)</div><div class="ttdoc">Resolve indirect call edges. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00399">PointerAnalysis.cpp:399</a></div></div>
1063
+ <div class="ttc" id="classSVF_1_1CFLAlias_html_acbbacca91cb85f67523aa8f84f6fe629"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#acbbacca91cb85f67523aa8f84f6fe629">SVF::CFLAlias::getCFLPts</a></div><div class="ttdeci">virtual const PointsTo &amp; getCFLPts(NodeID ptr)</div><div class="ttdoc">Get points-to targets of a pointer. V In this context. </div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00078">CFLAlias.h:78</a></div></div>
1113
1064
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_aca6465c72effcaddeb34f55da4555754"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">SVF::cppUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00260">CPPUtil.cpp:260</a></div></div>
1114
1065
  <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>
1115
1066
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ac04b64a5884710508b304f93da88c7ba"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac04b64a5884710508b304f93da88c7ba">SVF::PointerAnalysis::resolveCPPIndCalls</a></div><div class="ttdeci">virtual void resolveCPPIndCalls(const CallICFGNode *cs, const PointsTo &amp;target, CallEdgeMap &amp;newEdges)</div><div class="ttdoc">Resolve cpp indirect call edges. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00515">PointerAnalysis.cpp:515</a></div></div>
@@ -1124,8 +1075,8 @@ Additional Inherited Members</h2></td></tr>
1124
1075
  </div><!-- fragment -->
1125
1076
  </div>
1126
1077
  </div>
1127
- <a id="a9637bcb592d250b5556b242d2ffc88fa"></a>
1128
- <h2 class="memtitle"><span class="permalink"><a href="#a9637bcb592d250b5556b242d2ffc88fa">&#9670;&nbsp;</a></span>updateCallGraph()</h2>
1078
+ <a id="a5b7d65e7e74d596d61a1aad75e53cf27"></a>
1079
+ <h2 class="memtitle"><span class="permalink"><a href="#a5b7d65e7e74d596d61a1aad75e53cf27">&#9670;&nbsp;</a></span>solve()</h2>
1129
1080
 
1130
1081
  <div class="memitem">
1131
1082
  <div class="memproto">
@@ -1134,10 +1085,9 @@ Additional Inherited Members</h2></td></tr>
1134
1085
  <td class="mlabels-left">
1135
1086
  <table class="memname">
1136
1087
  <tr>
1137
- <td class="memname">bool CFLAlias::updateCallGraph </td>
1088
+ <td class="memname">void CFLAlias::solve </td>
1138
1089
  <td>(</td>
1139
- <td class="paramtype">const <a class="el" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a> &amp;&#160;</td>
1140
- <td class="paramname"><em>callsites</em></td><td>)</td>
1090
+ <td class="paramname"></td><td>)</td>
1141
1091
  <td></td>
1142
1092
  </tr>
1143
1093
  </table>
@@ -1148,26 +1098,26 @@ Additional Inherited Members</h2></td></tr>
1148
1098
  </table>
1149
1099
  </div><div class="memdoc">
1150
1100
 
1151
- <p>Update call graph for the input indirect callsites. </p>
1152
- <p>Update call graph for the input indirect callsites </p>
1101
+ <p>Solving CFL Reachability. </p>
1153
1102
 
1154
- <p>Reimplemented from <a class="el" href="classSVF_1_1BVDataPTAImpl.html#aa534e475fa34fa322c567bc376a3da70">SVF::BVDataPTAImpl</a>.</p>
1103
+ <p>Reimplemented from <a class="el" href="classSVF_1_1CFLBase.html#a2d1f2e2c7f8cbe07e0dda759a7424e6e">SVF::CFLBase</a>.</p>
1155
1104
 
1156
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8cpp_source.html#l00194">194</a> of file <a class="el" href="CFLAlias_8cpp_source.html">CFLAlias.cpp</a>.</p>
1157
- <div class="fragment"><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;{</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="comment">// double cgUpdateStart = stat-&gt;getClk();</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a> newEdges;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#a25b38896aef06dad19532f7678291b37">onTheFlyCallGraphSolve</a>(callsites,newEdges);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">for</span>(CallEdgeMap::iterator it = newEdges.begin(), eit = newEdges.end(); it!=eit; ++it )</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; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(it-&gt;first-&gt;getCallSite());</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">for</span>(FunctionSet::iterator cit = it-&gt;second.begin(), ecit = it-&gt;second.end(); cit!=ecit; ++cit)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; std::cout &lt;&lt; cs.<a class="code" href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">arg_size</a>();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#abfab36c0d5edbdfb94e617bed61ba875">connectCaller2CalleeParams</a>(cs,*cit);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="comment">// double cgUpdateEnd = stat-&gt;getClk();</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="comment">//timeOfUpdateCallGraph += (cgUpdateEnd - cgUpdateStart) / TIMEINTERVAL;</span></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="keywordflow">return</span> (!<a class="code" href="classSVF_1_1CFLAlias.html#aa61c3683c9b759b6eca65b1f88e00b35">solver</a>-&gt;<a class="code" href="classSVF_1_1CFLSolver.html#ac1fe4563081c29f8a715bd67d454c8bb">isWorklistEmpty</a>());</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;}</div><div class="ttc" id="classSVF_1_1CFLAlias_html_aa61c3683c9b759b6eca65b1f88e00b35"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#aa61c3683c9b759b6eca65b1f88e00b35">SVF::CFLAlias::solver</a></div><div class="ttdeci">CFLSolver * solver</div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00177">CFLAlias.h:177</a></div></div>
1158
- <div class="ttc" id="classSVF_1_1CFLAlias_html_a25b38896aef06dad19532f7678291b37"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a25b38896aef06dad19532f7678291b37">SVF::CFLAlias::onTheFlyCallGraphSolve</a></div><div class="ttdeci">virtual void onTheFlyCallGraphSolve(const CallSiteToFunPtrMap &amp;callsites, CallEdgeMap &amp;newEdges)</div><div class="ttdoc">On the fly call graph construction. </div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8cpp_source.html#l00061">CFLAlias.cpp:61</a></div></div>
1159
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a35bd5f0fb2c146199e9f1aa6a19b4062"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">SVF::PointerAnalysis::CallEdgeMap</a></div><div class="ttdeci">OrderedMap&lt; const CallICFGNode *, FunctionSet &gt; CallEdgeMap</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00106">PointerAnalysis.h:106</a></div></div>
1160
- <div class="ttc" id="classSVF_1_1CFLAlias_html_abfab36c0d5edbdfb94e617bed61ba875"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#abfab36c0d5edbdfb94e617bed61ba875">SVF::CFLAlias::connectCaller2CalleeParams</a></div><div class="ttdeci">void connectCaller2CalleeParams(CallSite cs, const SVFFunction *F)</div><div class="ttdoc">Connect formal and actual parameters for indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8cpp_source.html#l00083">CFLAlias.cpp:83</a></div></div>
1161
- <div class="ttc" id="classSVF_1_1CallSite_html_a145676880fce313b4634d14118476c27"><div class="ttname"><a href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">SVF::CallSite::arg_size</a></div><div class="ttdeci">unsigned arg_size() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00407">BasicTypes.h:407</a></div></div>
1162
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a202de7ad2bea0311e2f75894c030e7a9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVF::SVFUtil::getLLVMCallSite</a></div><div class="ttdeci">CallSite getLLVMCallSite(const Instruction *inst)</div><div class="ttdoc">Return LLVM callsite given a instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00217">SVFUtil.h:217</a></div></div>
1163
- <div class="ttc" id="classSVF_1_1CFLSolver_html_ac1fe4563081c29f8a715bd67d454c8bb"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#ac1fe4563081c29f8a715bd67d454c8bb">SVF::CFLSolver::isWorklistEmpty</a></div><div class="ttdeci">bool isWorklistEmpty()</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00078">CFLSolver.h:78</a></div></div>
1164
- <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00387">BasicTypes.h:387</a></div></div>
1105
+ <p class="definition">Definition at line <a class="el" href="CFLAlias_8cpp_source.html#l00220">220</a> of file <a class="el" href="CFLAlias_8cpp_source.html">CFLAlias.cpp</a>.</p>
1106
+ <div class="fragment"><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;{</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="comment">// Start solving</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>(<span class="keyword">true</span>);</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; <a class="code" href="classSVF_1_1CFLBase.html#a34c3a3eec2d7d34ef78b5031d8844b17">solver</a>-&gt;<a class="code" href="classSVF_1_1CFLSolver.html#a2ee3436c26ebdb2aaf790c25b1d8b5a6">solve</a>();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a87b63f1f8f4f65cdf6647f9f056ffc53">Options::CFLGraph</a>.empty())</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="classSVF_1_1CFLAlias.html#a9637bcb592d250b5556b242d2ffc88fa">updateCallGraph</a>(<a class="code" href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">getIndirectCallsites</a>()))</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="classSVF_1_1CFLBase.html#a34c3a3eec2d7d34ef78b5031d8844b17">solver</a>-&gt;<a class="code" href="classSVF_1_1CFLSolver.html#a2ee3436c26ebdb2aaf790c25b1d8b5a6">solve</a>();</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; } <span class="comment">// Only cflgraph built from bc could reanlyze by update call graph</span></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="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="classSVF_1_1CFLBase.html#a88e40af43705550a78837b8589bbf3f8">timeOfSolving</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;}</div><div class="ttc" id="classSVF_1_1CFLBase_html_a9e6cbab31612da4a1f8f660d1fabc4c0"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a9e6cbab31612da4a1f8f660d1fabc4c0">SVF::CFLBase::svfir</a></div><div class="ttdeci">SVFIR * svfir</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00101">CFLBase.h:101</a></div></div>
1107
+ <div class="ttc" id="classSVF_1_1CFLAlias_html_a9637bcb592d250b5556b242d2ffc88fa"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a9637bcb592d250b5556b242d2ffc88fa">SVF::CFLAlias::updateCallGraph</a></div><div class="ttdeci">virtual bool updateCallGraph(const CallSiteToFunPtrMap &amp;callsites)</div><div class="ttdoc">Update call graph for the input indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8cpp_source.html#l00174">CFLAlias.cpp:174</a></div></div>
1108
+ <div class="ttc" id="classSVF_1_1Options_html_a87b63f1f8f4f65cdf6647f9f056ffc53"><div class="ttname"><a href="classSVF_1_1Options.html#a87b63f1f8f4f65cdf6647f9f056ffc53">SVF::Options::CFLGraph</a></div><div class="ttdeci">static const llvm::cl::opt&lt; std::string &gt; CFLGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00253">Options.h:253</a></div></div>
1109
+ <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00047">SVFStat.cpp:47</a></div></div>
1110
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00150">PointerAnalysis.h:150</a></div></div>
1111
+ <div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00182">SVFBasicTypes.h:182</a></div></div>
1112
+ <div class="ttc" id="classSVF_1_1CFLBase_html_a34c3a3eec2d7d34ef78b5031d8844b17"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a34c3a3eec2d7d34ef78b5031d8844b17">SVF::CFLBase::solver</a></div><div class="ttdeci">CFLSolver * solver</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00105">CFLBase.h:105</a></div></div>
1113
+ <div class="ttc" id="classSVF_1_1CFLBase_html_a88e40af43705550a78837b8589bbf3f8"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a88e40af43705550a78837b8589bbf3f8">SVF::CFLBase::timeOfSolving</a></div><div class="ttdeci">static double timeOfSolving</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00097">CFLBase.h:97</a></div></div>
1114
+ <div class="ttc" id="classSVF_1_1CFLSolver_html_a2ee3436c26ebdb2aaf790c25b1d8b5a6"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a2ee3436c26ebdb2aaf790c25b1d8b5a6">SVF::CFLSolver::solve</a></div><div class="ttdeci">void solve()</div><div class="ttdoc">Start solving. </div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8cpp_source.html#l00034">CFLSolver.cpp:34</a></div></div>
1115
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a2d2131128ceb3362b5dc89317cfd88a0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">SVF::SVFIR::getIndirectCallsites</a></div><div class="ttdeci">const CallSiteToFunPtrMap &amp; getIndirectCallsites() const</div><div class="ttdoc">Add/get indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00299">SVFIR.h:299</a></div></div>
1165
1116
  </div><!-- fragment -->
1166
1117
  </div>
1167
1118
  </div>
1168
- <h2 class="groupheader">Member Data Documentation</h2>
1169
- <a id="ab30e7513dd0d743c59b38448a45a8ff8"></a>
1170
- <h2 class="memtitle"><span class="permalink"><a href="#ab30e7513dd0d743c59b38448a45a8ff8">&#9670;&nbsp;</a></span>AveragePointsToSetSize</h2>
1119
+ <a id="a9637bcb592d250b5556b242d2ffc88fa"></a>
1120
+ <h2 class="memtitle"><span class="permalink"><a href="#a9637bcb592d250b5556b242d2ffc88fa">&#9670;&nbsp;</a></span>updateCallGraph()</h2>
1171
1121
 
1172
1122
  <div class="memitem">
1173
1123
  <div class="memproto">
@@ -1176,20 +1126,37 @@ Additional Inherited Members</h2></td></tr>
1176
1126
  <td class="mlabels-left">
1177
1127
  <table class="memname">
1178
1128
  <tr>
1179
- <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> CFLAlias::AveragePointsToSetSize = 0</td>
1129
+ <td class="memname">bool CFLAlias::updateCallGraph </td>
1130
+ <td>(</td>
1131
+ <td class="paramtype">const <a class="el" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a> &amp;&#160;</td>
1132
+ <td class="paramname"><em>callsites</em></td><td>)</td>
1133
+ <td></td>
1180
1134
  </tr>
1181
1135
  </table>
1182
1136
  </td>
1183
1137
  <td class="mlabels-right">
1184
- <span class="mlabels"><span class="mlabel">static</span></span> </td>
1138
+ <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
1185
1139
  </tr>
1186
1140
  </table>
1187
1141
  </div><div class="memdoc">
1188
1142
 
1189
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00165">165</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1143
+ <p>Update call graph for the input indirect callsites. </p>
1144
+ <p>Update call graph for the input indirect callsites </p>
1145
+
1146
+ <p>Reimplemented from <a class="el" href="classSVF_1_1BVDataPTAImpl.html#aa534e475fa34fa322c567bc376a3da70">SVF::BVDataPTAImpl</a>.</p>
1190
1147
 
1148
+ <p class="definition">Definition at line <a class="el" href="CFLAlias_8cpp_source.html#l00174">174</a> of file <a class="el" href="CFLAlias_8cpp_source.html">CFLAlias.cpp</a>.</p>
1149
+ <div class="fragment"><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;{</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a> newEdges;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#a25b38896aef06dad19532f7678291b37">onTheFlyCallGraphSolve</a>(callsites,newEdges);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">for</span>(CallEdgeMap::iterator it = newEdges.begin(), eit = newEdges.end(); it!=eit; ++it )</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(it-&gt;first-&gt;getCallSite());</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">for</span>(FunctionSet::iterator cit = it-&gt;second.begin(), ecit = it-&gt;second.end(); cit!=ecit; ++cit)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html#abfab36c0d5edbdfb94e617bed61ba875">connectCaller2CalleeParams</a>(cs,*cit);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> (!<a class="code" href="classSVF_1_1CFLBase.html#a34c3a3eec2d7d34ef78b5031d8844b17">solver</a>-&gt;<a class="code" href="classSVF_1_1CFLSolver.html#ac1fe4563081c29f8a715bd67d454c8bb">isWorklistEmpty</a>());</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</div><div class="ttc" id="classSVF_1_1CFLAlias_html_a25b38896aef06dad19532f7678291b37"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#a25b38896aef06dad19532f7678291b37">SVF::CFLAlias::onTheFlyCallGraphSolve</a></div><div class="ttdeci">virtual void onTheFlyCallGraphSolve(const CallSiteToFunPtrMap &amp;callsites, CallEdgeMap &amp;newEdges)</div><div class="ttdoc">On the fly call graph construction. </div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8cpp_source.html#l00041">CFLAlias.cpp:41</a></div></div>
1150
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a35bd5f0fb2c146199e9f1aa6a19b4062"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">SVF::PointerAnalysis::CallEdgeMap</a></div><div class="ttdeci">OrderedMap&lt; const CallICFGNode *, FunctionSet &gt; CallEdgeMap</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00106">PointerAnalysis.h:106</a></div></div>
1151
+ <div class="ttc" id="classSVF_1_1CFLAlias_html_abfab36c0d5edbdfb94e617bed61ba875"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#abfab36c0d5edbdfb94e617bed61ba875">SVF::CFLAlias::connectCaller2CalleeParams</a></div><div class="ttdeci">void connectCaller2CalleeParams(CallSite cs, const SVFFunction *F)</div><div class="ttdoc">Connect formal and actual parameters for indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8cpp_source.html#l00063">CFLAlias.cpp:63</a></div></div>
1152
+ <div class="ttc" id="classSVF_1_1CFLBase_html_a34c3a3eec2d7d34ef78b5031d8844b17"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a34c3a3eec2d7d34ef78b5031d8844b17">SVF::CFLBase::solver</a></div><div class="ttdeci">CFLSolver * solver</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00105">CFLBase.h:105</a></div></div>
1153
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a202de7ad2bea0311e2f75894c030e7a9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVF::SVFUtil::getLLVMCallSite</a></div><div class="ttdeci">CallSite getLLVMCallSite(const Instruction *inst)</div><div class="ttdoc">Return LLVM callsite given a instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00217">SVFUtil.h:217</a></div></div>
1154
+ <div class="ttc" id="classSVF_1_1CFLSolver_html_ac1fe4563081c29f8a715bd67d454c8bb"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#ac1fe4563081c29f8a715bd67d454c8bb">SVF::CFLSolver::isWorklistEmpty</a></div><div class="ttdeci">bool isWorklistEmpty()</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00078">CFLSolver.h:78</a></div></div>
1155
+ <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00387">BasicTypes.h:387</a></div></div>
1156
+ </div><!-- fragment -->
1191
1157
  </div>
1192
1158
  </div>
1159
+ <h2 class="groupheader">Member Data Documentation</h2>
1193
1160
  <a id="ae879c990852862e5ed4e4e7da76dda05"></a>
1194
1161
  <h2 class="memtitle"><span class="permalink"><a href="#ae879c990852862e5ed4e4e7da76dda05">&#9670;&nbsp;</a></span>callsite2DummyValPN</h2>
1195
1162
 
@@ -1212,475 +1179,7 @@ Additional Inherited Members</h2></td></tr>
1212
1179
 
1213
1180
  <p>Map an instruction to a dummy obj which created at an indirect callsite, which invokes a heap allocator. </p>
1214
1181
 
1215
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00173">173</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1216
-
1217
- </div>
1218
- </div>
1219
- <a id="a31ffa49b8e0995b6ee9b8a1f5ecab7be"></a>
1220
- <h2 class="memtitle"><span class="permalink"><a href="#a31ffa49b8e0995b6ee9b8a1f5ecab7be">&#9670;&nbsp;</a></span>grammar</h2>
1221
-
1222
- <div class="memitem">
1223
- <div class="memproto">
1224
- <table class="mlabels">
1225
- <tr>
1226
- <td class="mlabels-left">
1227
- <table class="memname">
1228
- <tr>
1229
- <td class="memname"><a class="el" href="classSVF_1_1CFLGrammar.html">CFLGrammar</a>* SVF::CFLAlias::grammar</td>
1230
- </tr>
1231
- </table>
1232
- </td>
1233
- <td class="mlabels-right">
1234
- <span class="mlabels"><span class="mlabel">private</span></span> </td>
1235
- </tr>
1236
- </table>
1237
- </div><div class="memdoc">
1238
-
1239
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00176">176</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1240
-
1241
- </div>
1242
- </div>
1243
- <a id="abd4d8eb59209a1f1cedebcf41117914b"></a>
1244
- <h2 class="memtitle"><span class="permalink"><a href="#abd4d8eb59209a1f1cedebcf41117914b">&#9670;&nbsp;</a></span>graph</h2>
1245
-
1246
- <div class="memitem">
1247
- <div class="memproto">
1248
- <table class="mlabels">
1249
- <tr>
1250
- <td class="mlabels-left">
1251
- <table class="memname">
1252
- <tr>
1253
- <td class="memname"><a class="el" href="classSVF_1_1CFLGraph.html">CFLGraph</a>* SVF::CFLAlias::graph</td>
1254
- </tr>
1255
- </table>
1256
- </td>
1257
- <td class="mlabels-right">
1258
- <span class="mlabels"><span class="mlabel">private</span></span> </td>
1259
- </tr>
1260
- </table>
1261
- </div><div class="memdoc">
1262
-
1263
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00175">175</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1264
-
1265
- </div>
1266
- </div>
1267
- <a id="a593d1b7b7380629ec8194d3a7b970ab5"></a>
1268
- <h2 class="memtitle"><span class="permalink"><a href="#a593d1b7b7380629ec8194d3a7b970ab5">&#9670;&nbsp;</a></span>MaxPointsToSetSize</h2>
1269
-
1270
- <div class="memitem">
1271
- <div class="memproto">
1272
- <table class="mlabels">
1273
- <tr>
1274
- <td class="mlabels-left">
1275
- <table class="memname">
1276
- <tr>
1277
- <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> CFLAlias::MaxPointsToSetSize = 0</td>
1278
- </tr>
1279
- </table>
1280
- </td>
1281
- <td class="mlabels-right">
1282
- <span class="mlabels"><span class="mlabel">static</span></span> </td>
1283
- </tr>
1284
- </table>
1285
- </div><div class="memdoc">
1286
-
1287
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00166">166</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1288
-
1289
- </div>
1290
- </div>
1291
- <a id="a46b3d4d12aa4fbf38038ce68e4e77096"></a>
1292
- <h2 class="memtitle"><span class="permalink"><a href="#a46b3d4d12aa4fbf38038ce68e4e77096">&#9670;&nbsp;</a></span>numOfFieldExpand</h2>
1293
-
1294
- <div class="memitem">
1295
- <div class="memproto">
1296
- <table class="mlabels">
1297
- <tr>
1298
- <td class="mlabels-left">
1299
- <table class="memname">
1300
- <tr>
1301
- <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> CFLAlias::numOfFieldExpand = 0</td>
1302
- </tr>
1303
- </table>
1304
- </td>
1305
- <td class="mlabels-right">
1306
- <span class="mlabels"><span class="mlabel">static</span></span> </td>
1307
- </tr>
1308
- </table>
1309
- </div><div class="memdoc">
1310
-
1311
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00159">159</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1312
-
1313
- </div>
1314
- </div>
1315
- <a id="acd6070559826ef7983a828852ac93331"></a>
1316
- <h2 class="memtitle"><span class="permalink"><a href="#acd6070559826ef7983a828852ac93331">&#9670;&nbsp;</a></span>numOfProcessedAddr</h2>
1317
-
1318
- <div class="memitem">
1319
- <div class="memproto">
1320
- <table class="mlabels">
1321
- <tr>
1322
- <td class="mlabels-left">
1323
- <table class="memname">
1324
- <tr>
1325
- <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> CFLAlias::numOfProcessedAddr = 0</td>
1326
- </tr>
1327
- </table>
1328
- </td>
1329
- <td class="mlabels-right">
1330
- <span class="mlabels"><span class="mlabel">static</span></span> </td>
1331
- </tr>
1332
- </table>
1333
- </div><div class="memdoc">
1334
-
1335
- <p>Statistics. </p>
1336
-
1337
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00153">153</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1338
-
1339
- </div>
1340
- </div>
1341
- <a id="a320eed3b2074070c5a58a97d24e379db"></a>
1342
- <h2 class="memtitle"><span class="permalink"><a href="#a320eed3b2074070c5a58a97d24e379db">&#9670;&nbsp;</a></span>numOfProcessedCopy</h2>
1343
-
1344
- <div class="memitem">
1345
- <div class="memproto">
1346
- <table class="mlabels">
1347
- <tr>
1348
- <td class="mlabels-left">
1349
- <table class="memname">
1350
- <tr>
1351
- <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> CFLAlias::numOfProcessedCopy = 0</td>
1352
- </tr>
1353
- </table>
1354
- </td>
1355
- <td class="mlabels-right">
1356
- <span class="mlabels"><span class="mlabel">static</span></span> </td>
1357
- </tr>
1358
- </table>
1359
- </div><div class="memdoc">
1360
-
1361
- <p>Number of processed Addr edge. </p>
1362
-
1363
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00154">154</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1364
-
1365
- </div>
1366
- </div>
1367
- <a id="aa6a5ed4632eeef28f35910514b9e8a66"></a>
1368
- <h2 class="memtitle"><span class="permalink"><a href="#aa6a5ed4632eeef28f35910514b9e8a66">&#9670;&nbsp;</a></span>numOfProcessedGep</h2>
1369
-
1370
- <div class="memitem">
1371
- <div class="memproto">
1372
- <table class="mlabels">
1373
- <tr>
1374
- <td class="mlabels-left">
1375
- <table class="memname">
1376
- <tr>
1377
- <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> CFLAlias::numOfProcessedGep = 0</td>
1378
- </tr>
1379
- </table>
1380
- </td>
1381
- <td class="mlabels-right">
1382
- <span class="mlabels"><span class="mlabel">static</span></span> </td>
1383
- </tr>
1384
- </table>
1385
- </div><div class="memdoc">
1386
-
1387
- <p>Number of processed Copy edge. </p>
1388
-
1389
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00155">155</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1390
-
1391
- </div>
1392
- </div>
1393
- <a id="a35356e309560c939ca47bccf47d2ba50"></a>
1394
- <h2 class="memtitle"><span class="permalink"><a href="#a35356e309560c939ca47bccf47d2ba50">&#9670;&nbsp;</a></span>numOfProcessedLoad</h2>
1395
-
1396
- <div class="memitem">
1397
- <div class="memproto">
1398
- <table class="mlabels">
1399
- <tr>
1400
- <td class="mlabels-left">
1401
- <table class="memname">
1402
- <tr>
1403
- <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> CFLAlias::numOfProcessedLoad = 0</td>
1404
- </tr>
1405
- </table>
1406
- </td>
1407
- <td class="mlabels-right">
1408
- <span class="mlabels"><span class="mlabel">static</span></span> </td>
1409
- </tr>
1410
- </table>
1411
- </div><div class="memdoc">
1412
-
1413
- <p>Number of processed Gep edge. </p>
1414
-
1415
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00156">156</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1416
-
1417
- </div>
1418
- </div>
1419
- <a id="afc529c27f0e572948de13c319435b415"></a>
1420
- <h2 class="memtitle"><span class="permalink"><a href="#afc529c27f0e572948de13c319435b415">&#9670;&nbsp;</a></span>numOfProcessedStore</h2>
1421
-
1422
- <div class="memitem">
1423
- <div class="memproto">
1424
- <table class="mlabels">
1425
- <tr>
1426
- <td class="mlabels-left">
1427
- <table class="memname">
1428
- <tr>
1429
- <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> CFLAlias::numOfProcessedStore = 0</td>
1430
- </tr>
1431
- </table>
1432
- </td>
1433
- <td class="mlabels-right">
1434
- <span class="mlabels"><span class="mlabel">static</span></span> </td>
1435
- </tr>
1436
- </table>
1437
- </div><div class="memdoc">
1438
-
1439
- <p>Number of processed Load edge. </p>
1440
-
1441
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00157">157</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1442
-
1443
- </div>
1444
- </div>
1445
- <a id="abde85bf1f0f4ff2cf01e05b2f645a876"></a>
1446
- <h2 class="memtitle"><span class="permalink"><a href="#abde85bf1f0f4ff2cf01e05b2f645a876">&#9670;&nbsp;</a></span>numOfSCCDetection</h2>
1447
-
1448
- <div class="memitem">
1449
- <div class="memproto">
1450
- <table class="mlabels">
1451
- <tr>
1452
- <td class="mlabels-left">
1453
- <table class="memname">
1454
- <tr>
1455
- <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> CFLAlias::numOfSCCDetection = 0</td>
1456
- </tr>
1457
- </table>
1458
- </td>
1459
- <td class="mlabels-right">
1460
- <span class="mlabels"><span class="mlabel">static</span></span> </td>
1461
- </tr>
1462
- </table>
1463
- </div><div class="memdoc">
1464
-
1465
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00161">161</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1466
-
1467
- </div>
1468
- </div>
1469
- <a id="a7f63c7509ac67a697b248dd28e9c2409"></a>
1470
- <h2 class="memtitle"><span class="permalink"><a href="#a7f63c7509ac67a697b248dd28e9c2409">&#9670;&nbsp;</a></span>numOfSfrs</h2>
1471
-
1472
- <div class="memitem">
1473
- <div class="memproto">
1474
- <table class="mlabels">
1475
- <tr>
1476
- <td class="mlabels-left">
1477
- <table class="memname">
1478
- <tr>
1479
- <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> CFLAlias::numOfSfrs = 0</td>
1480
- </tr>
1481
- </table>
1482
- </td>
1483
- <td class="mlabels-right">
1484
- <span class="mlabels"><span class="mlabel">static</span></span> </td>
1485
- </tr>
1486
- </table>
1487
- </div><div class="memdoc">
1488
-
1489
- <p>Number of processed Store edge. </p>
1490
-
1491
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00158">158</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1492
-
1493
- </div>
1494
- </div>
1495
- <a id="aa61c3683c9b759b6eca65b1f88e00b35"></a>
1496
- <h2 class="memtitle"><span class="permalink"><a href="#aa61c3683c9b759b6eca65b1f88e00b35">&#9670;&nbsp;</a></span>solver</h2>
1497
-
1498
- <div class="memitem">
1499
- <div class="memproto">
1500
- <table class="mlabels">
1501
- <tr>
1502
- <td class="mlabels-left">
1503
- <table class="memname">
1504
- <tr>
1505
- <td class="memname"><a class="el" href="classSVF_1_1CFLSolver.html">CFLSolver</a>* SVF::CFLAlias::solver</td>
1506
- </tr>
1507
- </table>
1508
- </td>
1509
- <td class="mlabels-right">
1510
- <span class="mlabels"><span class="mlabel">private</span></span> </td>
1511
- </tr>
1512
- </table>
1513
- </div><div class="memdoc">
1514
-
1515
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00177">177</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1516
-
1517
- </div>
1518
- </div>
1519
- <a id="a0bf4ce7e4fb3d1d95608c06420cc65dc"></a>
1520
- <h2 class="memtitle"><span class="permalink"><a href="#a0bf4ce7e4fb3d1d95608c06420cc65dc">&#9670;&nbsp;</a></span>svfir</h2>
1521
-
1522
- <div class="memitem">
1523
- <div class="memproto">
1524
- <table class="mlabels">
1525
- <tr>
1526
- <td class="mlabels-left">
1527
- <table class="memname">
1528
- <tr>
1529
- <td class="memname"><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a>* SVF::CFLAlias::svfir</td>
1530
- </tr>
1531
- </table>
1532
- </td>
1533
- <td class="mlabels-right">
1534
- <span class="mlabels"><span class="mlabel">private</span></span> </td>
1535
- </tr>
1536
- </table>
1537
- </div><div class="memdoc">
1538
-
1539
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00174">174</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1540
-
1541
- </div>
1542
- </div>
1543
- <a id="a1615a97f72dfa8f979c429b3d4f3463b"></a>
1544
- <h2 class="memtitle"><span class="permalink"><a href="#a1615a97f72dfa8f979c429b3d4f3463b">&#9670;&nbsp;</a></span>timeOfCollapse</h2>
1545
-
1546
- <div class="memitem">
1547
- <div class="memproto">
1548
- <table class="mlabels">
1549
- <tr>
1550
- <td class="mlabels-left">
1551
- <table class="memname">
1552
- <tr>
1553
- <td class="memname">double CFLAlias::timeOfCollapse = 0</td>
1554
- </tr>
1555
- </table>
1556
- </td>
1557
- <td class="mlabels-right">
1558
- <span class="mlabels"><span class="mlabel">static</span></span> </td>
1559
- </tr>
1560
- </table>
1561
- </div><div class="memdoc">
1562
-
1563
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00164">164</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1564
-
1565
- </div>
1566
- </div>
1567
- <a id="a2339baef879400c3abceaa6cd710438f"></a>
1568
- <h2 class="memtitle"><span class="permalink"><a href="#a2339baef879400c3abceaa6cd710438f">&#9670;&nbsp;</a></span>timeOfProcessCopyGep</h2>
1569
-
1570
- <div class="memitem">
1571
- <div class="memproto">
1572
- <table class="mlabels">
1573
- <tr>
1574
- <td class="mlabels-left">
1575
- <table class="memname">
1576
- <tr>
1577
- <td class="memname">double CFLAlias::timeOfProcessCopyGep = 0</td>
1578
- </tr>
1579
- </table>
1580
- </td>
1581
- <td class="mlabels-right">
1582
- <span class="mlabels"><span class="mlabel">static</span></span> </td>
1583
- </tr>
1584
- </table>
1585
- </div><div class="memdoc">
1586
-
1587
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00167">167</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1588
-
1589
- </div>
1590
- </div>
1591
- <a id="ab8a98cf58afbc7fd00bd42b312073012"></a>
1592
- <h2 class="memtitle"><span class="permalink"><a href="#ab8a98cf58afbc7fd00bd42b312073012">&#9670;&nbsp;</a></span>timeOfProcessLoadStore</h2>
1593
-
1594
- <div class="memitem">
1595
- <div class="memproto">
1596
- <table class="mlabels">
1597
- <tr>
1598
- <td class="mlabels-left">
1599
- <table class="memname">
1600
- <tr>
1601
- <td class="memname">double CFLAlias::timeOfProcessLoadStore = 0</td>
1602
- </tr>
1603
- </table>
1604
- </td>
1605
- <td class="mlabels-right">
1606
- <span class="mlabels"><span class="mlabel">static</span></span> </td>
1607
- </tr>
1608
- </table>
1609
- </div><div class="memdoc">
1610
-
1611
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00168">168</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1612
-
1613
- </div>
1614
- </div>
1615
- <a id="ad72796a2cdd2fbfad0ea79c4bf4e0fc9"></a>
1616
- <h2 class="memtitle"><span class="permalink"><a href="#ad72796a2cdd2fbfad0ea79c4bf4e0fc9">&#9670;&nbsp;</a></span>timeOfSCCDetection</h2>
1617
-
1618
- <div class="memitem">
1619
- <div class="memproto">
1620
- <table class="mlabels">
1621
- <tr>
1622
- <td class="mlabels-left">
1623
- <table class="memname">
1624
- <tr>
1625
- <td class="memname">double CFLAlias::timeOfSCCDetection = 0</td>
1626
- </tr>
1627
- </table>
1628
- </td>
1629
- <td class="mlabels-right">
1630
- <span class="mlabels"><span class="mlabel">static</span></span> </td>
1631
- </tr>
1632
- </table>
1633
- </div><div class="memdoc">
1634
-
1635
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00162">162</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1636
-
1637
- </div>
1638
- </div>
1639
- <a id="ad2528dbf000ff2c85722fd8c95df5d86"></a>
1640
- <h2 class="memtitle"><span class="permalink"><a href="#ad2528dbf000ff2c85722fd8c95df5d86">&#9670;&nbsp;</a></span>timeOfSCCMerges</h2>
1641
-
1642
- <div class="memitem">
1643
- <div class="memproto">
1644
- <table class="mlabels">
1645
- <tr>
1646
- <td class="mlabels-left">
1647
- <table class="memname">
1648
- <tr>
1649
- <td class="memname">double CFLAlias::timeOfSCCMerges = 0</td>
1650
- </tr>
1651
- </table>
1652
- </td>
1653
- <td class="mlabels-right">
1654
- <span class="mlabels"><span class="mlabel">static</span></span> </td>
1655
- </tr>
1656
- </table>
1657
- </div><div class="memdoc">
1658
-
1659
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00163">163</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1660
-
1661
- </div>
1662
- </div>
1663
- <a id="ac94c14718ca0dbae6cddd8a0e093e111"></a>
1664
- <h2 class="memtitle"><span class="permalink"><a href="#ac94c14718ca0dbae6cddd8a0e093e111">&#9670;&nbsp;</a></span>timeOfUpdateCallGraph</h2>
1665
-
1666
- <div class="memitem">
1667
- <div class="memproto">
1668
- <table class="mlabels">
1669
- <tr>
1670
- <td class="mlabels-left">
1671
- <table class="memname">
1672
- <tr>
1673
- <td class="memname">double CFLAlias::timeOfUpdateCallGraph = 0</td>
1674
- </tr>
1675
- </table>
1676
- </td>
1677
- <td class="mlabels-right">
1678
- <span class="mlabels"><span class="mlabel">static</span></span> </td>
1679
- </tr>
1680
- </table>
1681
- </div><div class="memdoc">
1682
-
1683
- <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00169">169</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1182
+ <p class="definition">Definition at line <a class="el" href="CFLAlias_8h_source.html#l00138">138</a> of file <a class="el" href="CFLAlias_8h_source.html">CFLAlias.h</a>.</p>
1684
1183
 
1685
1184
  </div>
1686
1185
  </div>