svf-tools 1.0.559 → 1.0.560

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/SVF-doxygen/html/html/CFLGrammar_8txt.html +8 -8
  2. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +10 -1
  3. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +3 -1
  4. package/SVF-doxygen/html/html/PEGGrammar_8txt.html +14 -32
  5. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder-members.html +13 -10
  6. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +190 -2
  7. package/SVF-doxygen/html/html/functions_a.html +11 -5
  8. package/SVF-doxygen/html/html/functions_c.html +21 -18
  9. package/SVF-doxygen/html/html/functions_f.html +3 -3
  10. package/SVF-doxygen/html/html/functions_func.html +16 -10
  11. package/SVF-doxygen/html/html/functions_func_c.html +19 -16
  12. package/SVF-doxygen/html/html/functions_func_s.html +1 -1
  13. package/SVF-doxygen/html/html/functions_i.html +3 -3
  14. package/SVF-doxygen/html/html/functions_l.html +3 -3
  15. package/SVF-doxygen/html/html/functions_o.html +3 -3
  16. package/SVF-doxygen/html/html/functions_p.html +3 -3
  17. package/SVF-doxygen/html/html/functions_r.html +3 -7
  18. package/SVF-doxygen/html/html/functions_s.html +18 -16
  19. package/SVF-doxygen/html/html/functions_t.html +3 -3
  20. package/SVF-doxygen/html/html/functions_v.html +3 -3
  21. package/SVF-doxygen/html/html/globals_g.html +3 -3
  22. package/SVF-doxygen/html/html/globals_v.html +1 -2
  23. package/SVF-doxygen/html/html/globals_vars.html +3 -4
  24. package/SVF-doxygen/html/html/search/all_1.js +2 -0
  25. package/SVF-doxygen/html/html/search/all_10.js +4 -4
  26. package/SVF-doxygen/html/html/search/all_11.js +1 -1
  27. package/SVF-doxygen/html/html/search/all_12.js +12 -12
  28. package/SVF-doxygen/html/html/search/all_13.js +3 -3
  29. package/SVF-doxygen/html/html/search/all_15.js +3 -3
  30. package/SVF-doxygen/html/html/search/all_3.js +1 -0
  31. package/SVF-doxygen/html/html/search/all_6.js +1 -1
  32. package/SVF-doxygen/html/html/search/all_7.js +2 -2
  33. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  34. package/SVF-doxygen/html/html/search/all_c.js +3 -3
  35. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  36. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  37. package/SVF-doxygen/html/html/search/functions_0.js +2 -0
  38. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  39. package/SVF-doxygen/html/html/search/functions_2.js +1 -0
  40. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  41. package/SVF-doxygen/html/html/search/variables_7.js +2 -2
  42. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  43. package/include/CFL/CFLGraphBuilder.h +9 -0
  44. package/include/CFL/PEGGrammar.txt +4 -8
  45. package/lib/CFL/CFLGraphBuilder.cpp +44 -0
  46. package/package.json +1 -1
