svf-tools 1.0.571 → 1.0.573
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.
- package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +10 -10
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +19 -2
- package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PEGGrammar_8txt.html +2 -2
- package/SVF-doxygen/html/html/VFG_8txt.html +18 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +80 -84
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.html +16 -3
- package/SVF-doxygen/html/html/functions_func_g.html +11 -14
- package/SVF-doxygen/html/html/functions_func_r.html +4 -1
- package/SVF-doxygen/html/html/functions_func_s.html +2 -2
- package/SVF-doxygen/html/html/functions_g.html +13 -16
- package/SVF-doxygen/html/html/functions_o.html +12 -12
- package/SVF-doxygen/html/html/functions_p.html +6 -6
- package/SVF-doxygen/html/html/functions_r.html +9 -4
- package/SVF-doxygen/html/html/functions_s.html +7 -7
- package/SVF-doxygen/html/html/functions_t.html +7 -5
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_w.html +11 -11
- package/SVF-doxygen/html/html/globals_e.html +1 -0
- package/SVF-doxygen/html/html/globals_vars.html +1 -0
- package/SVF-doxygen/html/html/search/all_10.js +3 -3
- package/SVF-doxygen/html/html/search/all_11.js +2 -1
- package/SVF-doxygen/html/html/search/all_12.js +6 -6
- package/SVF-doxygen/html/html/search/all_13.js +3 -3
- package/SVF-doxygen/html/html/search/all_15.js +3 -3
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_5.js +1 -1
- package/SVF-doxygen/html/html/search/all_7.js +1 -2
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- package/SVF-doxygen/html/html/search/all_f.js +1 -1
- package/SVF-doxygen/html/html/search/functions_10.js +1 -0
- package/SVF-doxygen/html/html/search/functions_11.js +2 -2
- package/SVF-doxygen/html/html/search/functions_6.js +1 -2
- package/SVF-doxygen/html/html/search/variables_13.js +1 -1
- package/SVF-doxygen/html/html/search/variables_5.js +1 -1
- package/build.sh +1 -1
- package/include/CFL/CFGNormalizer.h +3 -3
- package/include/CFL/VFG.txt +2 -1
- package/lib/CFL/CFGNormalizer.cpp +41 -42
- package/lib/CFL/CFLGraphBuilder.cpp +74 -29
- package/lib/CFL/CFLVF.cpp +1 -1
- package/package.json +1 -1
|
@@ -631,12 +631,13 @@ Additional Inherited Members</h2></td></tr>
|
|
|
631
631
|
<p>Implements <a class="el" href="classSVF_1_1PointerAnalysis.html#ae1e217dc18be0ce70bee5ad930cb54c6">SVF::PointerAnalysis</a>.</p>
|
|
632
632
|
|
|
633
633
|
<p class="definition">Definition at line <a class="el" href="CFLVF_8cpp_source.html#l00040">40</a> of file <a class="el" href="CFLVF_8cpp_source.html">CFLVF.cpp</a>.</p>
|
|
634
|
-
<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <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="l00043"></a><span class="lineno"> 43</span>  <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="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="classSVF_1_1VFCFLGraphBuilder.html">VFCFLGraphBuilder</a> cflGraphBuilder = <a class="code" href="classSVF_1_1VFCFLGraphBuilder.html">VFCFLGraphBuilder</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <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="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a87b63f1f8f4f65cdf6647f9f056ffc53">Options::CFLGraph</a>.empty())</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a431ec4f85eb0f029e5740b92fd9ceb32">PointerAnalysis::initialize</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <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="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>* ander = <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">AndersenWaveDiff::createAndersenWaveDiff</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="classSVF_1_1CFLVF.html#aed71ea423497a4f64c8b62ee4187210e">svfg</a> = <a class="code" href="classSVF_1_1CFLVF.html#a42998aacf670d108b2a00b8993507e1e">memSSA</a>.<a class="code" href="classSVF_1_1SVFGBuilder.html#ab7353191edd06568e2598177d253c1d9">buildPTROnlySVFG</a>(ander);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <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_1CFLVF.html#a32b774f456dc6ca596cfe2fcd77efbc9">svfir</a>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a7d566af0280a0c2457947fd426c81c81">Options::PEGTransfer</a>)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">graph</a> = cflGraphBuilder.<a class="code" href="classSVF_1_1VFCFLGraphBuilder.html#ac4a6620622ad6642ed8543e0f8c65c20">buildBiPEGgraph</a>(consCG, grammarBase-><a class="code" href="classSVF_1_1GrammarBase.html#a8921a7d7a006e31f13d88b8c808c931b">getStartKind</a>(), grammarBase, <a class="code" href="classSVF_1_1CFLVF.html#a32b774f456dc6ca596cfe2fcd77efbc9">svfir</a>);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">graph</a> = cflGraphBuilder.<a class="code" href="classSVF_1_1VFCFLGraphBuilder.html#acd5ade19c0e058bfb41a1a8dd84748e1">buildBigraph</a>(<a class="code" href="classSVF_1_1CFLVF.html#aed71ea423497a4f64c8b62ee4187210e">svfg</a>, grammarBase-><a class="code" href="classSVF_1_1GrammarBase.html#a8921a7d7a006e31f13d88b8c808c931b">getStartKind</a>(), grammarBase);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  cflChecker.<a class="code" href="classSVF_1_1CFLGramGraphChecker.html#ada643d980c2590711660eb5f2a4e5f93">check</a>(grammarBase, &cflGraphBuilder, <a class="code" href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">graph</a>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="classSVF_1_1CFLVF.html#a7ba9ca8cbafa6f799278c33fe5edd4fb">grammar</a> = normalizer.<a class="code" href="classSVF_1_1CFGNormalizer.html#ae8e2b22944e9d3d2ec14cd6aaa8b93c9">normalize</a>(grammarBase);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  cflChecker.<a class="code" href="classSVF_1_1CFLGramGraphChecker.html#ada643d980c2590711660eb5f2a4e5f93">check</a>(<a class="code" href="classSVF_1_1CFLVF.html#a7ba9ca8cbafa6f799278c33fe5edd4fb">grammar</a>, &cflGraphBuilder, <a class="code" href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">graph</a>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">delete</span> consCG;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">delete</span> grammarBase;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <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="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">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="l00072"></a><span class="lineno"> 72</span>  cflChecker.<a class="code" href="classSVF_1_1CFLGramGraphChecker.html#ada643d980c2590711660eb5f2a4e5f93">check</a>(grammarBase, &cflGraphBuilder, <a class="code" href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">graph</a>);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="classSVF_1_1CFLVF.html#a7ba9ca8cbafa6f799278c33fe5edd4fb">grammar</a> = normalizer.<a class="code" href="classSVF_1_1CFGNormalizer.html#ae8e2b22944e9d3d2ec14cd6aaa8b93c9">normalize</a>(grammarBase);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  cflChecker.<a class="code" href="classSVF_1_1CFLGramGraphChecker.html#ada643d980c2590711660eb5f2a4e5f93">check</a>(<a class="code" href="classSVF_1_1CFLVF.html#a7ba9ca8cbafa6f799278c33fe5edd4fb">grammar</a>, &cflGraphBuilder, <a class="code" href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">graph</a>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">delete</span> grammarBase;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="classSVF_1_1CFLVF.html#ab7ff36646da4c568d160ca2563b9b087">solver</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLSolver.html">CFLSolver</a>(<a class="code" href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">graph</a>, <a class="code" href="classSVF_1_1CFLVF.html#a7ba9ca8cbafa6f799278c33fe5edd4fb">grammar</a>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="classSVF_1_1CFLVF.html#ab7ff36646da4c568d160ca2563b9b087">solver</a>-><a class="code" href="classSVF_1_1CFLSolver.html#a2ee3436c26ebdb2aaf790c25b1d8b5a6">solve</a>();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <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="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="classSVF_1_1CFLVF.html#a32b774f456dc6ca596cfe2fcd77efbc9">svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">dump</a>(<span class="stringliteral">"IR"</span>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="classSVF_1_1CFLVF.html#a7ba9ca8cbafa6f799278c33fe5edd4fb">grammar</a>-><a class="code" href="classSVF_1_1CFLGrammar.html#aa663563ea03e11371d67ff4673e98a54">dump</a>(<span class="stringliteral">"Grammar"</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">graph</a>-><a class="code" href="classSVF_1_1CFLGraph.html#ab32869931e46babcfaa6791efe2ba91e">dump</a>(<span class="stringliteral">"CFLGraph"</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a87b63f1f8f4f65cdf6647f9f056ffc53">Options::CFLGraph</a>.empty())</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a118dabc50024b5cd91095814ade47166">PointerAnalysis::finalize</a>();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> }</div><div class="ttc" id="classSVF_1_1CFLVF_html_a42998aacf670d108b2a00b8993507e1e"><div class="ttname"><a href="classSVF_1_1CFLVF.html#a42998aacf670d108b2a00b8993507e1e">SVF::CFLVF::memSSA</a></div><div class="ttdeci">SaberSVFGBuilder memSSA</div><div class="ttdef"><b>Definition:</b> <a href="CFLVF_8h_source.html#l00071">CFLVF.h:71</a></div></div>
|
|
634
|
+
<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <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="l00043"></a><span class="lineno"> 43</span>  <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="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="classSVF_1_1VFCFLGraphBuilder.html">VFCFLGraphBuilder</a> cflGraphBuilder = <a class="code" href="classSVF_1_1VFCFLGraphBuilder.html">VFCFLGraphBuilder</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <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="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a87b63f1f8f4f65cdf6647f9f056ffc53">Options::CFLGraph</a>.empty())</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a431ec4f85eb0f029e5740b92fd9ceb32">PointerAnalysis::initialize</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <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="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>* ander = <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">AndersenWaveDiff::createAndersenWaveDiff</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="classSVF_1_1CFLVF.html#aed71ea423497a4f64c8b62ee4187210e">svfg</a> = <a class="code" href="classSVF_1_1CFLVF.html#a42998aacf670d108b2a00b8993507e1e">memSSA</a>.<a class="code" href="classSVF_1_1SVFGBuilder.html#a54a713e3989597b11cee70864d0197bd">buildFullSVFG</a>(ander);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <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_1CFLVF.html#a32b774f456dc6ca596cfe2fcd77efbc9">svfir</a>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a7d566af0280a0c2457947fd426c81c81">Options::PEGTransfer</a>)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">graph</a> = cflGraphBuilder.<a class="code" href="classSVF_1_1VFCFLGraphBuilder.html#ac4a6620622ad6642ed8543e0f8c65c20">buildBiPEGgraph</a>(consCG, grammarBase-><a class="code" href="classSVF_1_1GrammarBase.html#a8921a7d7a006e31f13d88b8c808c931b">getStartKind</a>(), grammarBase, <a class="code" href="classSVF_1_1CFLVF.html#a32b774f456dc6ca596cfe2fcd77efbc9">svfir</a>);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">graph</a> = cflGraphBuilder.<a class="code" href="classSVF_1_1VFCFLGraphBuilder.html#acd5ade19c0e058bfb41a1a8dd84748e1">buildBigraph</a>(<a class="code" href="classSVF_1_1CFLVF.html#aed71ea423497a4f64c8b62ee4187210e">svfg</a>, grammarBase-><a class="code" href="classSVF_1_1GrammarBase.html#a8921a7d7a006e31f13d88b8c808c931b">getStartKind</a>(), grammarBase);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  cflChecker.<a class="code" href="classSVF_1_1CFLGramGraphChecker.html#ada643d980c2590711660eb5f2a4e5f93">check</a>(grammarBase, &cflGraphBuilder, <a class="code" href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">graph</a>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="classSVF_1_1CFLVF.html#a7ba9ca8cbafa6f799278c33fe5edd4fb">grammar</a> = normalizer.<a class="code" href="classSVF_1_1CFGNormalizer.html#ae8e2b22944e9d3d2ec14cd6aaa8b93c9">normalize</a>(grammarBase);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  cflChecker.<a class="code" href="classSVF_1_1CFLGramGraphChecker.html#ada643d980c2590711660eb5f2a4e5f93">check</a>(<a class="code" href="classSVF_1_1CFLVF.html#a7ba9ca8cbafa6f799278c33fe5edd4fb">grammar</a>, &cflGraphBuilder, <a class="code" href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">graph</a>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">delete</span> consCG;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">delete</span> grammarBase;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <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="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">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="l00072"></a><span class="lineno"> 72</span>  cflChecker.<a class="code" href="classSVF_1_1CFLGramGraphChecker.html#ada643d980c2590711660eb5f2a4e5f93">check</a>(grammarBase, &cflGraphBuilder, <a class="code" href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">graph</a>);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="classSVF_1_1CFLVF.html#a7ba9ca8cbafa6f799278c33fe5edd4fb">grammar</a> = normalizer.<a class="code" href="classSVF_1_1CFGNormalizer.html#ae8e2b22944e9d3d2ec14cd6aaa8b93c9">normalize</a>(grammarBase);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  cflChecker.<a class="code" href="classSVF_1_1CFLGramGraphChecker.html#ada643d980c2590711660eb5f2a4e5f93">check</a>(<a class="code" href="classSVF_1_1CFLVF.html#a7ba9ca8cbafa6f799278c33fe5edd4fb">grammar</a>, &cflGraphBuilder, <a class="code" href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">graph</a>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">delete</span> grammarBase;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="classSVF_1_1CFLVF.html#ab7ff36646da4c568d160ca2563b9b087">solver</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLSolver.html">CFLSolver</a>(<a class="code" href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">graph</a>, <a class="code" href="classSVF_1_1CFLVF.html#a7ba9ca8cbafa6f799278c33fe5edd4fb">grammar</a>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="classSVF_1_1CFLVF.html#ab7ff36646da4c568d160ca2563b9b087">solver</a>-><a class="code" href="classSVF_1_1CFLSolver.html#a2ee3436c26ebdb2aaf790c25b1d8b5a6">solve</a>();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <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="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="classSVF_1_1CFLVF.html#a32b774f456dc6ca596cfe2fcd77efbc9">svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">dump</a>(<span class="stringliteral">"IR"</span>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="classSVF_1_1CFLVF.html#a7ba9ca8cbafa6f799278c33fe5edd4fb">grammar</a>-><a class="code" href="classSVF_1_1CFLGrammar.html#aa663563ea03e11371d67ff4673e98a54">dump</a>(<span class="stringliteral">"Grammar"</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">graph</a>-><a class="code" href="classSVF_1_1CFLGraph.html#ab32869931e46babcfaa6791efe2ba91e">dump</a>(<span class="stringliteral">"CFLGraph"</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a87b63f1f8f4f65cdf6647f9f056ffc53">Options::CFLGraph</a>.empty())</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a118dabc50024b5cd91095814ade47166">PointerAnalysis::finalize</a>();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> }</div><div class="ttc" id="classSVF_1_1CFLVF_html_a42998aacf670d108b2a00b8993507e1e"><div class="ttname"><a href="classSVF_1_1CFLVF.html#a42998aacf670d108b2a00b8993507e1e">SVF::CFLVF::memSSA</a></div><div class="ttdeci">SaberSVFGBuilder memSSA</div><div class="ttdef"><b>Definition:</b> <a href="CFLVF_8h_source.html#l00071">CFLVF.h:71</a></div></div>
|
|
635
635
|
<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>
|
|
636
636
|
<div class="ttc" id="classSVF_1_1CFLVF_html_a30732e01e523dc5e2fc4c9d1ea83d414"><div class="ttname"><a href="classSVF_1_1CFLVF.html#a30732e01e523dc5e2fc4c9d1ea83d414">SVF::CFLVF::graph</a></div><div class="ttdeci">CFLGraph * graph</div><div class="ttdef"><b>Definition:</b> <a href="CFLVF_8h_source.html#l00068">CFLVF.h:68</a></div></div>
|
|
637
637
|
<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>
|
|
638
638
|
<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>
|
|
639
639
|
<div class="ttc" id="classSVF_1_1VFCFLGraphBuilder_html"><div class="ttname"><a href="classSVF_1_1VFCFLGraphBuilder.html">SVF::VFCFLGraphBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00171">CFLGraphBuilder.h:171</a></div></div>
|
|
640
|
+
<div class="ttc" id="classSVF_1_1SVFGBuilder_html_a54a713e3989597b11cee70864d0197bd"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html#a54a713e3989597b11cee70864d0197bd">SVF::SVFGBuilder::buildFullSVFG</a></div><div class="ttdeci">SVFG * buildFullSVFG(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8cpp_source.html#l00052">SVFGBuilder.cpp:52</a></div></div>
|
|
640
641
|
<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>
|
|
641
642
|
<div class="ttc" id="classSVF_1_1AndersenWaveDiff_html"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html">SVF::AndersenWaveDiff</a></div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00378">Andersen.h:378</a></div></div>
|
|
642
643
|
<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>
|
|
@@ -645,7 +646,6 @@ Additional Inherited Members</h2></td></tr>
|
|
|
645
646
|
<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>
|
|
646
647
|
<div class="ttc" id="classSVF_1_1CFLVF_html_aed71ea423497a4f64c8b62ee4187210e"><div class="ttname"><a href="classSVF_1_1CFLVF.html#aed71ea423497a4f64c8b62ee4187210e">SVF::CFLVF::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="CFLVF_8h_source.html#l00072">CFLVF.h:72</a></div></div>
|
|
647
648
|
<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>
|
|
648
|
-
<div class="ttc" id="classSVF_1_1SVFGBuilder_html_ab7353191edd06568e2598177d253c1d9"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html#ab7353191edd06568e2598177d253c1d9">SVF::SVFGBuilder::buildPTROnlySVFG</a></div><div class="ttdeci">SVFG * buildPTROnlySVFG(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8cpp_source.html#l00044">SVFGBuilder.cpp:44</a></div></div>
|
|
649
649
|
<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>
|
|
650
650
|
<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>
|
|
651
651
|
<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 &filename)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8cpp_source.html#l00070">CFLGraph.cpp:70</a></div></div>
|
|
@@ -656,7 +656,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
656
656
|
<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>
|
|
657
657
|
<div class="ttc" id="classSVF_1_1CFLVF_html_a7ba9ca8cbafa6f799278c33fe5edd4fb"><div class="ttname"><a href="classSVF_1_1CFLVF.html#a7ba9ca8cbafa6f799278c33fe5edd4fb">SVF::CFLVF::grammar</a></div><div class="ttdeci">CFLGrammar * grammar</div><div class="ttdef"><b>Definition:</b> <a href="CFLVF_8h_source.html#l00069">CFLVF.h:69</a></div></div>
|
|
658
658
|
<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>
|
|
659
|
-
<div class="ttc" id="classSVF_1_1VFCFLGraphBuilder_html_ac4a6620622ad6642ed8543e0f8c65c20"><div class="ttname"><a href="classSVF_1_1VFCFLGraphBuilder.html#ac4a6620622ad6642ed8543e0f8c65c20">SVF::VFCFLGraphBuilder::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#
|
|
659
|
+
<div class="ttc" id="classSVF_1_1VFCFLGraphBuilder_html_ac4a6620622ad6642ed8543e0f8c65c20"><div class="ttname"><a href="classSVF_1_1VFCFLGraphBuilder.html#ac4a6620622ad6642ed8543e0f8c65c20">SVF::VFCFLGraphBuilder::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#l00513">CFLGraphBuilder.cpp:513</a></div></div>
|
|
660
660
|
<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< std::string > GrammarFilename</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00252">Options.h:252</a></div></div>
|
|
661
661
|
<div class="ttc" id="classSVF_1_1AndersenWaveDiff_html_a48ff6fc4badc79ad3204ae9bd95cc540"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">SVF::AndersenWaveDiff::createAndersenWaveDiff</a></div><div class="ttdeci">static AndersenWaveDiff * createAndersenWaveDiff(SVFIR *_pag)</div><div class="ttdoc">Create an singleton instance directly instead of invoking llvm pass manager. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00389">Andersen.h:389</a></div></div>
|
|
662
662
|
<div class="ttc" id="classSVF_1_1CFLVF_html_a32b774f456dc6ca596cfe2fcd77efbc9"><div class="ttname"><a href="classSVF_1_1CFLVF.html#a32b774f456dc6ca596cfe2fcd77efbc9">SVF::CFLVF::svfir</a></div><div class="ttdeci">SVFIR * svfir</div><div class="ttdef"><b>Definition:</b> <a href="CFLVF_8h_source.html#l00067">CFLVF.h:67</a></div></div>
|
|
@@ -283,8 +283,21 @@ Additional Inherited Members</h2></td></tr>
|
|
|
283
283
|
<p>Build Bidirectional graph by copying nodes and edges from const graph inherited from <a class="el" href="classSVF_1_1GenericGraph.html">GenericGraph</a>. </p>
|
|
284
284
|
|
|
285
285
|
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8cpp_source.html#l00405">405</a> of file <a class="el" href="CFLGraphBuilder_8cpp_source.html">CFLGraphBuilder.cpp</a>.</p>
|
|
286
|
-
<div class="fragment"><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  CFLGraph *cflGraph = <span class="keyword">new</span> CFLGraph(startKind);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a91f1f0e8abc8d781eaf8b1a4f025c18e">externMap</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> pairV : grammar->getTerminals())</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.find(pairV.first) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.end())</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert(pairV);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  }</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.find(pairV.second) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.end())</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.insert(make_pair(pairV.second, pairV.first));</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> pairV : grammar->getNonterminals())</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.find(pairV.first) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.end())</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert(pairV);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  }</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.find(pairV.second) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.end())</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.insert(make_pair(pairV.second, pairV.first));</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  }</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = graph->begin(); it!= graph->end(); it++)</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  CFLNode* node = <span class="keyword">new</span> CFLNode((*it).first);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  cflGraph->addCFLNode((*it).first, node);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="comment">// for(auto it = graph->begin(); it!= graph->end(); it++)</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="comment">// {</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="comment">// ConstraintNode* node = (*it).second;</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="comment">// for(ConstraintEdge* edge : node->getOutEdges())</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="comment">// {</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="comment">// CFLGrammar::Kind edgeLabel = edge->getEdgeKind();</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="comment">// // Need to get the offset from the Const Edge</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="comment">// // The offset present edge is only from Normal Gep CG at moment</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="comment">// if(NormalGepCGEdge::classof(edge))</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="comment">// {</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="comment">// NormalGepCGEdge *nGepEdge = SVFUtil::dyn_cast<NormalGepCGEdge>(edge);</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="comment">// CFLGrammar::Attribute attr = nGepEdge->getConstantFieldIdx();</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="comment">// addAttribute(edgeLabel, attr);</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="comment">// edgeLabel = CFLGrammar::getAttributedKind(attr, edgeLabel);</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="comment">// cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="comment">// std::string key = kind2LabelMap[edge->getEdgeKind()];</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="comment">// key.append("bar"); // for example Gep_i should be Gepbar_i, not Gep_ibar</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="comment">// cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), CFLGrammar::getAttributedKind(attr, label2KindMap[key]));</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="comment">// addAttribute(label2KindMap[key], attr);</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="comment">// }</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="comment">// else</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="comment">// {</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="comment">// cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="comment">// std::string key = kind2LabelMap[edge->getEdgeKind()];</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="comment">// key.append("bar");</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="comment">// cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), label2KindMap[key]);</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="comment">// }</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="comment">// }</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="comment">// }</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">return</span> cflGraph;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> }</div><div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a7117dbeceeef7a9fcaeee0a84a171590"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">SVF::CFLGraphBuilder::label2KindMap</a></div><div class="ttdeci">Map< std::string, Kind > label2KindMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00050">CFLGraphBuilder.h:50</a></div></div>
|
|
286
|
+
<div class="fragment"><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  CFLGraph *cflGraph = <span class="keyword">new</span> CFLGraph(startKind);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a91f1f0e8abc8d781eaf8b1a4f025c18e">externMap</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> pairV : grammar->getTerminals())</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.find(pairV.first) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.end())</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert(pairV);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  }</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.find(pairV.second) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.end())</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.insert(make_pair(pairV.second, pairV.first));</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> pairV : grammar->getNonterminals())</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.find(pairV.first) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.end())</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert(pairV);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  }</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.find(pairV.second) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.end())</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.insert(make_pair(pairV.second, pairV.first));</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  }</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = graph->begin(); it!= graph->end(); it++)</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  CFLNode* node = <span class="keyword">new</span> CFLNode((*it).first);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  cflGraph->addCFLNode((*it).first, node);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = graph->begin(); it!= graph->end(); it++)</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  VFGNode* node = (*it).second;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">for</span>(VFGEdge* edge : node->getOutEdges())</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <a class="code" href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">CFLGrammar::Kind</a> edgeLabel;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="comment">// Get 'a' edge : IntraDirectVF || IntraIndirectVF</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">if</span> (edge->getEdgeKind() == <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d">VFGEdge::IntraDirectVF</a> || edge->getEdgeKind() == <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5aa80551154bcfbfa84f02df32ead6b1b0">VFGEdge::IntraIndirectVF</a> || edge->getEdgeKind() == <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5aae3168b6bc9141e4a1f3723eae4f3375">VFGEdge::TheadMHPIndirectVF</a> )</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  edgeLabel = 0;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[edge->getEdgeKind()];</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  key.append(<span class="stringliteral">"bar"</span>);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="comment">// Get 'call' edge : CallDirVF || CallIndVF</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( edge->getEdgeKind() == <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8383c27feab3f1acc67cacef9744c04a">VFGEdge::CallDirVF</a> )</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  {</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  edgeLabel = 1;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  CallDirSVFGEdge *attributedEdge = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><CallDirSVFGEdge>(edge);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <a class="code" href="classSVF_1_1GrammarBase.html#ab070e5449d26e347b957d8b994d0303f">CFLGrammar::Attribute</a> attr = attributedEdge->getCallSiteId();</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">addAttribute</a>(edgeLabel, attr);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  edgeLabel = <a class="code" href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">CFLGrammar::getAttributedKind</a>(attr, edgeLabel);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[edge->getEdgeKind()];</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  key.append(<span class="stringliteral">"bar"</span>); <span class="comment">// for example Gep_i should be Gepbar_i, not Gep_ibar</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), <a class="code" href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">CFLGrammar::getAttributedKind</a>(attr, <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]));</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">addAttribute</a>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key], attr);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="comment">// Get 'call' edge : CallIndVF</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( edge->getEdgeKind() == <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a978c857fcc06d2f988bc9ce16ce10145">VFGEdge::CallIndVF</a> )</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  {</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  edgeLabel = 1;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  CallIndSVFGEdge *attributedEdge = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><CallIndSVFGEdge>(edge);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <a class="code" href="classSVF_1_1GrammarBase.html#ab070e5449d26e347b957d8b994d0303f">CFLGrammar::Attribute</a> attr = attributedEdge->getCallSiteId();</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">addAttribute</a>(edgeLabel, attr);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  edgeLabel = <a class="code" href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">CFLGrammar::getAttributedKind</a>(attr, edgeLabel);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[edge->getEdgeKind()];</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  key.append(<span class="stringliteral">"bar"</span>); <span class="comment">// for example Gep_i should be Gepbar_i, not Gep_ibar</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), <a class="code" href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">CFLGrammar::getAttributedKind</a>(attr, <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]));</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">addAttribute</a>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key], attr);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  }</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="comment">// Get 'ret' edge : RetDirVF</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( edge->getEdgeKind() == <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8288c583cfcbfdf9aa2ac2103c0e7191">VFGEdge::RetDirVF</a> )</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  edgeLabel = 2;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  RetDirSVFGEdge *attributedEdge = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><RetDirSVFGEdge>(edge);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <a class="code" href="classSVF_1_1GrammarBase.html#ab070e5449d26e347b957d8b994d0303f">CFLGrammar::Attribute</a> attr = attributedEdge->getCallSiteId();</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">addAttribute</a>(edgeLabel, attr);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  edgeLabel = <a class="code" href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">CFLGrammar::getAttributedKind</a>(attr, edgeLabel);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[edge->getEdgeKind()];</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  key.append(<span class="stringliteral">"bar"</span>); <span class="comment">// for example Gep_i should be Gepbar_i, not Gep_ibar</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), <a class="code" href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">CFLGrammar::getAttributedKind</a>(attr, <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]));</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">addAttribute</a>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key], attr);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  }</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="comment">// Get 'ret' edge : RetIndVF</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( edge->getEdgeKind() == <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5ac8124172b3f5f7fc94e895f6b192b668">VFGEdge::RetIndVF</a> )</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  edgeLabel = 2;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  RetIndSVFGEdge *attributedEdge = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><RetIndSVFGEdge>(edge);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <a class="code" href="classSVF_1_1GrammarBase.html#ab070e5449d26e347b957d8b994d0303f">CFLGrammar::Attribute</a> attr = attributedEdge->getCallSiteId();</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">addAttribute</a>(edgeLabel, attr);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  edgeLabel = <a class="code" href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">CFLGrammar::getAttributedKind</a>(attr, edgeLabel);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[edge->getEdgeKind()];</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  key.append(<span class="stringliteral">"bar"</span>); <span class="comment">// for example Gep_i should be Gepbar_i, not Gep_ibar</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), <a class="code" href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">CFLGrammar::getAttributedKind</a>(attr, <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]));</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">addAttribute</a>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key], attr);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  }</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  }</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keywordflow">return</span> cflGraph;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> }</div><div class="ttc" id="classSVF_1_1VFGEdge_html_a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d">SVF::VFGEdge::IntraDirectVF</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00053">VFGEdge.h:53</a></div></div>
|
|
287
|
+
<div class="ttc" id="classSVF_1_1VFGEdge_html_a156ae6a8b3a033f505c18c6b162e7cf5a8383c27feab3f1acc67cacef9744c04a"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8383c27feab3f1acc67cacef9744c04a">SVF::VFGEdge::CallDirVF</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00055">VFGEdge.h:55</a></div></div>
|
|
288
|
+
<div class="ttc" id="classSVF_1_1VFGEdge_html_a156ae6a8b3a033f505c18c6b162e7cf5a8288c583cfcbfdf9aa2ac2103c0e7191"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8288c583cfcbfdf9aa2ac2103c0e7191">SVF::VFGEdge::RetDirVF</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00056">VFGEdge.h:56</a></div></div>
|
|
289
|
+
<div class="ttc" id="classSVF_1_1VFGEdge_html_a156ae6a8b3a033f505c18c6b162e7cf5a978c857fcc06d2f988bc9ce16ce10145"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a978c857fcc06d2f988bc9ce16ce10145">SVF::VFGEdge::CallIndVF</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00057">VFGEdge.h:57</a></div></div>
|
|
290
|
+
<div class="ttc" id="classSVF_1_1GrammarBase_html_ab070e5449d26e347b957d8b994d0303f"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ab070e5449d26e347b957d8b994d0303f">SVF::GrammarBase::Attribute</a></div><div class="ttdeci">u32_t Attribute</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00040">CFLGrammar.h:40</a></div></div>
|
|
291
|
+
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_adaa843018284f854ed0ad3bcb1460a01"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">SVF::CFLGraphBuilder::addAttribute</a></div><div class="ttdeci">void addAttribute(CFLGrammar::Kind kind, CFLGrammar::Attribute attribute)</div><div class="ttdoc">add attribute to kind2Attribute Map </div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8cpp_source.html#l00037">CFLGraphBuilder.cpp:37</a></div></div>
|
|
292
|
+
<div class="ttc" id="classSVF_1_1VFGEdge_html_a156ae6a8b3a033f505c18c6b162e7cf5aae3168b6bc9141e4a1f3723eae4f3375"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5aae3168b6bc9141e4a1f3723eae4f3375">SVF::VFGEdge::TheadMHPIndirectVF</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00059">VFGEdge.h:59</a></div></div>
|
|
293
|
+
<div class="ttc" id="classSVF_1_1GrammarBase_html_af418e1033618da75e974a04ee1d7e275"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">SVF::GrammarBase::getAttributedKind</a></div><div class="ttdeci">static Kind getAttributedKind(Attribute attribute, Kind kind)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00251">CFLGrammar.h:251</a></div></div>
|
|
294
|
+
<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>
|
|
295
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
296
|
+
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a7117dbeceeef7a9fcaeee0a84a171590"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">SVF::CFLGraphBuilder::label2KindMap</a></div><div class="ttdeci">Map< std::string, Kind > label2KindMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00050">CFLGraphBuilder.h:50</a></div></div>
|
|
297
|
+
<div class="ttc" id="classSVF_1_1VFGEdge_html_a156ae6a8b3a033f505c18c6b162e7cf5aa80551154bcfbfa84f02df32ead6b1b0"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5aa80551154bcfbfa84f02df32ead6b1b0">SVF::VFGEdge::IntraIndirectVF</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00054">VFGEdge.h:54</a></div></div>
|
|
298
|
+
<div class="ttc" id="classSVF_1_1VFGEdge_html_a156ae6a8b3a033f505c18c6b162e7cf5ac8124172b3f5f7fc94e895f6b192b668"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5ac8124172b3f5f7fc94e895f6b192b668">SVF::VFGEdge::RetIndVF</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00058">VFGEdge.h:58</a></div></div>
|
|
287
299
|
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a461ff21d73f60cf96a3e36672d4c6a6c"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">SVF::CFLGraphBuilder::kind2LabelMap</a></div><div class="ttdeci">Map< Kind, std::string > kind2LabelMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00051">CFLGraphBuilder.h:51</a></div></div>
|
|
300
|
+
<div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
288
301
|
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a91f1f0e8abc8d781eaf8b1a4f025c18e"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a91f1f0e8abc8d781eaf8b1a4f025c18e">SVF::CFLGraphBuilder::externMap</a></div><div class="ttdeci">bool externMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00053">CFLGraphBuilder.h:53</a></div></div>
|
|
289
302
|
</div><!-- fragment -->
|
|
290
303
|
</div>
|
|
@@ -328,8 +341,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
328
341
|
</div><div class="memdoc">
|
|
329
342
|
<p>Build Bidirectional graph by copying nodes and edges from any graph inherited from <a class="el" href="classSVF_1_1GenericGraph.html">GenericGraph</a> And transfer Load Store to copy edge and address edge to construct PEG style CFG </p>
|
|
330
343
|
|
|
331
|
-
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8cpp_source.html#
|
|
332
|
-
<div class="fragment"><div class="line"><a name="
|
|
344
|
+
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8cpp_source.html#l00513">513</a> of file <a class="el" href="CFLGraphBuilder_8cpp_source.html">CFLGraphBuilder.cpp</a>.</p>
|
|
345
|
+
<div class="fragment"><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  CFLGraph *cflGraph = <span class="keyword">new</span> CFLGraph(startKind);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordflow">return</span> cflGraph;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> }</div></div><!-- fragment -->
|
|
333
346
|
</div>
|
|
334
347
|
</div>
|
|
335
348
|
<a id="a23e16f4dd62ffb96e64318c60f594067"></a>
|
|
@@ -933,11 +933,8 @@ $(function() {
|
|
|
933
933
|
<li>getFileName()
|
|
934
934
|
: <a class="el" href="classSVF_1_1PAGBuilderFromFile.html#aaaa1e516e5eeceece371a9178142c3ff">SVF::PAGBuilderFromFile</a>
|
|
935
935
|
</li>
|
|
936
|
-
<li>getFilledProd()
|
|
937
|
-
: <a class="el" href="classSVF_1_1CFGNormalizer.html#ab5c5efbb72cf018885e026be65c92fdf">SVF::CFGNormalizer</a>
|
|
938
|
-
</li>
|
|
939
936
|
<li>getFilledProductions()
|
|
940
|
-
: <a class="el" href="classSVF_1_1CFGNormalizer.html#
|
|
937
|
+
: <a class="el" href="classSVF_1_1CFGNormalizer.html#add319949e856049d3e898848a02a75b7">SVF::CFGNormalizer</a>
|
|
941
938
|
</li>
|
|
942
939
|
<li>getFIObjVar()
|
|
943
940
|
: <a class="el" href="classSVF_1_1ConstraintGraph.html#a7c8a29ad1d270fca745f233bb4800731">SVF::ConstraintGraph</a>
|
|
@@ -1396,7 +1393,7 @@ $(function() {
|
|
|
1396
1393
|
: <a class="el" href="classSVF_1_1ExeState.html#a4ee40de7eca22ac055b52360e0101623">SVF::ExeState</a>
|
|
1397
1394
|
</li>
|
|
1398
1395
|
<li>getLoop()
|
|
1399
|
-
: <a class="el" href="classSVF_1_1TCT.html#
|
|
1396
|
+
: <a class="el" href="classSVF_1_1TCT.html#a71249dc399055790d86dcba6d9dd3021">SVF::TCT</a>
|
|
1400
1397
|
</li>
|
|
1401
1398
|
<li>getLoopBound()
|
|
1402
1399
|
: <a class="el" href="classSVF_1_1SVFLoop.html#ae772c9aab10b88d3c53cdf2cdb23d713">SVF::SVFLoop</a>
|
|
@@ -1456,7 +1453,7 @@ $(function() {
|
|
|
1456
1453
|
: <a class="el" href="classSVF_1_1MRGenerator.html#ae487d7b800d7536b578095c9f140ac80">SVF::MRGenerator</a>
|
|
1457
1454
|
</li>
|
|
1458
1455
|
<li>getModRefInfo()
|
|
1459
|
-
: <a class="el" href="classSVF_1_1MRGenerator.html#
|
|
1456
|
+
: <a class="el" href="classSVF_1_1MRGenerator.html#a7e1c258e120d89d7b9d6e414f91c6e4a">SVF::MRGenerator</a>
|
|
1460
1457
|
, <a class="el" href="classSVF_1_1WPAPass.html#a567f818fa7b29142b18cb39e5c063a4e">SVF::WPAPass</a>
|
|
1461
1458
|
</li>
|
|
1462
1459
|
<li>getModSideEffectOfCallSite()
|
|
@@ -1860,7 +1857,7 @@ $(function() {
|
|
|
1860
1857
|
: <a class="el" href="classSVF_1_1MRGenerator.html#a6d86c8ebe87cb54f39e52daa7ffb0e2e">SVF::MRGenerator</a>
|
|
1861
1858
|
</li>
|
|
1862
1859
|
<li>getPostDomTreeMap()
|
|
1863
|
-
: <a class="el" href="classSVF_1_1SVFFunction.html#
|
|
1860
|
+
: <a class="el" href="classSVF_1_1SVFFunction.html#a465774dfabebd2ff4f79e2a7654f0430">SVF::SVFFunction</a>
|
|
1864
1861
|
</li>
|
|
1865
1862
|
<li>getPostDT()
|
|
1866
1863
|
: <a class="el" href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">SVF::PTACFInfoBuilder</a>
|
|
@@ -1941,11 +1938,11 @@ $(function() {
|
|
|
1941
1938
|
, <a class="el" href="classSVF_1_1MutableDFPTData.html#a4cbb9131a89c5c48367fb927693b5c6b">SVF::MutableDFPTData< Key, KeySet, Data, DataSet ></a>
|
|
1942
1939
|
, <a class="el" href="classSVF_1_1MutableDiffPTData.html#ac2f494da9379c336bb81a0dc438b5af9">SVF::MutableDiffPTData< Key, KeySet, Data, DataSet ></a>
|
|
1943
1940
|
, <a class="el" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">SVF::MutablePTData< Key, KeySet, Data, DataSet ></a>
|
|
1944
|
-
, <a class="el" href="classSVF_1_1MutableVersionedPTData.html#
|
|
1941
|
+
, <a class="el" href="classSVF_1_1MutableVersionedPTData.html#aaf519166d2e0ca3c81088b52a1cf3066">SVF::MutableVersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet ></a>
|
|
1945
1942
|
, <a class="el" href="classSVF_1_1PersistentDFPTData.html#a5f6a01d0bb40a718bc14f2cc1bb98a13">SVF::PersistentDFPTData< Key, KeySet, Data, DataSet ></a>
|
|
1946
1943
|
, <a class="el" href="classSVF_1_1PersistentDiffPTData.html#a9982ecf42416756a0729a28e8713cfed">SVF::PersistentDiffPTData< Key, KeySet, Data, DataSet ></a>
|
|
1947
1944
|
, <a class="el" href="classSVF_1_1PersistentPTData.html#a34f8226202e1654d4e67916b21ec4d99">SVF::PersistentPTData< Key, KeySet, Data, DataSet ></a>
|
|
1948
|
-
, <a class="el" href="classSVF_1_1PersistentVersionedPTData.html#
|
|
1945
|
+
, <a class="el" href="classSVF_1_1PersistentVersionedPTData.html#a9b81d20e54d08e36edbff43549b1e820">SVF::PersistentVersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet ></a>
|
|
1949
1946
|
, <a class="el" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">SVF::PointerAnalysis</a>
|
|
1950
1947
|
, <a class="el" href="classSVF_1_1PTData.html#a9ae6037637d8b9acb323333f491f4a7d">SVF::PTData< Key, KeySet, Data, DataSet ></a>
|
|
1951
1948
|
, <a class="el" href="classSVF_1_1Steensgaard.html#adbcb9af660ab9bb0202bd32342280486">SVF::Steensgaard</a>
|
|
@@ -1958,7 +1955,7 @@ $(function() {
|
|
|
1958
1955
|
, <a class="el" href="classSVF_1_1MutablePTData.html#a8838058efe94b62553bb5416fdc2ec5b">SVF::MutablePTData< Key, KeySet, Data, DataSet ></a>
|
|
1959
1956
|
</li>
|
|
1960
1957
|
<li>getPtsSubSetMap()
|
|
1961
|
-
: <a class="el" href="classSVF_1_1IntraDisjointMRG.html#
|
|
1958
|
+
: <a class="el" href="classSVF_1_1IntraDisjointMRG.html#ad0640ef6e02d9a90964ca495c0fd8f53">SVF::IntraDisjointMRG</a>
|
|
1962
1959
|
</li>
|
|
1963
1960
|
<li>getRawProductions()
|
|
1964
1961
|
: <a class="el" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">SVF::GrammarBase</a>
|
|
@@ -2018,7 +2015,7 @@ $(function() {
|
|
|
2018
2015
|
, <a class="el" href="classSVF_1_1ICFGBuilder.html#a7c1125c992eec20e118e6bfc12cb8bfb">SVF::ICFGBuilder</a>
|
|
2019
2016
|
</li>
|
|
2020
2017
|
<li>getRetParmAtJoinedSite()
|
|
2021
|
-
: <a class="el" href="classSVF_1_1ThreadAPI.html#
|
|
2018
|
+
: <a class="el" href="classSVF_1_1ThreadAPI.html#a5439ef32c909b02c83cbd30eb0a0fe12">SVF::ThreadAPI</a>
|
|
2022
2019
|
</li>
|
|
2023
2020
|
<li>getRetPE()
|
|
2024
2021
|
: <a class="el" href="classSVF_1_1RetCFGEdge.html#af84bf360ca641711a3c625de86feb603">SVF::RetCFGEdge</a>
|
|
@@ -2223,7 +2220,7 @@ $(function() {
|
|
|
2223
2220
|
, <a class="el" href="classSVF_1_1BranchVFGNode.html#a2ef5951de4760d28adb9d82b22067360">SVF::BranchVFGNode</a>
|
|
2224
2221
|
</li>
|
|
2225
2222
|
<li>getSuccNodes()
|
|
2226
|
-
: <a class="el" href="classSVF_1_1MTASVFGBuilder.html#
|
|
2223
|
+
: <a class="el" href="classSVF_1_1MTASVFGBuilder.html#a8164ae39b494115142767abc29cebd53">SVF::MTASVFGBuilder</a>
|
|
2227
2224
|
</li>
|
|
2228
2225
|
<li>getSVFFun()
|
|
2229
2226
|
: <a class="el" href="classSVF_1_1PCG.html#ac7dd2bbd4274a5e3a6427f3b674f99ba">SVF::PCG</a>
|
|
@@ -2280,7 +2277,7 @@ $(function() {
|
|
|
2280
2277
|
: <a class="el" href="classSVF_1_1ThreadAPI.html#a58cf56e35be873a5a26c5eb0d9b5c9b3">SVF::ThreadAPI</a>
|
|
2281
2278
|
</li>
|
|
2282
2279
|
<li>getTaskFuncAtHareParForSite()
|
|
2283
|
-
: <a class="el" href="classSVF_1_1ThreadAPI.html#
|
|
2280
|
+
: <a class="el" href="classSVF_1_1ThreadAPI.html#a282d6aeab91135af4cab8195d67badf6">SVF::ThreadAPI</a>
|
|
2284
2281
|
</li>
|
|
2285
2282
|
<li>getTCG()
|
|
2286
2283
|
: <a class="el" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis</a>
|
|
@@ -2294,7 +2291,7 @@ $(function() {
|
|
|
2294
2291
|
: <a class="el" href="classSVF_1_1TCT.html#a6ac3c91742a6e9088c4e9cf1b7d2f42e">SVF::TCT</a>
|
|
2295
2292
|
</li>
|
|
2296
2293
|
<li>getTCTNode()
|
|
2297
|
-
: <a class="el" href="classSVF_1_1TCT.html#
|
|
2294
|
+
: <a class="el" href="classSVF_1_1TCT.html#aac9d98a33fbaa6defa3f847d0bbe76d6">SVF::TCT</a>
|
|
2298
2295
|
</li>
|
|
2299
2296
|
<li>getTCTNodeNum()
|
|
2300
2297
|
: <a class="el" href="classSVF_1_1TCT.html#af03bfeae7e09a9f62d96ba59632e588f">SVF::TCT</a>
|
|
@@ -190,6 +190,9 @@ $(function() {
|
|
|
190
190
|
<li>removeDpmFromLoc()
|
|
191
191
|
: <a class="el" href="classSVF_1_1DDAVFSolver.html#a00ae738a76564b7b334faae567674e34">SVF::DDAVFSolver< CVar, CPtSet, DPIm ></a>
|
|
192
192
|
</li>
|
|
193
|
+
<li>removeFirstSymbol()
|
|
194
|
+
: <a class="el" href="classSVF_1_1CFGNormalizer.html#afd29c476dad9728a10e19561e846f97e">SVF::CFGNormalizer</a>
|
|
195
|
+
</li>
|
|
193
196
|
<li>removeFront()
|
|
194
197
|
: <a class="el" href="classSVF_1_1FIFOWorkList.html#a621fe65af285665396fa10af9f96ef3a">SVF::FIFOWorkList< Data ></a>
|
|
195
198
|
</li>
|
|
@@ -377,7 +380,7 @@ $(function() {
|
|
|
377
380
|
: <a class="el" href="classSVF_1_1RetMU.html#a8cd41b018ddef450d17a20ea83ce3fee">SVF::RetMU< Cond ></a>
|
|
378
381
|
</li>
|
|
379
382
|
<li>RetPE()
|
|
380
|
-
: <a class="el" href="classSVF_1_1RetPE.html#
|
|
383
|
+
: <a class="el" href="classSVF_1_1RetPE.html#a60cb8a19e352547b22f197f4ca8e19d8">SVF::RetPE</a>
|
|
381
384
|
</li>
|
|
382
385
|
<li>retPEBegin()
|
|
383
386
|
: <a class="el" href="classSVF_1_1FormalRetVFGNode.html#ad81c6e6579293352ecb59345538b2132">SVF::FormalRetVFGNode</a>
|
|
@@ -580,7 +580,7 @@ $(function() {
|
|
|
580
580
|
: <a class="el" href="classSVF_1_1FlowSensitive.html#a8ebe4342c1496b906ee1b6450558c3e8">SVF::FlowSensitive</a>
|
|
581
581
|
</li>
|
|
582
582
|
<li>strTrans()
|
|
583
|
-
: <a class="el" href="classSVF_1_1CFGNormalizer.html#
|
|
583
|
+
: <a class="el" href="classSVF_1_1CFGNormalizer.html#a4b9b6c676ce6514ae725f543b1e07acf">SVF::CFGNormalizer</a>
|
|
584
584
|
</li>
|
|
585
585
|
<li>subNodes()
|
|
586
586
|
: <a class="el" href="classSVF_1_1SCCDetection_1_1GNodeSCCInfo.html#a48981e6555ad221d08f16ed2df708027">SVF::SCCDetection< GraphType >::GNodeSCCInfo</a>
|
|
@@ -656,7 +656,7 @@ $(function() {
|
|
|
656
656
|
: <a class="el" href="classSVF_1_1SymbolTableInfo.html#aff272bc1d00f2e57b7677d1826a31237">SVF::SymbolTableInfo</a>
|
|
657
657
|
</li>
|
|
658
658
|
<li>SymState()
|
|
659
|
-
: <a class="el" href="classSVF_1_1SymState.html#
|
|
659
|
+
: <a class="el" href="classSVF_1_1SymState.html#aee986d8fbccf71a606284d8467f450e4">SVF::SymState</a>
|
|
660
660
|
</li>
|
|
661
661
|
<li>szudzik()
|
|
662
662
|
: <a class="el" href="structSVF_1_1Hash_3_01std_1_1pair_3_01S_00_01T_01_4_01_4.html#adf5f19b1b32c117571fe74035cdcdbe2">SVF::Hash< std::pair< S, T > ></a>
|
|
@@ -987,11 +987,8 @@ $(function() {
|
|
|
987
987
|
<li>getFileName()
|
|
988
988
|
: <a class="el" href="classSVF_1_1PAGBuilderFromFile.html#aaaa1e516e5eeceece371a9178142c3ff">SVF::PAGBuilderFromFile</a>
|
|
989
989
|
</li>
|
|
990
|
-
<li>getFilledProd()
|
|
991
|
-
: <a class="el" href="classSVF_1_1CFGNormalizer.html#ab5c5efbb72cf018885e026be65c92fdf">SVF::CFGNormalizer</a>
|
|
992
|
-
</li>
|
|
993
990
|
<li>getFilledProductions()
|
|
994
|
-
: <a class="el" href="classSVF_1_1CFGNormalizer.html#
|
|
991
|
+
: <a class="el" href="classSVF_1_1CFGNormalizer.html#add319949e856049d3e898848a02a75b7">SVF::CFGNormalizer</a>
|
|
995
992
|
</li>
|
|
996
993
|
<li>getFIObjVar()
|
|
997
994
|
: <a class="el" href="classSVF_1_1ConstraintGraph.html#a7c8a29ad1d270fca745f233bb4800731">SVF::ConstraintGraph</a>
|
|
@@ -1441,7 +1438,7 @@ $(function() {
|
|
|
1441
1438
|
</li>
|
|
1442
1439
|
<li>getLockVal()
|
|
1443
1440
|
: <a class="el" href="classSVF_1_1LockAnalysis.html#a785616f9c744d7249fd1080e5ed04d29">SVF::LockAnalysis</a>
|
|
1444
|
-
, <a class="el" href="classSVF_1_1ThreadAPI.html#
|
|
1441
|
+
, <a class="el" href="classSVF_1_1ThreadAPI.html#ad1d43e47f5036138e85068a1714f6c48">SVF::ThreadAPI</a>
|
|
1445
1442
|
</li>
|
|
1446
1443
|
<li>getLocToDPMVecMap()
|
|
1447
1444
|
: <a class="el" href="classSVF_1_1DDAVFSolver.html#ad849ae4509e88832f784c748468ab959">SVF::DDAVFSolver< CVar, CPtSet, DPIm ></a>
|
|
@@ -1450,7 +1447,7 @@ $(function() {
|
|
|
1450
1447
|
: <a class="el" href="classSVF_1_1ExeState.html#a4ee40de7eca22ac055b52360e0101623">SVF::ExeState</a>
|
|
1451
1448
|
</li>
|
|
1452
1449
|
<li>getLoop()
|
|
1453
|
-
: <a class="el" href="classSVF_1_1TCT.html#
|
|
1450
|
+
: <a class="el" href="classSVF_1_1TCT.html#a71249dc399055790d86dcba6d9dd3021">SVF::TCT</a>
|
|
1454
1451
|
</li>
|
|
1455
1452
|
<li>getLoopBound()
|
|
1456
1453
|
: <a class="el" href="classSVF_1_1SVFLoop.html#ae772c9aab10b88d3c53cdf2cdb23d713">SVF::SVFLoop</a>
|
|
@@ -1511,7 +1508,7 @@ $(function() {
|
|
|
1511
1508
|
</li>
|
|
1512
1509
|
<li>getModRefInfo()
|
|
1513
1510
|
: <a class="el" href="classSVF_1_1MRGenerator.html#ac14c99ee6064fc9cf30120a83c78e702">SVF::MRGenerator</a>
|
|
1514
|
-
, <a class="el" href="classSVF_1_1WPAPass.html#
|
|
1511
|
+
, <a class="el" href="classSVF_1_1WPAPass.html#a148cd86101e402e7ed8d3b3dae151d79">SVF::WPAPass</a>
|
|
1515
1512
|
</li>
|
|
1516
1513
|
<li>getModSideEffectOfCallSite()
|
|
1517
1514
|
: <a class="el" href="classSVF_1_1MRGenerator.html#a1535832f5b1ae3178fea950bf71fdd99">SVF::MRGenerator</a>
|
|
@@ -1587,7 +1584,7 @@ $(function() {
|
|
|
1587
1584
|
: <a class="el" href="classSVF_1_1SVFG.html#a49a910bc4ea6e98d1584e74a018badc9">SVF::SVFG</a>
|
|
1588
1585
|
</li>
|
|
1589
1586
|
<li>getMUSet()
|
|
1590
|
-
: <a class="el" href="classSVF_1_1MemSSA.html#
|
|
1587
|
+
: <a class="el" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">SVF::MemSSA</a>
|
|
1591
1588
|
</li>
|
|
1592
1589
|
<li>getMutDFPTDataTy()
|
|
1593
1590
|
: <a class="el" href="classSVF_1_1BVDataPTAImpl.html#acbb979edee9427efa2a7c0dbd881c483">SVF::BVDataPTAImpl</a>
|
|
@@ -1995,11 +1992,11 @@ $(function() {
|
|
|
1995
1992
|
, <a class="el" href="classSVF_1_1MutableDFPTData.html#a4cbb9131a89c5c48367fb927693b5c6b">SVF::MutableDFPTData< Key, KeySet, Data, DataSet ></a>
|
|
1996
1993
|
, <a class="el" href="classSVF_1_1MutableDiffPTData.html#ac2f494da9379c336bb81a0dc438b5af9">SVF::MutableDiffPTData< Key, KeySet, Data, DataSet ></a>
|
|
1997
1994
|
, <a class="el" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">SVF::MutablePTData< Key, KeySet, Data, DataSet ></a>
|
|
1998
|
-
, <a class="el" href="classSVF_1_1MutableVersionedPTData.html#
|
|
1995
|
+
, <a class="el" href="classSVF_1_1MutableVersionedPTData.html#aaf519166d2e0ca3c81088b52a1cf3066">SVF::MutableVersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet ></a>
|
|
1999
1996
|
, <a class="el" href="classSVF_1_1PersistentDFPTData.html#a5f6a01d0bb40a718bc14f2cc1bb98a13">SVF::PersistentDFPTData< Key, KeySet, Data, DataSet ></a>
|
|
2000
1997
|
, <a class="el" href="classSVF_1_1PersistentDiffPTData.html#a9982ecf42416756a0729a28e8713cfed">SVF::PersistentDiffPTData< Key, KeySet, Data, DataSet ></a>
|
|
2001
1998
|
, <a class="el" href="classSVF_1_1PersistentPTData.html#a34f8226202e1654d4e67916b21ec4d99">SVF::PersistentPTData< Key, KeySet, Data, DataSet ></a>
|
|
2002
|
-
, <a class="el" href="classSVF_1_1PersistentVersionedPTData.html#
|
|
1999
|
+
, <a class="el" href="classSVF_1_1PersistentVersionedPTData.html#a9b81d20e54d08e36edbff43549b1e820">SVF::PersistentVersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet ></a>
|
|
2003
2000
|
, <a class="el" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">SVF::PointerAnalysis</a>
|
|
2004
2001
|
, <a class="el" href="classSVF_1_1PTData.html#a9ae6037637d8b9acb323333f491f4a7d">SVF::PTData< Key, KeySet, Data, DataSet ></a>
|
|
2005
2002
|
, <a class="el" href="classSVF_1_1Steensgaard.html#adbcb9af660ab9bb0202bd32342280486">SVF::Steensgaard</a>
|
|
@@ -2012,7 +2009,7 @@ $(function() {
|
|
|
2012
2009
|
, <a class="el" href="classSVF_1_1MutablePTData.html#a8838058efe94b62553bb5416fdc2ec5b">SVF::MutablePTData< Key, KeySet, Data, DataSet ></a>
|
|
2013
2010
|
</li>
|
|
2014
2011
|
<li>getPtsSubSetMap()
|
|
2015
|
-
: <a class="el" href="classSVF_1_1IntraDisjointMRG.html#
|
|
2012
|
+
: <a class="el" href="classSVF_1_1IntraDisjointMRG.html#ad0640ef6e02d9a90964ca495c0fd8f53">SVF::IntraDisjointMRG</a>
|
|
2016
2013
|
</li>
|
|
2017
2014
|
<li>getRawProductions()
|
|
2018
2015
|
: <a class="el" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">SVF::GrammarBase</a>
|
|
@@ -2072,7 +2069,7 @@ $(function() {
|
|
|
2072
2069
|
, <a class="el" href="classSVF_1_1ICFGBuilder.html#a7c1125c992eec20e118e6bfc12cb8bfb">SVF::ICFGBuilder</a>
|
|
2073
2070
|
</li>
|
|
2074
2071
|
<li>getRetParmAtJoinedSite()
|
|
2075
|
-
: <a class="el" href="classSVF_1_1ThreadAPI.html#
|
|
2072
|
+
: <a class="el" href="classSVF_1_1ThreadAPI.html#ad1c595f7b15a2d3079b9e9200c84f7d7">SVF::ThreadAPI</a>
|
|
2076
2073
|
</li>
|
|
2077
2074
|
<li>getRetPE()
|
|
2078
2075
|
: <a class="el" href="classSVF_1_1RetCFGEdge.html#af84bf360ca641711a3c625de86feb603">SVF::RetCFGEdge</a>
|
|
@@ -2284,7 +2281,7 @@ $(function() {
|
|
|
2284
2281
|
, <a class="el" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT</a>
|
|
2285
2282
|
</li>
|
|
2286
2283
|
<li>getSVFFunction()
|
|
2287
|
-
: <a class="el" href="classSVF_1_1LLVMModuleSet.html#
|
|
2284
|
+
: <a class="el" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">SVF::LLVMModuleSet</a>
|
|
2288
2285
|
, <a class="el" href="classSVF_1_1SVFModule.html#af969d7739f27c8242985656bafbabaeb">SVF::SVFModule</a>
|
|
2289
2286
|
</li>
|
|
2290
2287
|
<li>getSVFG()
|
|
@@ -2334,7 +2331,7 @@ $(function() {
|
|
|
2334
2331
|
: <a class="el" href="classSVF_1_1ThreadAPI.html#a58cf56e35be873a5a26c5eb0d9b5c9b3">SVF::ThreadAPI</a>
|
|
2335
2332
|
</li>
|
|
2336
2333
|
<li>getTaskFuncAtHareParForSite()
|
|
2337
|
-
: <a class="el" href="classSVF_1_1ThreadAPI.html#
|
|
2334
|
+
: <a class="el" href="classSVF_1_1ThreadAPI.html#a282d6aeab91135af4cab8195d67badf6">SVF::ThreadAPI</a>
|
|
2338
2335
|
</li>
|
|
2339
2336
|
<li>getTCG()
|
|
2340
2337
|
: <a class="el" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis</a>
|
|
@@ -2549,10 +2546,10 @@ $(function() {
|
|
|
2549
2546
|
: <a class="el" href="classSVF_1_1ExeState.html#ab52debe3aae77d1efd5de4d220dbed2f">SVF::ExeState</a>
|
|
2550
2547
|
</li>
|
|
2551
2548
|
<li>global_begin()
|
|
2552
|
-
: <a class="el" href="classSVF_1_1SVFModule.html#
|
|
2549
|
+
: <a class="el" href="classSVF_1_1SVFModule.html#af81c6deed3978562f83f120119c6aad2">SVF::SVFModule</a>
|
|
2553
2550
|
</li>
|
|
2554
2551
|
<li>global_end()
|
|
2555
|
-
: <a class="el" href="classSVF_1_1SVFModule.html#
|
|
2552
|
+
: <a class="el" href="classSVF_1_1SVFModule.html#a8a34164634d6ad9a7b76175907c8c44b">SVF::SVFModule</a>
|
|
2556
2553
|
</li>
|
|
2557
2554
|
<li>global_iterator
|
|
2558
2555
|
: <a class="el" href="classSVF_1_1SVFModule.html#a4cf1ca2e9f045a0520b0a8a6cd5993f2">SVF::SVFModule</a>
|