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
@@ -69,11 +69,9 @@ $(function() {
69
69
  </div><!--header-->
70
70
  <div class="contents">
71
71
  <div class="textblock"><code>#include &quot;<a class="el" href="LLVMUtil_8h_source.html">SVF-FE/LLVMUtil.h</a>&quot;</code><br />
72
- <code>#include &quot;<a class="el" href="Options_8h_source.html">Util/Options.h</a>&quot;</code><br />
72
+ <code>#include &quot;<a class="el" href="SVFIRBuilder_8h_source.html">SVF-FE/SVFIRBuilder.h</a>&quot;</code><br />
73
73
  <code>#include &quot;<a class="el" href="CFLAlias_8h_source.html">CFL/CFLAlias.h</a>&quot;</code><br />
74
74
  <code>#include &quot;<a class="el" href="CFLVF_8h_source.html">CFL/CFLVF.h</a>&quot;</code><br />
75
- <code>#include &quot;<a class="el" href="SVFIRBuilder_8h_source.html">SVF-FE/SVFIRBuilder.h</a>&quot;</code><br />
76
- <code>#include &quot;<a class="el" href="CFGNormalizer_8h_source.html">CFL/CFGNormalizer.h</a>&quot;</code><br />
77
75
  </div>
78
76
  <p><a href="cfl_8cpp_source.html">Go to the source code of this file.</a></p>
79
77
  <table class="memberdecls">
@@ -154,17 +152,16 @@ Functions</h2></td></tr>
154
152
  </tr>
155
153
  </table>
156
154
  </div><div class="memdoc">
157
- <p>Build Program Assignment Graph (SVFIR) </p>
158
155
 
159
- <p class="definition">Definition at line <a class="el" href="cfl_8cpp_source.html#l00047">47</a> of file <a class="el" href="cfl_8cpp_source.html">cfl.cpp</a>.</p>
160
- <div class="fragment"><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="keywordtype">int</span> arg_num = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">char</span> **arg_value = <span class="keyword">new</span> <span class="keywordtype">char</span>*[argc];</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; std::vector&lt;std::string&gt; moduleNameVec;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">LLVMUtil::processArguments</a>(argc, argv, arg_num, arg_value, moduleNameVec);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; cl::ParseCommandLineOptions(arg_num, arg_value,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="stringliteral">&quot;CFL Reachability Analysis\n&quot;</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; <span class="keywordflow">if</span> (Options::WriteAnder == <span class="stringliteral">&quot;ir_annotator&quot;</span>)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; LLVMModuleSet::getLLVMModuleSet()-&gt;preProcessBCs(moduleNameVec);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> (Options::CFLGraph.empty())</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = LLVMModuleSet::getLLVMModuleSet()-&gt;buildSVFModule(moduleNameVec);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">buildSymbolTableInfo</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a> builder;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* svfir = builder.<a class="code" href="classSVF_1_1SVFIRBuilder.html#aa6d56f9580f76fd09d25ce6cf7541e98">build</a>(svfModule);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span> (Options::CFLSVFG)</div><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="classSVF_1_1CFLVF.html">CFLVF</a>* cflvf = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLVF.html">CFLVF</a>(svfir);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; cflvf-&gt;<a class="code" href="classSVF_1_1CFLVF.html#a52bf916b33278f48d26c3f02947bf720">analyze</a>();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">delete</span> cflvf;</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; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html">CFLAlias</a>* cflaa = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLAlias.html">CFLAlias</a>(svfir);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; cflaa-&gt;<a class="code" href="classSVF_1_1CFLAlias.html#afc6922e9f1965ed85ef87151e00f5311">analyze</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">delete</span> cflaa;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">else</span></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="classSVF_1_1SVFIR.html">SVFIR</a>* svfir = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html">CFLAlias</a>* cflaa = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLAlias.html">CFLAlias</a>(svfir);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; cflaa-&gt;<a class="code" href="classSVF_1_1CFLAlias.html#afc6922e9f1965ed85ef87151e00f5311">analyze</a>();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">delete</span> cflaa;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</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; SVFIR::releaseSVFIR();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">SVF::LLVMModuleSet::releaseLLVMModuleSet</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">return</span> 0;</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;}</div><div class="ttc" id="classSVF_1_1CFLAlias_html"><div class="ttname"><a href="classSVF_1_1CFLAlias.html">SVF::CFLAlias</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00048">CFLAlias.h:48</a></div></div>
156
+ <p class="definition">Definition at line <a class="el" href="cfl_8cpp_source.html#l00045">45</a> of file <a class="el" href="cfl_8cpp_source.html">cfl.cpp</a>.</p>
157
+ <div class="fragment"><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="keywordtype">int</span> arg_num = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">char</span> **arg_value = <span class="keyword">new</span> <span class="keywordtype">char</span>*[argc];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; std::vector&lt;std::string&gt; moduleNameVec;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">LLVMUtil::processArguments</a>(argc, argv, arg_num, arg_value, moduleNameVec);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; cl::ParseCommandLineOptions(arg_num, arg_value,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="stringliteral">&quot;CFL Reachability Analysis\n&quot;</span>);</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">if</span> (Options::WriteAnder == <span class="stringliteral">&quot;ir_annotator&quot;</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; LLVMModuleSet::getLLVMModuleSet()-&gt;preProcessBCs(moduleNameVec);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* svfir = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> (Options::CFLGraph.empty())</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = LLVMModuleSet::getLLVMModuleSet()-&gt;buildSVFModule(moduleNameVec);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">buildSymbolTableInfo</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a> builder;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; svfir = builder.<a class="code" href="classSVF_1_1SVFIRBuilder.html#aa6d56f9580f76fd09d25ce6cf7541e98">build</a>(svfModule);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; } <span class="comment">// if no dot form CFLGraph is specified, we use svfir from .bc.</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="classSVF_1_1CFLBase.html">CFLBase</a>* cfl;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">if</span> (Options::CFLSVFG)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; cfl = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLVF.html">CFLVF</a>(svfir);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; cfl = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLAlias.html">CFLAlias</a>(svfir); <span class="comment">// if no svfg is specified, we use CFLAlias as the default one.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; cfl-&gt;<a class="code" href="classSVF_1_1CFLBase.html#a2aac58e19676290042874c262f1edd4d">analyze</a>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">delete</span> cfl;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; SVFIR::releaseSVFIR();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">SVF::LLVMModuleSet::releaseLLVMModuleSet</a>();</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="keywordflow">return</span> 0;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;}</div><div class="ttc" id="classSVF_1_1CFLAlias_html"><div class="ttname"><a href="classSVF_1_1CFLAlias.html">SVF::CFLAlias</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00041">CFLAlias.h:41</a></div></div>
161
158
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aa6d56f9580f76fd09d25ce6cf7541e98"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aa6d56f9580f76fd09d25ce6cf7541e98">SVF::SVFIRBuilder::build</a></div><div class="ttdeci">virtual SVFIR * build(SVFModule *svfModule)</div><div class="ttdoc">Start building SVFIR here. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00050">SVFIRBuilder.cpp:50</a></div></div>
162
- <div class="ttc" id="classSVF_1_1CFLAlias_html_afc6922e9f1965ed85ef87151e00f5311"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#afc6922e9f1965ed85ef87151e00f5311">SVF::CFLAlias::analyze</a></div><div class="ttdeci">virtual void analyze()</div><div class="ttdoc">Start Analysis here (main part of pointer analysis). </div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8cpp_source.html#l00217">CFLAlias.cpp:217</a></div></div>
163
159
  <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
164
160
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html">SVF::SVFIRBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00045">SVFIRBuilder.h:45</a></div></div>
165
161
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a2f8e91c075d90be66412a079fe73e936"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">SVF::LLVMModuleSet::releaseLLVMModuleSet</a></div><div class="ttdeci">static void releaseLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00077">LLVMModule.h:77</a></div></div>
166
- <div class="ttc" id="classSVF_1_1CFLVF_html_a52bf916b33278f48d26c3f02947bf720"><div class="ttname"><a href="classSVF_1_1CFLVF.html#a52bf916b33278f48d26c3f02947bf720">SVF::CFLVF::analyze</a></div><div class="ttdeci">virtual void analyze()</div><div class="ttdoc">Start Analysis here (main part of pointer analysis). </div><div class="ttdef"><b>Definition:</b> <a href="CFLVF_8cpp_source.html#l00040">CFLVF.cpp:40</a></div></div>
167
- <div class="ttc" id="classSVF_1_1CFLVF_html"><div class="ttname"><a href="classSVF_1_1CFLVF.html">SVF::CFLVF</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLVF_8h_source.html#l00046">CFLVF.h:46</a></div></div>
162
+ <div class="ttc" id="classSVF_1_1CFLBase_html_a2aac58e19676290042874c262f1edd4d"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a2aac58e19676290042874c262f1edd4d">SVF::CFLBase::analyze</a></div><div class="ttdeci">virtual void analyze()</div><div class="ttdoc">Perform analyze (main part of CFLR Analysis) </div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8cpp_source.html#l00109">CFLBase.cpp:109</a></div></div>
163
+ <div class="ttc" id="classSVF_1_1CFLVF_html"><div class="ttname"><a href="classSVF_1_1CFLVF.html">SVF::CFLVF</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLVF_8h_source.html#l00041">CFLVF.h:41</a></div></div>
164
+ <div class="ttc" id="classSVF_1_1CFLBase_html"><div class="ttname"><a href="classSVF_1_1CFLBase.html">SVF::CFLBase</a></div><div class="ttdoc">CFL Client Base Class. </div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00049">CFLBase.h:49</a></div></div>
168
165
  <div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_accdd44093d6d145dc92edeaaff3f5732"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">SVF::LLVMUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &amp;arg_num, char **arg_value, std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00436">LLVMUtil.cpp:436</a></div></div>
169
166
  <div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
170
167
  <div class="ttc" id="classSVF_1_1SVFModule_html_aa03ab5272652290f30870c6e2d053d98"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVF::SVFModule::buildSymbolTableInfo</a></div><div class="ttdeci">void buildSymbolTableInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#l00031">SVFModule.cpp:31</a></div></div>
@@ -66,20 +66,18 @@ $(function() {
66
66
  <div class="title">cfl.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="cfl_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- cfl.cpp -- A driver of CFL Reachability Analysis-------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===-----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> // A driver of CFL Reachability Analysis</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> //</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> // Author: Yulei Sui,</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LLVMUtil_8h.html">SVF-FE/LLVMUtil.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CFLAlias_8h.html">CFL/CFLAlias.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CFLVF_8h.html">CFL/CFLVF.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFIRBuilder_8h.html">SVF-FE/SVFIRBuilder.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CFGNormalizer_8h.html">CFL/CFGNormalizer.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacellvm.html">llvm</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">static</span> cl::opt&lt;bool&gt;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<a class="code" href="cfl_8cpp.html#afffbd7760f0128b74c9dbfd517d0f99e">StandardCompileOpts</a>(<span class="stringliteral">&quot;std-compile-opts&quot;</span>,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; cl::desc(<span class="stringliteral">&quot;Include the standard compile time optimizations&quot;</span>));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">static</span> llvm::cl::opt&lt;std::string&gt; <a class="code" href="cfl_8cpp.html#a139199e1f33675df72b018c31e0be35c">InputFilename</a>(llvm::cl::Positional,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; llvm::cl::desc(<span class="stringliteral">&quot;&lt;input bitcode&gt;&quot;</span>), llvm::cl::init(<span class="stringliteral">&quot;-&quot;</span>));</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"><a class="line" href="cfl_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627"> 47</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="cfl_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> ** argv)</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="keywordtype">int</span> arg_num = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">char</span> **arg_value = <span class="keyword">new</span> <span class="keywordtype">char</span>*[argc];</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; std::vector&lt;std::string&gt; moduleNameVec;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">LLVMUtil::processArguments</a>(argc, argv, arg_num, arg_value, moduleNameVec);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; cl::ParseCommandLineOptions(arg_num, arg_value,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="stringliteral">&quot;CFL Reachability Analysis\n&quot;</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; <span class="keywordflow">if</span> (Options::WriteAnder == <span class="stringliteral">&quot;ir_annotator&quot;</span>)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; LLVMModuleSet::getLLVMModuleSet()-&gt;preProcessBCs(moduleNameVec);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> (Options::CFLGraph.empty())</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = LLVMModuleSet::getLLVMModuleSet()-&gt;buildSVFModule(moduleNameVec);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">buildSymbolTableInfo</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a> builder;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* svfir = builder.<a class="code" href="classSVF_1_1SVFIRBuilder.html#aa6d56f9580f76fd09d25ce6cf7541e98">build</a>(svfModule);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span> (Options::CFLSVFG)</div><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="classSVF_1_1CFLVF.html">CFLVF</a>* cflvf = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLVF.html">CFLVF</a>(svfir);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; cflvf-&gt;<a class="code" href="classSVF_1_1CFLVF.html#a52bf916b33278f48d26c3f02947bf720">analyze</a>();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">delete</span> cflvf;</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; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html">CFLAlias</a>* cflaa = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLAlias.html">CFLAlias</a>(svfir);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; cflaa-&gt;<a class="code" href="classSVF_1_1CFLAlias.html#afc6922e9f1965ed85ef87151e00f5311">analyze</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">delete</span> cflaa;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">else</span></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="classSVF_1_1SVFIR.html">SVFIR</a>* svfir = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classSVF_1_1CFLAlias.html">CFLAlias</a>* cflaa = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLAlias.html">CFLAlias</a>(svfir);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; cflaa-&gt;<a class="code" href="classSVF_1_1CFLAlias.html#afc6922e9f1965ed85ef87151e00f5311">analyze</a>();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">delete</span> cflaa;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</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; SVFIR::releaseSVFIR();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">SVF::LLVMModuleSet::releaseLLVMModuleSet</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">return</span> 0;</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;}</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="ttc" id="classSVF_1_1CFLAlias_html"><div class="ttname"><a href="classSVF_1_1CFLAlias.html">SVF::CFLAlias</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00048">CFLAlias.h:48</a></div></div>
69
+ <a href="cfl_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- cfl.cpp -- A driver of CFL Reachability Analysis-------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===-----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> // A driver of CFL Reachability Analysis</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> //</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> // Author: Yulei Sui,</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LLVMUtil_8h.html">SVF-FE/LLVMUtil.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFIRBuilder_8h.html">SVF-FE/SVFIRBuilder.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CFLAlias_8h.html">CFL/CFLAlias.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CFLVF_8h.html">CFL/CFLVF.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacellvm.html">llvm</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">static</span> cl::opt&lt;bool&gt;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<a class="code" href="cfl_8cpp.html#afffbd7760f0128b74c9dbfd517d0f99e">StandardCompileOpts</a>(<span class="stringliteral">&quot;std-compile-opts&quot;</span>,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; cl::desc(<span class="stringliteral">&quot;Include the standard compile time optimizations&quot;</span>));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">static</span> llvm::cl::opt&lt;std::string&gt; <a class="code" href="cfl_8cpp.html#a139199e1f33675df72b018c31e0be35c">InputFilename</a>(llvm::cl::Positional,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; llvm::cl::desc(<span class="stringliteral">&quot;&lt;input bitcode&gt;&quot;</span>), llvm::cl::init(<span class="stringliteral">&quot;-&quot;</span>));</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"><a class="line" href="cfl_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627"> 45</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="cfl_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> ** argv)</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="keywordtype">int</span> arg_num = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">char</span> **arg_value = <span class="keyword">new</span> <span class="keywordtype">char</span>*[argc];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; std::vector&lt;std::string&gt; moduleNameVec;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">LLVMUtil::processArguments</a>(argc, argv, arg_num, arg_value, moduleNameVec);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; cl::ParseCommandLineOptions(arg_num, arg_value,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="stringliteral">&quot;CFL Reachability Analysis\n&quot;</span>);</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">if</span> (Options::WriteAnder == <span class="stringliteral">&quot;ir_annotator&quot;</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; LLVMModuleSet::getLLVMModuleSet()-&gt;preProcessBCs(moduleNameVec);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* svfir = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> (Options::CFLGraph.empty())</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = LLVMModuleSet::getLLVMModuleSet()-&gt;buildSVFModule(moduleNameVec);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">buildSymbolTableInfo</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a> builder;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; svfir = builder.<a class="code" href="classSVF_1_1SVFIRBuilder.html#aa6d56f9580f76fd09d25ce6cf7541e98">build</a>(svfModule);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; } <span class="comment">// if no dot form CFLGraph is specified, we use svfir from .bc.</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="classSVF_1_1CFLBase.html">CFLBase</a>* cfl;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">if</span> (Options::CFLSVFG)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; cfl = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLVF.html">CFLVF</a>(svfir);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; cfl = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLAlias.html">CFLAlias</a>(svfir); <span class="comment">// if no svfg is specified, we use CFLAlias as the default one.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; cfl-&gt;<a class="code" href="classSVF_1_1CFLBase.html#a2aac58e19676290042874c262f1edd4d">analyze</a>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">delete</span> cfl;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; SVFIR::releaseSVFIR();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">SVF::LLVMModuleSet::releaseLLVMModuleSet</a>();</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="keywordflow">return</span> 0;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;}</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="ttc" id="classSVF_1_1CFLAlias_html"><div class="ttname"><a href="classSVF_1_1CFLAlias.html">SVF::CFLAlias</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00041">CFLAlias.h:41</a></div></div>
70
70
  <div class="ttc" id="cfl_8cpp_html_afffbd7760f0128b74c9dbfd517d0f99e"><div class="ttname"><a href="cfl_8cpp.html#afffbd7760f0128b74c9dbfd517d0f99e">StandardCompileOpts</a></div><div class="ttdeci">static cl::opt&lt; bool &gt; StandardCompileOpts(&quot;std-compile-opts&quot;, cl::desc(&quot;Include the standard compile time optimizations&quot;))</div></div>
71
- <div class="ttc" id="namespacellvm_html"><div class="ttname"><a href="namespacellvm.html">llvm</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8h_source.html#l00118">CFLGraph.h:118</a></div></div>
71
+ <div class="ttc" id="namespacellvm_html"><div class="ttname"><a href="namespacellvm.html">llvm</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8h_source.html#l00123">CFLGraph.h:123</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aa6d56f9580f76fd09d25ce6cf7541e98"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aa6d56f9580f76fd09d25ce6cf7541e98">SVF::SVFIRBuilder::build</a></div><div class="ttdeci">virtual SVFIR * build(SVFModule *svfModule)</div><div class="ttdoc">Start building SVFIR here. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00050">SVFIRBuilder.cpp:50</a></div></div>
73
- <div class="ttc" id="classSVF_1_1CFLAlias_html_afc6922e9f1965ed85ef87151e00f5311"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#afc6922e9f1965ed85ef87151e00f5311">SVF::CFLAlias::analyze</a></div><div class="ttdeci">virtual void analyze()</div><div class="ttdoc">Start Analysis here (main part of pointer analysis). </div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8cpp_source.html#l00217">CFLAlias.cpp:217</a></div></div>
74
73
  <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
75
74
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html">SVF::SVFIRBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00045">SVFIRBuilder.h:45</a></div></div>
76
75
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a2f8e91c075d90be66412a079fe73e936"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">SVF::LLVMModuleSet::releaseLLVMModuleSet</a></div><div class="ttdeci">static void releaseLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00077">LLVMModule.h:77</a></div></div>
77
- <div class="ttc" id="classSVF_1_1CFLVF_html_a52bf916b33278f48d26c3f02947bf720"><div class="ttname"><a href="classSVF_1_1CFLVF.html#a52bf916b33278f48d26c3f02947bf720">SVF::CFLVF::analyze</a></div><div class="ttdeci">virtual void analyze()</div><div class="ttdoc">Start Analysis here (main part of pointer analysis). </div><div class="ttdef"><b>Definition:</b> <a href="CFLVF_8cpp_source.html#l00040">CFLVF.cpp:40</a></div></div>
78
76
  <div class="ttc" id="cfl_8cpp_html_a139199e1f33675df72b018c31e0be35c"><div class="ttname"><a href="cfl_8cpp.html#a139199e1f33675df72b018c31e0be35c">InputFilename</a></div><div class="ttdeci">static llvm::cl::opt&lt; std::string &gt; InputFilename(llvm::cl::Positional, llvm::cl::desc(&quot;&lt;input bitcode&gt;&quot;), llvm::cl::init(&quot;-&quot;))</div></div>
79
- <div class="ttc" id="cfl_8cpp_html_a3c04138a5bfe5d72780bb7e82a18e627"><div class="ttname"><a href="cfl_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a></div><div class="ttdeci">int main(int argc, char **argv)</div><div class="ttdef"><b>Definition:</b> <a href="cfl_8cpp_source.html#l00047">cfl.cpp:47</a></div></div>
80
- <div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
81
- <div class="ttc" id="classSVF_1_1CFLVF_html"><div class="ttname"><a href="classSVF_1_1CFLVF.html">SVF::CFLVF</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLVF_8h_source.html#l00046">CFLVF.h:46</a></div></div>
82
- <div class="ttc" id="CFGNormalizer_8h_html"><div class="ttname"><a href="CFGNormalizer_8h.html">CFGNormalizer.h</a></div></div>
77
+ <div class="ttc" id="classSVF_1_1CFLBase_html_a2aac58e19676290042874c262f1edd4d"><div class="ttname"><a href="classSVF_1_1CFLBase.html#a2aac58e19676290042874c262f1edd4d">SVF::CFLBase::analyze</a></div><div class="ttdeci">virtual void analyze()</div><div class="ttdoc">Perform analyze (main part of CFLR Analysis) </div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8cpp_source.html#l00109">CFLBase.cpp:109</a></div></div>
78
+ <div class="ttc" id="cfl_8cpp_html_a3c04138a5bfe5d72780bb7e82a18e627"><div class="ttname"><a href="cfl_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a></div><div class="ttdeci">int main(int argc, char **argv)</div><div class="ttdef"><b>Definition:</b> <a href="cfl_8cpp_source.html#l00045">cfl.cpp:45</a></div></div>
79
+ <div class="ttc" id="classSVF_1_1CFLVF_html"><div class="ttname"><a href="classSVF_1_1CFLVF.html">SVF::CFLVF</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLVF_8h_source.html#l00041">CFLVF.h:41</a></div></div>
80
+ <div class="ttc" id="classSVF_1_1CFLBase_html"><div class="ttname"><a href="classSVF_1_1CFLBase.html">SVF::CFLBase</a></div><div class="ttdoc">CFL Client Base Class. </div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00049">CFLBase.h:49</a></div></div>
83
81
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
84
82
  <div class="ttc" id="CFLVF_8h_html"><div class="ttname"><a href="CFLVF_8h.html">CFLVF.h</a></div></div>
85
83
  <div class="ttc" id="SVFIRBuilder_8h_html"><div class="ttname"><a href="SVFIRBuilder_8h.html">SVFIRBuilder.h</a></div></div>
@@ -81,17 +81,18 @@ Inheritance diagram for SVF::BVDataPTAImpl:</div>
81
81
  <div class="center">
82
82
  <img src="classSVF_1_1BVDataPTAImpl.png" usemap="#SVF::BVDataPTAImpl_map" alt=""/>
83
83
  <map id="SVF::BVDataPTAImpl_map" name="SVF::BVDataPTAImpl_map">
84
- <area href="classSVF_1_1PointerAnalysis.html" alt="SVF::PointerAnalysis" shape="rect" coords="661,0,840,24"/>
84
+ <area href="classSVF_1_1PointerAnalysis.html" alt="SVF::PointerAnalysis" shape="rect" coords="850,0,1029,24"/>
85
85
  <area href="classSVF_1_1AndersenBase.html" alt="SVF::AndersenBase" shape="rect" coords="283,112,462,136"/>
86
- <area href="classSVF_1_1CFLAlias.html" alt="SVF::CFLAlias" shape="rect" coords="472,112,651,136"/>
87
- <area href="classSVF_1_1CFLVF.html" alt="SVF::CFLVF" shape="rect" coords="661,112,840,136"/>
88
- <area href="classSVF_1_1FlowDDA.html" alt="SVF::FlowDDA" shape="rect" coords="850,112,1029,136"/>
89
- <area href="classSVF_1_1FlowSensitive.html" alt="SVF::FlowSensitive" shape="rect" coords="1039,112,1218,136"/>
86
+ <area href="classSVF_1_1CFLBase.html" title="CFL Client Base Class. " alt="SVF::CFLBase" shape="rect" coords="756,112,935,136"/>
87
+ <area href="classSVF_1_1FlowDDA.html" alt="SVF::FlowDDA" shape="rect" coords="945,112,1124,136"/>
88
+ <area href="classSVF_1_1FlowSensitive.html" alt="SVF::FlowSensitive" shape="rect" coords="1134,112,1313,136"/>
90
89
  <area href="classSVF_1_1Andersen.html" alt="SVF::Andersen" shape="rect" coords="94,168,273,192"/>
91
90
  <area href="classSVF_1_1Steensgaard.html" alt="SVF::Steensgaard" shape="rect" coords="283,168,462,192"/>
92
91
  <area href="classSVF_1_1TypeAnalysis.html" alt="SVF::TypeAnalysis" shape="rect" coords="472,168,651,192"/>
93
- <area href="classSVF_1_1FSMPTA.html" alt="SVF::FSMPTA" shape="rect" coords="945,168,1124,192"/>
94
- <area href="classSVF_1_1VersionedFlowSensitive.html" alt="SVF::VersionedFlowSensitive" shape="rect" coords="1134,168,1313,192"/>
92
+ <area href="classSVF_1_1CFLAlias.html" alt="SVF::CFLAlias" shape="rect" coords="661,168,840,192"/>
93
+ <area href="classSVF_1_1CFLVF.html" alt="SVF::CFLVF" shape="rect" coords="850,168,1029,192"/>
94
+ <area href="classSVF_1_1FSMPTA.html" alt="SVF::FSMPTA" shape="rect" coords="1039,168,1218,192"/>
95
+ <area href="classSVF_1_1VersionedFlowSensitive.html" alt="SVF::VersionedFlowSensitive" shape="rect" coords="1228,168,1407,192"/>
95
96
  <area href="classSVF_1_1AndersenSCD.html" alt="SVF::AndersenSCD" shape="rect" coords="0,224,179,248"/>
96
97
  <area href="classSVF_1_1AndersenWaveDiff.html" alt="SVF::AndersenWaveDiff" shape="rect" coords="189,224,368,248"/>
97
98
  <area href="classSVF_1_1AndersenSFR.html" alt="SVF::AndersenSFR" shape="rect" coords="0,280,179,304"/>
@@ -1459,7 +1460,7 @@ Additional Inherited Members</h2></td></tr>
1459
1460
 
1460
1461
  <p>Reimplemented from <a class="el" href="classSVF_1_1PointerAnalysis.html#a118dabc50024b5cd91095814ade47166">SVF::PointerAnalysis</a>.</p>
1461
1462
 
1462
- <p>Reimplemented in <a class="el" href="classSVF_1_1Andersen.html#ad90c8cf193bd81870ce8dd88c9580e2c">SVF::Andersen</a>, <a class="el" href="classSVF_1_1FlowSensitive.html#afed358369102f01f6fe88b1433e704c3">SVF::FlowSensitive</a>, <a class="el" href="classSVF_1_1FlowDDA.html#a5abae08577ab24684653421dc712431a">SVF::FlowDDA</a>, <a class="el" href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">SVF::AndersenBase</a>, <a class="el" href="classSVF_1_1TypeAnalysis.html#a8efef079c8b33e2215f92ac3629789e6">SVF::TypeAnalysis</a>, and <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#ad955fda89f4f749151a1bd14562b03f6">SVF::VersionedFlowSensitive</a>.</p>
1463
+ <p>Reimplemented in <a class="el" href="classSVF_1_1Andersen.html#ad90c8cf193bd81870ce8dd88c9580e2c">SVF::Andersen</a>, <a class="el" href="classSVF_1_1FlowSensitive.html#afed358369102f01f6fe88b1433e704c3">SVF::FlowSensitive</a>, <a class="el" href="classSVF_1_1FlowDDA.html#a5abae08577ab24684653421dc712431a">SVF::FlowDDA</a>, <a class="el" href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">SVF::AndersenBase</a>, <a class="el" href="classSVF_1_1TypeAnalysis.html#a8efef079c8b33e2215f92ac3629789e6">SVF::TypeAnalysis</a>, <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#ad955fda89f4f749151a1bd14562b03f6">SVF::VersionedFlowSensitive</a>, <a class="el" href="classSVF_1_1CFLAlias.html#a1b7e49b3f42d625f1f25258044f8b885">SVF::CFLAlias</a>, and <a class="el" href="classSVF_1_1CFLVF.html#a6047084ea0cfe2827130facdd54e4806">SVF::CFLVF</a>.</p>
1463
1464
 
1464
1465
  <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00095">95</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1465
1466
  <div class="fragment"><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; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a2026cffd7043208333083ed1a6603e7b">normalizePointsTo</a>();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a118dabc50024b5cd91095814ade47166">PointerAnalysis::finalize</a>();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#a3550ea3f087ec557a6fe076bc443b05d">print_stat</a>)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> moduleName(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>()-&gt;getModuleIdentifier());</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; std::vector&lt;std::string&gt; names = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af54e70082388bbd70868250aaa0bc86b">SVFUtil::split</a>(moduleName,<span class="charliteral">&#39;/&#39;</span>);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span> (names.size() &gt; 1)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; moduleName = names[names.size() - 1];</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; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> subtitle;</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">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &gt;= <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49">Andersen_BASE</a> &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &lt;= <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">Steensgaard_WPA</a>)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; subtitle = <span class="stringliteral">&quot;Andersen&#39;s analysis bitvector&quot;</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &gt;=<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a62281bc39fea50a88e55edf605620322">FSDATAFLOW_WPA</a> &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &lt;=<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a43837619e78e03dc95ec6e88959faf82">FSCS_WPA</a>)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; subtitle = <span class="stringliteral">&quot;flow-sensitive analysis bitvector&quot;</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &gt;=<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb">CFLFICI_WPA</a> &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &lt;=<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab87dcf990c05d31f91b9bfdfcfb54b7d">CFLFSCS_WPA</a>)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; subtitle = <span class="stringliteral">&quot;CFL analysis bitvector&quot;</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">TypeCPP_WPA</a>)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; subtitle = <span class="stringliteral">&quot;Type analysis bitvector&quot;</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &gt;=<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abe1d8104c77bfe4bbc201a64410c7f61">FieldS_DDA</a> &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a> &lt;=<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a0ab6564c48897595c9d23382a026e0a8">Cxt_DDA</a>)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; subtitle = <span class="stringliteral">&quot;DDA bitvector&quot;</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; subtitle = <span class="stringliteral">&quot;bitvector&quot;</span>;</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n****Persistent Points-To Cache Statistics: &quot;</span> &lt;&lt; subtitle &lt;&lt; <span class="stringliteral">&quot;****\n&quot;</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;################ (program : &quot;</span> &lt;&lt; moduleName &lt;&lt; <span class="stringliteral">&quot;)###############\n&quot;</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>().flags(std::ios::left);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a94acf249e50ad56f966ddad6843c18f8">ptCache</a>.printStats(<span class="stringliteral">&quot;bitvector&quot;</span>);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;#######################################################&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>().flush();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ab87dcf990c05d31f91b9bfdfcfb54b7d"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab87dcf990c05d31f91b9bfdfcfb54b7d">SVF::PointerAnalysis::CFLFSCS_WPA</a></div><div class="ttdoc">Flow-, context-, CFL-reachability-based analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00079">PointerAnalysis.h:79</a></div></div>