@@ -64,6 +64,7 @@ $(function() {
64
64
  <div class="header">
65
65
  <div class="summary">
66
66
  <a href="#pub-methods">Public Member Functions</a> &#124;
67
+ <a href="#pri-methods">Private Member Functions</a> &#124;
67
68
  <a href="classSVF_1_1AliasCFLGraphBuilder-members.html">List of all members</a> </div>
68
69
  <div class="headertitle">
69
70
  <div class="title">SVF::AliasCFLGraphBuilder Class Reference</div> </div>
@@ -113,6 +114,17 @@ Public Member Functions</h2></td></tr>
113
114
  <tr class="memitem:a61d935099e0f8408fb2f2f91001cb2fd inherit pub_methods_classSVF_1_1CFLGraphBuilder"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt; <a class="el" href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">CFLGrammar::Kind</a>, <a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>&lt; <a class="el" href="classSVF_1_1GrammarBase.html#ab070e5449d26e347b957d8b994d0303f">CFLGrammar::Attribute</a> &gt; &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLGraphBuilder.html#a61d935099e0f8408fb2f2f91001cb2fd">getKind2AttrsMap</a> ()</td></tr>
114
115
  <tr class="separator:a61d935099e0f8408fb2f2f91001cb2fd inherit pub_methods_classSVF_1_1CFLGraphBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
115
116
  </table><table class="memberdecls">
117
+ <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
118
+ Private Member Functions</h2></td></tr>
119
+ <tr class="memitem:a9feeeca8a919b19693e48d6a382c8871"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AliasCFLGraphBuilder.html#a9feeeca8a919b19693e48d6a382c8871">connectVGep</a> (<a class="el" href="classSVF_1_1CFLGraph.html">CFLGraph</a> *cflGraph, <a class="el" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a> *graph, <a class="el" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a> *src, <a class="el" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a> *dst, <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> level, <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> *pag)</td></tr>
120
+ <tr class="separator:a9feeeca8a919b19693e48d6a382c8871"><td class="memSeparator" colspan="2">&#160;</td></tr>
121
+ <tr class="memitem:ae7a9f2103c68829290c1bd5fd9cde321"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AliasCFLGraphBuilder.html#ae7a9f2103c68829290c1bd5fd9cde321">addBiCFLEdge</a> (<a class="el" href="classSVF_1_1CFLGraph.html">CFLGraph</a> *cflGraph, <a class="el" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a> *src, <a class="el" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a> *dst, <a class="el" href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">CFLGrammar::Kind</a> label)</td></tr>
122
+ <tr class="memdesc:ae7a9f2103c68829290c1bd5fd9cde321"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handle edge except for the GEP. <a href="#ae7a9f2103c68829290c1bd5fd9cde321">More...</a><br /></td></tr>
123
+ <tr class="separator:ae7a9f2103c68829290c1bd5fd9cde321"><td class="memSeparator" colspan="2">&#160;</td></tr>
124
+ <tr class="memitem:a715213d0b521b676832ec73b38d2014e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AliasCFLGraphBuilder.html#a715213d0b521b676832ec73b38d2014e">addBiGepCFLEdge</a> (<a class="el" href="classSVF_1_1CFLGraph.html">CFLGraph</a> *cflGraph, <a class="el" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a> *src, <a class="el" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a> *dst, <a class="el" href="classSVF_1_1GrammarBase.html#ab070e5449d26e347b957d8b994d0303f">CFLGrammar::Attribute</a> attri)</td></tr>
125
+ <tr class="memdesc:a715213d0b521b676832ec73b38d2014e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add Bidirectional GEP edge with attribute. <a href="#a715213d0b521b676832ec73b38d2014e">More...</a><br /></td></tr>
126
+ <tr class="separator:a715213d0b521b676832ec73b38d2014e"><td class="memSeparator" colspan="2">&#160;</td></tr>
127
+ </table><table class="memberdecls">
116
128
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
117
129
  Additional Inherited Members</h2></td></tr>
118
130
  <tr class="inherit_header pro_types_classSVF_1_1CFLGraphBuilder"><td colspan="2" onclick="javascript:toggleInherit('pro_types_classSVF_1_1CFLGraphBuilder')"><img src="closed.png" alt="-"/>&#160;Protected Types inherited from <a class="el" href="classSVF_1_1CFLGraphBuilder.html">SVF::CFLGraphBuilder</a></td></tr>
@@ -136,6 +148,119 @@ Additional Inherited Members</h2></td></tr>
136
148
  <div class="textblock">
137
149
  <p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#l00149">149</a> of file <a class="el" href="CFLGraphBuilder_8h_source.html">CFLGraphBuilder.h</a>.</p>
138
150
  </div><h2 class="groupheader">Member Function Documentation</h2>
151
+ <a id="ae7a9f2103c68829290c1bd5fd9cde321"></a>
152
+ <h2 class="memtitle"><span class="permalink"><a href="#ae7a9f2103c68829290c1bd5fd9cde321">&#9670;&nbsp;</a></span>addBiCFLEdge()</h2>
153
+
154
+ <div class="memitem">
155
+ <div class="memproto">
156
+ <table class="mlabels">
157
+ <tr>
158
+ <td class="mlabels-left">
159
+ <table class="memname">
160
+ <tr>
161
+ <td class="memname">void SVF::AliasCFLGraphBuilder::addBiCFLEdge </td>
162
+ <td>(</td>
163
+ <td class="paramtype"><a class="el" href="classSVF_1_1CFLGraph.html">CFLGraph</a> *&#160;</td>
164
+ <td class="paramname"><em>cflGraph</em>, </td>
165
+ </tr>
166
+ <tr>
167
+ <td class="paramkey"></td>
168
+ <td></td>
169
+ <td class="paramtype"><a class="el" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a> *&#160;</td>
170
+ <td class="paramname"><em>src</em>, </td>
171
+ </tr>
172
+ <tr>
173
+ <td class="paramkey"></td>
174
+ <td></td>
175
+ <td class="paramtype"><a class="el" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a> *&#160;</td>
176
+ <td class="paramname"><em>dst</em>, </td>
177
+ </tr>
178
+ <tr>
179
+ <td class="paramkey"></td>
180
+ <td></td>
181
+ <td class="paramtype"><a class="el" href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">CFLGrammar::Kind</a>&#160;</td>
182
+ <td class="paramname"><em>label</em>&#160;</td>
183
+ </tr>
184
+ <tr>
185
+ <td></td>
186
+ <td>)</td>
187
+ <td></td><td></td>
188
+ </tr>
189
+ </table>
190
+ </td>
191
+ <td class="mlabels-right">
192
+ <span class="mlabels"><span class="mlabel">private</span></span> </td>
193
+ </tr>
194
+ </table>
195
+ </div><div class="memdoc">
196
+
197
+ <p>Handle edge except for the GEP. </p>
198
+
199
+ <p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8cpp_source.html#l00386">386</a> of file <a class="el" href="CFLGraphBuilder_8cpp_source.html">CFLGraphBuilder.cpp</a>.</p>
200
+ <div class="fragment"><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;{</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(src-&gt;getId()), cflGraph-&gt;getGNode(dst-&gt;getId()), label);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[label];</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; key.append(<span class="stringliteral">&quot;bar&quot;</span>);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(dst-&gt;getId()), cflGraph-&gt;getGNode(src-&gt;getId()), <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;}</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&lt; std::string, Kind &gt; label2KindMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00048">CFLGraphBuilder.h:48</a></div></div>
201
+ <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&lt; Kind, std::string &gt; kind2LabelMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00049">CFLGraphBuilder.h:49</a></div></div>
202
+ <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>
203
+ </div><!-- fragment -->
204
+ </div>
205
+ </div>
206
+ <a id="a715213d0b521b676832ec73b38d2014e"></a>
207
+ <h2 class="memtitle"><span class="permalink"><a href="#a715213d0b521b676832ec73b38d2014e">&#9670;&nbsp;</a></span>addBiGepCFLEdge()</h2>
208
+
209
+ <div class="memitem">
210
+ <div class="memproto">
211
+ <table class="mlabels">
212
+ <tr>
213
+ <td class="mlabels-left">
214
+ <table class="memname">
215
+ <tr>
216
+ <td class="memname">void SVF::AliasCFLGraphBuilder::addBiGepCFLEdge </td>
217
+ <td>(</td>
218
+ <td class="paramtype"><a class="el" href="classSVF_1_1CFLGraph.html">CFLGraph</a> *&#160;</td>
219
+ <td class="paramname"><em>cflGraph</em>, </td>
220
+ </tr>
221
+ <tr>
222
+ <td class="paramkey"></td>
223
+ <td></td>
224
+ <td class="paramtype"><a class="el" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a> *&#160;</td>
225
+ <td class="paramname"><em>src</em>, </td>
226
+ </tr>
227
+ <tr>
228
+ <td class="paramkey"></td>
229
+ <td></td>
230
+ <td class="paramtype"><a class="el" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a> *&#160;</td>
231
+ <td class="paramname"><em>dst</em>, </td>
232
+ </tr>
233
+ <tr>
234
+ <td class="paramkey"></td>
235
+ <td></td>
236
+ <td class="paramtype"><a class="el" href="classSVF_1_1GrammarBase.html#ab070e5449d26e347b957d8b994d0303f">CFLGrammar::Attribute</a>&#160;</td>
237
+ <td class="paramname"><em>attri</em>&#160;</td>
238
+ </tr>
239
+ <tr>
240
+ <td></td>
241
+ <td>)</td>
242
+ <td></td><td></td>
243
+ </tr>
244
+ </table>
245
+ </td>
246
+ <td class="mlabels-right">
247
+ <span class="mlabels"><span class="mlabel">private</span></span> </td>
248
+ </tr>
249
+ </table>
250
+ </div><div class="memdoc">
251
+
252
+ <p>Add Bidirectional GEP edge with attribute. </p>
253
+
254
+ <p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8cpp_source.html#l00395">395</a> of file <a class="el" href="CFLGraphBuilder_8cpp_source.html">CFLGraphBuilder.cpp</a>.</p>
255
+ <div class="fragment"><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;{</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">CFLEdge::GEdgeFlag</a> edgeLabel = <a class="code" href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">CFLGrammar::getAttributedKind</a>(attri, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375acfd0a194af0da66162545f0089eb4baa">ConstraintEdge::NormalGep</a>);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(src-&gt;getId()), cflGraph-&gt;getGNode(dst-&gt;getId()), edgeLabel);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[<a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375acfd0a194af0da66162545f0089eb4baa">ConstraintEdge::NormalGep</a>];</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; key.append(<span class="stringliteral">&quot;bar&quot;</span>);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(dst-&gt;getId()), cflGraph-&gt;getGNode(src-&gt;getId()), <a class="code" href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">CFLGrammar::getAttributedKind</a>(attri, <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]));</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;}</div><div class="ttc" id="classSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375acfd0a194af0da66162545f0089eb4baa"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375acfd0a194af0da66162545f0089eb4baa">SVF::ConstraintEdge::NormalGep</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
256
+ <div class="ttc" id="classSVF_1_1GenericEdge_html_aab8892b73370c32b48621cd1d0cce614"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">SVF::GenericEdge::GEdgeFlag</a></div><div class="ttdeci">u64_t GEdgeFlag</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00052">GenericGraph.h:52</a></div></div>
257
+ <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>
258
+ <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&lt; std::string, Kind &gt; label2KindMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00048">CFLGraphBuilder.h:48</a></div></div>
259
+ <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&lt; Kind, std::string &gt; kind2LabelMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00049">CFLGraphBuilder.h:49</a></div></div>
260
+ <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>
261
+ </div><!-- fragment -->
262
+ </div>
263
+ </div>
139
264
  <a id="ab19243c4aceffce7b257f3d8cb3050fd"></a>
140
265
  <h2 class="memtitle"><span class="permalink"><a href="#ab19243c4aceffce7b257f3d8cb3050fd">&#9670;&nbsp;</a></span>buildBigraph()</h2>
141
266
 
@@ -229,10 +354,13 @@ Additional Inherited Members</h2></td></tr>
229
354
  <p>Process Load</p>
230
355
  <p>Check Src of Load Dereference Node</p>
231
356
  <p>Add Addr Edge</p>
232
- <p>Add Copy Edge </p>
357
+ <p>Add Copy Edge</p>
358
+ <p>Handle VGep normalize to Normal Gep by connecting all geps' srcs to vgep dest Example: In Test Case: Ctest field-ptr-arith-varIdx.c.bc BFS Search the 8 LEVEL up to find the ValueNode, and the number of level search is arbitary the more the level search the more valueNode and the Vgep Dst will possivble connect </p>
233
359
 
234
360
  <p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8cpp_source.html#l00225">225</a> of file <a class="el" href="CFLGraphBuilder_8cpp_source.html">CFLGraphBuilder.cpp</a>.</p>
235
- <div class="fragment"><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;{</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; CFLGraph *cflGraph = <span class="keyword">new</span> CFLGraph(startKind);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a91f1f0e8abc8d781eaf8b1a4f025c18e">externMap</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> pairV : grammar-&gt;getTerminals())</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <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="l00232"></a><span class="lineno"> 232</span>&#160; {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert(pairV);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <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="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.insert(make_pair(pairV.second, pairV.first));</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> pairV : grammar-&gt;getNonterminals())</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <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="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert(pairV);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <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="l00247"></a><span class="lineno"> 247</span>&#160; {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.insert(make_pair(pairV.second, pairV.first));</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = graph-&gt;begin(); it!= graph-&gt;end(); it++)</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; CFLNode* node = <span class="keyword">new</span> CFLNode((*it).first);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; cflGraph-&gt;addCFLNode((*it).first, node);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = graph-&gt;begin(); it!= graph-&gt;end(); it++)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; ConstraintNode* node = (*it).second;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">for</span>(ConstraintEdge* edge : node-&gt;getOutEdges())</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">if</span> (edge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a20d6a102ddc06257a822ffffcc5a3b47">ConstraintEdge::Store</a>)</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span> (pag-&gt;isNullPtr(edge-&gt;getSrcID()))</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; ConstraintNode* Dst = edge-&gt;getDstNode();</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; ConstraintNode* DerefNode = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; CFLNode* CFLDerefNode = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge* DstInEdge : Dst-&gt;getInEdges())</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">if</span> (DstInEdge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; DerefNode = DstInEdge-&gt;getSrcNode();</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; CFLDerefNode = cflGraph-&gt;getGNode(DstInEdge-&gt;getSrcID());</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (DerefNode == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> refId = pag-&gt;addDummyValNode();</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; CFLDerefNode = <span class="keyword">new</span> CFLNode(refId);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; cflGraph-&gt;addCFLNode(refId, CFLDerefNode);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; cflGraph-&gt;addCFLEdge(CFLDerefNode, cflGraph-&gt;getGNode(edge-&gt;getDstID()), <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[<a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>];</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; key.append(<span class="stringliteral">&quot;bar&quot;</span>);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(edge-&gt;getDstID()), CFLDerefNode, <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(edge-&gt;getSrcID()), cflGraph-&gt;getGNode(CFLDerefNode-&gt;getId()), <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[<a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>];</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; key.append(<span class="stringliteral">&quot;bar&quot;</span>);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(CFLDerefNode-&gt;getId()), cflGraph-&gt;getGNode(edge-&gt;getSrcID()), <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( edge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2">ConstraintEdge::Load</a>)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; ConstraintNode* Src = edge-&gt;getSrcNode();</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; ConstraintNode* DerefNode = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; CFLNode* CFLDerefNode = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge* SrcInEdge : Src-&gt;getInEdges())</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span> (SrcInEdge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>)</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; DerefNode = SrcInEdge-&gt;getSrcNode();</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; CFLDerefNode = cflGraph-&gt;getGNode(SrcInEdge-&gt;getSrcID());</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">if</span> (DerefNode == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> refId = pag-&gt;addDummyValNode();</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; CFLDerefNode = <span class="keyword">new</span> CFLNode(refId);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; cflGraph-&gt;addCFLNode(refId, CFLDerefNode);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; cflGraph-&gt;addCFLEdge(CFLDerefNode, cflGraph-&gt;getGNode(edge-&gt;getSrcID()), <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[<a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>];</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; key.append(<span class="stringliteral">&quot;bar&quot;</span>);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(edge-&gt;getSrcID()), CFLDerefNode, <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(CFLDerefNode-&gt;getId()), cflGraph-&gt;getGNode(edge-&gt;getDstID()), <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[<a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>];</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; key.append(<span class="stringliteral">&quot;bar&quot;</span>);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(edge-&gt;getDstID()), cflGraph-&gt;getGNode(CFLDerefNode-&gt;getId()), <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">CFLGrammar::Kind</a> edgeLabel = edge-&gt;getEdgeKind();</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="comment">// Need to get the offset from the Const Edge</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="comment">// The offset present edge is only from Normal Gep CG at moment</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1NormalGepCGEdge.html#a79033645683ead9a7404cd35fd936092">NormalGepCGEdge::classof</a>(edge))</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; NormalGepCGEdge *nGepEdge = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;NormalGepCGEdge&gt;(edge);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#ab070e5449d26e347b957d8b994d0303f">CFLGrammar::Attribute</a> attr = nGepEdge-&gt;getConstantFieldIdx();</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">addAttribute</a>(edgeLabel, attr);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; edgeLabel = <a class="code" href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">CFLGrammar::getAttributedKind</a>(attr, edgeLabel);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(edge-&gt;getSrcID()), cflGraph-&gt;getGNode(edge-&gt;getDstID()), edgeLabel);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[edge-&gt;getEdgeKind()];</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; key.append(<span class="stringliteral">&quot;bar&quot;</span>); <span class="comment">// for example Gep_i should be Gepbar_i, not Gep_ibar</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(edge-&gt;getDstID()), cflGraph-&gt;getGNode(edge-&gt;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="l00344"></a><span class="lineno"> 344</span>&#160; <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="l00345"></a><span class="lineno"> 345</span>&#160; }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(edge-&gt;getSrcID()), cflGraph-&gt;getGNode(edge-&gt;getDstID()), edgeLabel);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[edge-&gt;getEdgeKind()];</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; key.append(<span class="stringliteral">&quot;bar&quot;</span>);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(edge-&gt;getDstID()), cflGraph-&gt;getGNode(edge-&gt;getSrcID()), <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> cflGraph;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;}</div><div class="ttc" id="classSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2">SVF::ConstraintEdge::Load</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
361
+ <div class="fragment"><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;{</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; CFLGraph *cflGraph = <span class="keyword">new</span> CFLGraph(startKind);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a91f1f0e8abc8d781eaf8b1a4f025c18e">externMap</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> pairV : grammar-&gt;getTerminals())</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <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="l00232"></a><span class="lineno"> 232</span>&#160; {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert(pairV);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <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="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.insert(make_pair(pairV.second, pairV.first));</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> pairV : grammar-&gt;getNonterminals())</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <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="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert(pairV);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <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="l00247"></a><span class="lineno"> 247</span>&#160; {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.insert(make_pair(pairV.second, pairV.first));</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = graph-&gt;begin(); it!= graph-&gt;end(); it++)</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; CFLNode* node = <span class="keyword">new</span> CFLNode((*it).first);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; cflGraph-&gt;addCFLNode((*it).first, node);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = graph-&gt;begin(); it!= graph-&gt;end(); it++)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; ConstraintNode* node = (*it).second;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">for</span>(ConstraintEdge* edge : node-&gt;getOutEdges())</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">if</span> (edge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a20d6a102ddc06257a822ffffcc5a3b47">ConstraintEdge::Store</a>)</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span> (pag-&gt;isNullPtr(edge-&gt;getSrcID()))</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; ConstraintNode* Dst = edge-&gt;getDstNode();</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; ConstraintNode* DerefNode = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; CFLNode* CFLDerefNode = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge* DstInEdge : Dst-&gt;getInEdges())</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">if</span> (DstInEdge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; DerefNode = DstInEdge-&gt;getSrcNode();</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; CFLDerefNode = cflGraph-&gt;getGNode(DstInEdge-&gt;getSrcID());</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (DerefNode == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> refId = pag-&gt;addDummyValNode();</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; CFLDerefNode = <span class="keyword">new</span> CFLNode(refId);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; cflGraph-&gt;addCFLNode(refId, CFLDerefNode);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; cflGraph-&gt;addCFLEdge(CFLDerefNode, cflGraph-&gt;getGNode(edge-&gt;getDstID()), <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[<a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>];</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; key.append(<span class="stringliteral">&quot;bar&quot;</span>);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(edge-&gt;getDstID()), CFLDerefNode, <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(edge-&gt;getSrcID()), cflGraph-&gt;getGNode(CFLDerefNode-&gt;getId()), <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[<a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>];</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; key.append(<span class="stringliteral">&quot;bar&quot;</span>);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(CFLDerefNode-&gt;getId()), cflGraph-&gt;getGNode(edge-&gt;getSrcID()), <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( edge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2">ConstraintEdge::Load</a>)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; ConstraintNode* Src = edge-&gt;getSrcNode();</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; ConstraintNode* DerefNode = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; CFLNode* CFLDerefNode = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge* SrcInEdge : Src-&gt;getInEdges())</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span> (SrcInEdge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>)</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; DerefNode = SrcInEdge-&gt;getSrcNode();</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; CFLDerefNode = cflGraph-&gt;getGNode(SrcInEdge-&gt;getSrcID());</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">if</span> (DerefNode == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> refId = pag-&gt;addDummyValNode();</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; CFLDerefNode = <span class="keyword">new</span> CFLNode(refId);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; cflGraph-&gt;addCFLNode(refId, CFLDerefNode);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; cflGraph-&gt;addCFLEdge(CFLDerefNode, cflGraph-&gt;getGNode(edge-&gt;getSrcID()), <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[<a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>];</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; key.append(<span class="stringliteral">&quot;bar&quot;</span>);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(edge-&gt;getSrcID()), CFLDerefNode, <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(CFLDerefNode-&gt;getId()), cflGraph-&gt;getGNode(edge-&gt;getDstID()), <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[<a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>];</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; key.append(<span class="stringliteral">&quot;bar&quot;</span>);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(edge-&gt;getDstID()), cflGraph-&gt;getGNode(CFLDerefNode-&gt;getId()), <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( edge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375ae5df3ce07dd670b48916f7b8ab33ae5a">ConstraintEdge::VariantGep</a>)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="classSVF_1_1AliasCFLGraphBuilder.html#a9feeeca8a919b19693e48d6a382c8871">connectVGep</a>(cflGraph, graph, edge-&gt;getSrcNode(), edge-&gt;getDstNode(), 8, pag);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">CFLGrammar::Kind</a> edgeLabel = edge-&gt;getEdgeKind();</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="comment">// Need to get the offset from the Const Edge</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="comment">// The offset present edge is only from Normal Gep CG at moment</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1NormalGepCGEdge.html#a79033645683ead9a7404cd35fd936092">NormalGepCGEdge::classof</a>(edge))</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; NormalGepCGEdge *nGepEdge = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;NormalGepCGEdge&gt;(edge);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#ab070e5449d26e347b957d8b994d0303f">CFLGrammar::Attribute</a> attr = nGepEdge-&gt;getConstantFieldIdx();</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">addAttribute</a>(edgeLabel, attr);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; edgeLabel = <a class="code" href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">CFLGrammar::getAttributedKind</a>(attr, edgeLabel);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(edge-&gt;getSrcID()), cflGraph-&gt;getGNode(edge-&gt;getDstID()), edgeLabel);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[edge-&gt;getEdgeKind()];</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; key.append(<span class="stringliteral">&quot;bar&quot;</span>); <span class="comment">// for example Gep_i should be Gepbar_i, not Gep_ibar</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(edge-&gt;getDstID()), cflGraph-&gt;getGNode(edge-&gt;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="l00352"></a><span class="lineno"> 352</span>&#160; <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="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(edge-&gt;getSrcID()), cflGraph-&gt;getGNode(edge-&gt;getDstID()), edgeLabel);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[edge-&gt;getEdgeKind()];</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; key.append(<span class="stringliteral">&quot;bar&quot;</span>);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; cflGraph-&gt;addCFLEdge(cflGraph-&gt;getGNode(edge-&gt;getDstID()), cflGraph-&gt;getGNode(edge-&gt;getSrcID()), <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; }</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">return</span> cflGraph;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;}</div><div class="ttc" id="classSVF_1_1AliasCFLGraphBuilder_html_a9feeeca8a919b19693e48d6a382c8871"><div class="ttname"><a href="classSVF_1_1AliasCFLGraphBuilder.html#a9feeeca8a919b19693e48d6a382c8871">SVF::AliasCFLGraphBuilder::connectVGep</a></div><div class="ttdeci">void connectVGep(CFLGraph *cflGraph, ConstraintGraph *graph, ConstraintNode *src, ConstraintNode *dst, u32_t level, SVFIR *pag)</div></div>
362
+ <div class="ttc" id="classSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375ae5df3ce07dd670b48916f7b8ab33ae5a"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375ae5df3ce07dd670b48916f7b8ab33ae5a">SVF::ConstraintEdge::VariantGep</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
363
+ <div class="ttc" id="classSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2">SVF::ConstraintEdge::Load</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
236
364
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
237
365
  <div class="ttc" id="classSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">SVF::ConstraintEdge::Addr</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
238
366
  <div class="ttc" id="classSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">SVF::ConstraintEdge::Copy</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
@@ -248,6 +376,66 @@ Additional Inherited Members</h2></td></tr>
248
376
  <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>
249
377
  <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#l00051">CFLGraphBuilder.h:51</a></div></div>
250
378
  </div><!-- fragment -->
379
+ </div>
380
+ </div>
381
+ <a id="a9feeeca8a919b19693e48d6a382c8871"></a>
382
+ <h2 class="memtitle"><span class="permalink"><a href="#a9feeeca8a919b19693e48d6a382c8871">&#9670;&nbsp;</a></span>connectVGep()</h2>
383
+
384
+ <div class="memitem">
385
+ <div class="memproto">
386
+ <table class="mlabels">
387
+ <tr>
388
+ <td class="mlabels-left">
389
+ <table class="memname">
390
+ <tr>
391
+ <td class="memname">void SVF::AliasCFLGraphBuilder::connectVGep </td>
392
+ <td>(</td>
393
+ <td class="paramtype"><a class="el" href="classSVF_1_1CFLGraph.html">CFLGraph</a> *&#160;</td>
394
+ <td class="paramname"><em>cflGraph</em>, </td>
395
+ </tr>
396
+ <tr>
397
+ <td class="paramkey"></td>
398
+ <td></td>
399
+ <td class="paramtype"><a class="el" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a> *&#160;</td>
400
+ <td class="paramname"><em>graph</em>, </td>
401
+ </tr>
402
+ <tr>
403
+ <td class="paramkey"></td>
404
+ <td></td>
405
+ <td class="paramtype"><a class="el" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a> *&#160;</td>
406
+ <td class="paramname"><em>src</em>, </td>
407
+ </tr>
408
+ <tr>
409
+ <td class="paramkey"></td>
410
+ <td></td>
411
+ <td class="paramtype"><a class="el" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a> *&#160;</td>
412
+ <td class="paramname"><em>dst</em>, </td>
413
+ </tr>
414
+ <tr>
415
+ <td class="paramkey"></td>
416
+ <td></td>
417
+ <td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td>
418
+ <td class="paramname"><em>level</em>, </td>
419
+ </tr>
420
+ <tr>
421
+ <td class="paramkey"></td>
422
+ <td></td>
423
+ <td class="paramtype"><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> *&#160;</td>
424
+ <td class="paramname"><em>pag</em>&#160;</td>
425
+ </tr>
426
+ <tr>
427
+ <td></td>
428
+ <td>)</td>
429
+ <td></td><td></td>
430
+ </tr>
431
+ </table>
432
+ </td>
433
+ <td class="mlabels-right">
434
+ <span class="mlabels"><span class="mlabel">private</span></span> </td>
435
+ </tr>
436
+ </table>
437
+ </div><div class="memdoc">
438
+
251
439
  </div>
252
440
  </div>
253
441
  <hr/>The documentation for this class was generated from the following files:<ul>
@@ -186,6 +186,12 @@ $(function() {
186
186
  <li>addBBSuccessorPos()
187
187
  : <a class="el" href="classSVF_1_1SVFModule.html#a556482926cf0253ca290dc4a4a52bffa">SVF::SVFModule</a>
188
188
  </li>
189
+ <li>addBiCFLEdge()
190
+ : <a class="el" href="classSVF_1_1AliasCFLGraphBuilder.html#ae7a9f2103c68829290c1bd5fd9cde321">SVF::AliasCFLGraphBuilder</a>
191
+ </li>
192
+ <li>addBiGepCFLEdge()
193
+ : <a class="el" href="classSVF_1_1AliasCFLGraphBuilder.html#a715213d0b521b676832ec73b38d2014e">SVF::AliasCFLGraphBuilder</a>
194
+ </li>
189
195
  <li>addBinaryOPEdge()
190
196
  : <a class="el" href="classSVF_1_1SVFIRBuilder.html#a3f954c61381fe31088e791772c334105">SVF::SVFIRBuilder</a>
191
197
  </li>
@@ -722,7 +728,7 @@ $(function() {
722
728
  , <a class="el" href="classSVF_1_1PersistentDFPTData.html#a95df7d565ba8e990b61b1c932c8d4273">SVF::PersistentDFPTData&lt; Key, KeySet, Data, DataSet &gt;</a>
723
729
  , <a class="el" href="classSVF_1_1PersistentDiffPTData.html#a9f748619f67f3ff9c4c4a429e6614989">SVF::PersistentDiffPTData&lt; Key, KeySet, Data, DataSet &gt;</a>
724
730
  , <a class="el" href="classSVF_1_1PersistentPTData.html#a8d53322eadc657ed88a8b724647070b2">SVF::PersistentPTData&lt; Key, KeySet, Data, DataSet &gt;</a>
725
- , <a class="el" href="classSVF_1_1PersistentVersionedPTData.html#ae4877cf4db5b1da5e7d05fe65ae8ed32">SVF::PersistentVersionedPTData&lt; Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet &gt;</a>
731
+ , <a class="el" href="classSVF_1_1PersistentVersionedPTData.html#a7f3730473af9218bea520ec0498fb4ac">SVF::PersistentVersionedPTData&lt; Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet &gt;</a>
726
732
  , <a class="el" href="classSVF_1_1PTData.html#ac1b9dc035fb0bdf468c7d14b9f9d437a">SVF::PTData&lt; Key, KeySet, Data, DataSet &gt;</a>
727
733
  , <a class="el" href="classSVF_1_1VersionedPTData.html#ae00316730227769a39b22d3df1b6d38a">SVF::VersionedPTData&lt; Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet &gt;</a>
728
734
  </li>
@@ -824,7 +830,7 @@ $(function() {
824
830
  : <a class="el" href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0">SVF::ConstraintGraph</a>
825
831
  </li>
826
832
  <li>AddStoreCHI()
827
- : <a class="el" href="classSVF_1_1MemSSA.html#a8d9bfa2ad724a3b286edc56b7c15e9bf">SVF::MemSSA</a>
833
+ : <a class="el" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">SVF::MemSSA</a>
828
834
  </li>
829
835
  <li>addStoreEdge()
830
836
  : <a class="el" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">SVF::SVFIRBuilder</a>
@@ -952,7 +958,7 @@ $(function() {
952
958
  : <a class="el" href="classSVF_1_1VFG.html#a65c88a6c20380b715ac8b6c31e68afed">SVF::VFG</a>
953
959
  </li>
954
960
  <li>addValNode()
955
- : <a class="el" href="classSVF_1_1SVFIR.html#a93bc14960cdd4eb345c64e9b79757ccf">SVF::SVFIR</a>
961
+ : <a class="el" href="classSVF_1_1SVFIR.html#a3face8a526a33d82ef7cde7602030bc9">SVF::SVFIR</a>
956
962
  </li>
957
963
  <li>addVarargNode()
958
964
  : <a class="el" href="classSVF_1_1SVFIR.html#a6ade5bf3edc7b6c3faafc3e5ff3d0538">SVF::SVFIR</a>
@@ -989,7 +995,7 @@ $(function() {
989
995
  : <a class="el" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html#a346d500f11666f4746237f42a8d67fc1">SVF::SparseBitVector&lt; ElementSize &gt;::SparseBitVectorIterator</a>
990
996
  </li>
991
997
  <li>alias()
992
- : <a class="el" href="classSVF_1_1BVDataPTAImpl.html#adaba5a41a60e32d18d964bdb8ae5b2df">SVF::BVDataPTAImpl</a>
998
+ : <a class="el" href="classSVF_1_1BVDataPTAImpl.html#a949533e5c99698c7f9862aae5de23687">SVF::BVDataPTAImpl</a>
993
999
  , <a class="el" href="classSVF_1_1CFLAlias.html#afb96040a903b9b889fcf23b26cb4565a">SVF::CFLAlias</a>
994
1000
  , <a class="el" href="classSVF_1_1CondPTAImpl.html#ac18e1dc9c6fc8cc952f67a93c2491876">SVF::CondPTAImpl&lt; Cond &gt;</a>
995
1001
  , <a class="el" href="classSVF_1_1DDAPass.html#a96de481dd2af7b39428aff38158c1d4e">SVF::DDAPass</a>
@@ -1268,7 +1274,7 @@ $(function() {
1268
1274
  : <a class="el" href="classSVF_1_1Z3Expr.html#a5c3347a21592e43e36d421ea5cae6bc9">SVF::Z3Expr</a>
1269
1275
  </li>
1270
1276
  <li>AssignStmt()
1271
- : <a class="el" href="classSVF_1_1AssignStmt.html#aff4c35109790daed3c6170c985153620">SVF::AssignStmt</a>
1277
+ : <a class="el" href="classSVF_1_1AssignStmt.html#a41bf9092cbdfccb9724bd58e10aa51a6">SVF::AssignStmt</a>
1272
1278
  </li>
1273
1279
  <li>atEnd
1274
1280
  : <a class="el" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ad22614f30570619802e23715d1d5eaf0">SVF::CondPointsToSet&lt; Cond &gt;::CondPtsSetIterator</a>