svf-tools 1.0.463 → 1.0.466

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 (129) hide show
  1. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +6 -6
  2. package/SVF-doxygen/html/html/BDDExpr_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
  6. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +3 -3
  8. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  9. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
  10. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +2 -2
  12. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/MSSAMuChi_8h.html +7 -1
  17. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -1
  18. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +10 -1
  22. package/SVF-doxygen/html/html/Options_8cpp_source.html +40 -39
  23. package/SVF-doxygen/html/html/Options_8h_source.html +41 -40
  24. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +2 -2
  26. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
  27. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp.html +86 -0
  28. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +125 -0
  29. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +48 -43
  30. package/SVF-doxygen/html/html/SVFG_8h_source.html +41 -38
  31. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -1
  32. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -2
  33. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -2
  34. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +2 -2
  35. package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
  36. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  37. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
  38. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +2 -2
  39. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +5 -5
  40. package/SVF-doxygen/html/html/classSVF_1_1BDDExprManager.html +2 -2
  41. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +1 -1
  42. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
  43. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +1 -1
  44. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
  45. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +4 -4
  46. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +7 -7
  47. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +2 -2
  48. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -2
  49. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
  50. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +1 -1
  51. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  52. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +1 -1
  53. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
  54. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +3 -3
  55. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +7 -7
  56. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +1 -1
  57. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +55 -54
  58. package/SVF-doxygen/html/html/classSVF_1_1Options.html +90 -64
  59. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +1 -1
  60. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +91 -88
  61. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +299 -113
  62. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +2 -2
  63. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +100 -97
  64. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +18 -12
  65. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +1 -1
  66. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  67. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +3 -3
  68. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +2 -2
  69. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +4 -4
  70. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +2 -2
  71. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  72. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +2 -2
  73. package/SVF-doxygen/html/html/dir_1870ebf480d659cc38d2dd7ac3aa8993.html +2 -0
  74. package/SVF-doxygen/html/html/files.html +4 -3
  75. package/SVF-doxygen/html/html/functions_c.html +5 -9
  76. package/SVF-doxygen/html/html/functions_func_g.html +7 -4
  77. package/SVF-doxygen/html/html/functions_func_r.html +7 -4
  78. package/SVF-doxygen/html/html/functions_func_w.html +1 -0
  79. package/SVF-doxygen/html/html/functions_g.html +10 -10
  80. package/SVF-doxygen/html/html/functions_l.html +3 -3
  81. package/SVF-doxygen/html/html/functions_n.html +3 -3
  82. package/SVF-doxygen/html/html/functions_o.html +17 -17
  83. package/SVF-doxygen/html/html/functions_p.html +10 -10
  84. package/SVF-doxygen/html/html/functions_r.html +9 -3
  85. package/SVF-doxygen/html/html/functions_s.html +14 -14
  86. package/SVF-doxygen/html/html/functions_t.html +4 -4
  87. package/SVF-doxygen/html/html/functions_v.html +3 -3
  88. package/SVF-doxygen/html/html/functions_vars_g.html +0 -3
  89. package/SVF-doxygen/html/html/functions_vars_r.html +3 -0
  90. package/SVF-doxygen/html/html/functions_vars_w.html +3 -0
  91. package/SVF-doxygen/html/html/functions_w.html +4 -0
  92. package/SVF-doxygen/html/html/globals_s.html +1 -3
  93. package/SVF-doxygen/html/html/namespaceSVF.html +40 -1
  94. package/SVF-doxygen/html/html/namespacemembers_o.html +1 -1
  95. package/SVF-doxygen/html/html/search/all_10.js +6 -6
  96. package/SVF-doxygen/html/html/search/all_12.js +5 -3
  97. package/SVF-doxygen/html/html/search/all_13.js +13 -12
  98. package/SVF-doxygen/html/html/search/all_14.js +5 -5
  99. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  100. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  101. package/SVF-doxygen/html/html/search/all_17.js +2 -1
  102. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  103. package/SVF-doxygen/html/html/search/all_7.js +1 -1
  104. package/SVF-doxygen/html/html/search/all_c.js +1 -1
  105. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  106. package/SVF-doxygen/html/html/search/all_e.js +5 -5
  107. package/SVF-doxygen/html/html/search/all_f.js +4 -4
  108. package/SVF-doxygen/html/html/search/files_d.js +1 -0
  109. package/SVF-doxygen/html/html/search/functions_14.js +1 -1
  110. package/SVF-doxygen/html/html/search/functions_6.js +1 -0
  111. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  112. package/SVF-doxygen/html/html/search/functions_f.js +1 -0
  113. package/SVF-doxygen/html/html/search/variables_12.js +1 -0
  114. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  115. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  116. package/SVF-doxygen/html/html/search/variables_17.js +2 -1
  117. package/SVF-doxygen/html/html/search/variables_7.js +0 -1
  118. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  119. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +20 -20
  120. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
  121. package/include/Graphs/SVFG.h +4 -0
  122. package/include/MSSA/MSSAMuChi.h +1 -0
  123. package/include/Util/Options.h +3 -3
  124. package/lib/Graphs/SVFG.cpp +31 -27
  125. package/lib/Graphs/SVFGReadWrite.cpp +478 -0
  126. package/lib/MSSA/MemRegion.cpp +7 -0
  127. package/lib/Util/Options.cpp +11 -8
  128. package/lib/WPA/TypeAnalysis.cpp +1 -1
  129. package/package.json +1 -1
@@ -261,6 +261,12 @@ Public Member Functions</h2></td></tr>
261
261
  <tr class="separator:ac965abfbe9bdc872f98b36a171a7b5aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
262
262
  <tr class="memitem:a8dd513e8e5343beeb5d117c1ff4e45ea"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classSVF_1_1DummyVersionPropSVFGNode.html">DummyVersionPropSVFGNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFG.html#a8dd513e8e5343beeb5d117c1ff4e45ea">addDummyVersionPropSVFGNode</a> (const <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> object, const <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> version)</td></tr>
263
263
  <tr class="separator:a8dd513e8e5343beeb5d117c1ff4e45ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
264
+ <tr class="memitem:a7ce9ec638995467c211958262be08ee1"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFG.html#a7ce9ec638995467c211958262be08ee1">writeToFile</a> (const std::string &amp;filename)</td></tr>
265
+ <tr class="separator:a7ce9ec638995467c211958262be08ee1"><td class="memSeparator" colspan="2">&#160;</td></tr>
266
+ <tr class="memitem:a9da50b8f467066b478143af64f7c9858"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFG.html#a9da50b8f467066b478143af64f7c9858">readFile</a> (const std::string &amp;filename)</td></tr>
267
+ <tr class="separator:a9da50b8f467066b478143af64f7c9858"><td class="memSeparator" colspan="2">&#160;</td></tr>
268
+ <tr class="memitem:a910298ed854a6b88b9dae44181ca72de"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classSVF_1_1MRVer.html">MRVer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFG.html#a910298ed854a6b88b9dae44181ca72de">getMRVERFromString</a> (const std::string &amp;input)</td></tr>
269
+ <tr class="separator:a910298ed854a6b88b9dae44181ca72de"><td class="memSeparator" colspan="2">&#160;</td></tr>
264
270
  <tr><td colspan="2"><div class="groupHeader"></div></td></tr>
265
271
  <tr class="memitem:a21577bc4b4e55b23aa55083f5321b399"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFG.html#a21577bc4b4e55b23aa55083f5321b399">hasActualINSVFGNodes</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cs) const</td></tr>
266
272
  <tr class="memdesc:a21577bc4b4e55b23aa55083f5321b399"><td class="mdescLeft">&#160;</td><td class="mdescRight">Has a SVFGNode. <a href="#a21577bc4b4e55b23aa55083f5321b399">More...</a><br /></td></tr>
@@ -1199,11 +1205,11 @@ Additional Inherited Members</h2></td></tr>
1199
1205
 
1200
1206
  <p>Add memory callsite mu <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node. </p>
1201
1207
 
1202
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00410">410</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
1203
- <div class="fragment"><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; ActualINSVFGNode* sNode = <span class="keyword">new</span> ActualINSVFGNode(nodeId, callsite, ver);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode,<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(callsite-&gt;getCallSite()));</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#af9313ebec4a52fd887169b7c6373a7d4">callSiteToActualINMap</a>[callsite].set(sNode-&gt;getId());</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_af9313ebec4a52fd887169b7c6373a7d4"><div class="ttname"><a href="classSVF_1_1SVFG.html#af9313ebec4a52fd887169b7c6373a7d4">SVF::SVFG::callSiteToActualINMap</a></div><div class="ttdeci">CallSiteToActualINsMapTy callSiteToActualINMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00100">SVFG.h:100</a></div></div>
1208
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00414">414</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
1209
+ <div class="fragment"><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; {</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; ActualINSVFGNode* sNode = <span class="keyword">new</span> ActualINSVFGNode(nodeId, callsite, ver);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode,<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(callsite-&gt;getCallSite()));</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#af9313ebec4a52fd887169b7c6373a7d4">callSiteToActualINMap</a>[callsite].set(sNode-&gt;getId());</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_af9313ebec4a52fd887169b7c6373a7d4"><div class="ttname"><a href="classSVF_1_1SVFG.html#af9313ebec4a52fd887169b7c6373a7d4">SVF::SVFG::callSiteToActualINMap</a></div><div class="ttdeci">CallSiteToActualINsMapTy callSiteToActualINMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00100">SVFG.h:100</a></div></div>
1204
1210
  <div class="ttc" id="classSVF_1_1ICFG_html_adc66b547720b9271e6805edea0b9d01f"><div class="ttname"><a href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00223">ICFG.cpp:223</a></div></div>
1205
1211
  <div class="ttc" id="classSVF_1_1VFG_html_a25c2bbbc2e966e2aaa59a5b83363557a"><div class="ttname"><a href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">SVF::VFG::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00104">VFG.h:104</a></div></div>
1206
- <div class="ttc" id="classSVF_1_1SVFG_html_a88e1f6f77421c5274ceeb14928bdcb43"><div class="ttname"><a href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">SVF::SVFG::addSVFGNode</a></div><div class="ttdeci">virtual void addSVFGNode(SVFGNode *node, ICFGNode *icfgNode)</div><div class="ttdoc">Add SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00387">SVFG.h:387</a></div></div>
1212
+ <div class="ttc" id="classSVF_1_1SVFG_html_a88e1f6f77421c5274ceeb14928bdcb43"><div class="ttname"><a href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">SVF::SVFG::addSVFGNode</a></div><div class="ttdeci">virtual void addSVFGNode(SVFGNode *node, ICFGNode *icfgNode)</div><div class="ttdoc">Add SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00391">SVFG.h:391</a></div></div>
1207
1213
  <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
1208
1214
  </div><!-- fragment -->
1209
1215
  </div>
@@ -1250,12 +1256,12 @@ Additional Inherited Members</h2></td></tr>
1250
1256
 
1251
1257
  <p>Add memory callsite chi <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node. </p>
1252
1258
 
1253
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00418">418</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
1254
- <div class="fragment"><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; ActualOUTSVFGNode* sNode = <span class="keyword">new</span> ActualOUTSVFGNode(nodeId, callsite, resVer);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode, <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">getRetICFGNode</a>(callsite-&gt;getCallSite()));</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>(resVer,sNode);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a39873b954b6e0eb0641f56ca4cd06ef9">callSiteToActualOUTMap</a>[callsite].set(sNode-&gt;getId());</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_a39873b954b6e0eb0641f56ca4cd06ef9"><div class="ttname"><a href="classSVF_1_1SVFG.html#a39873b954b6e0eb0641f56ca4cd06ef9">SVF::SVFG::callSiteToActualOUTMap</a></div><div class="ttdeci">CallSiteToActualOUTsMapTy callSiteToActualOUTMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00101">SVFG.h:101</a></div></div>
1259
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00422">422</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
1260
+ <div class="fragment"><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; ActualOUTSVFGNode* sNode = <span class="keyword">new</span> ActualOUTSVFGNode(nodeId, callsite, resVer);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode, <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">getRetICFGNode</a>(callsite-&gt;getCallSite()));</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>(resVer,sNode);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a39873b954b6e0eb0641f56ca4cd06ef9">callSiteToActualOUTMap</a>[callsite].set(sNode-&gt;getId());</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_a39873b954b6e0eb0641f56ca4cd06ef9"><div class="ttname"><a href="classSVF_1_1SVFG.html#a39873b954b6e0eb0641f56ca4cd06ef9">SVF::SVFG::callSiteToActualOUTMap</a></div><div class="ttdeci">CallSiteToActualOUTsMapTy callSiteToActualOUTMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00101">SVFG.h:101</a></div></div>
1255
1261
  <div class="ttc" id="classSVF_1_1ICFG_html_a66cb50d8c176f800f06d9cb8924eb896"><div class="ttname"><a href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">SVF::ICFG::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00236">ICFG.cpp:236</a></div></div>
1256
1262
  <div class="ttc" id="classSVF_1_1VFG_html_a25c2bbbc2e966e2aaa59a5b83363557a"><div class="ttname"><a href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">SVF::VFG::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00104">VFG.h:104</a></div></div>
1257
- <div class="ttc" id="classSVF_1_1SVFG_html_accd1cbd26c9b194971f3107a57a0ab2e"><div class="ttname"><a href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">SVF::SVFG::setDef</a></div><div class="ttdeci">void setDef(const PAGNode *pagNode, const SVFGNode *node)</div><div class="ttdoc">Given a PAGNode, set/get its def SVFG node (definition of top level pointers) </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00342">SVFG.h:342</a></div></div>
1258
- <div class="ttc" id="classSVF_1_1SVFG_html_a88e1f6f77421c5274ceeb14928bdcb43"><div class="ttname"><a href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">SVF::SVFG::addSVFGNode</a></div><div class="ttdeci">virtual void addSVFGNode(SVFGNode *node, ICFGNode *icfgNode)</div><div class="ttdoc">Add SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00387">SVFG.h:387</a></div></div>
1263
+ <div class="ttc" id="classSVF_1_1SVFG_html_accd1cbd26c9b194971f3107a57a0ab2e"><div class="ttname"><a href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">SVF::SVFG::setDef</a></div><div class="ttdeci">void setDef(const PAGNode *pagNode, const SVFGNode *node)</div><div class="ttdoc">Given a PAGNode, set/get its def SVFG node (definition of top level pointers) </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00346">SVFG.h:346</a></div></div>
1264
+ <div class="ttc" id="classSVF_1_1SVFG_html_a88e1f6f77421c5274ceeb14928bdcb43"><div class="ttname"><a href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">SVF::SVFG::addSVFGNode</a></div><div class="ttdeci">virtual void addSVFGNode(SVFGNode *node, ICFGNode *icfgNode)</div><div class="ttdoc">Add SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00391">SVFG.h:391</a></div></div>
1259
1265
  <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
1260
1266
  </div><!-- fragment -->
1261
1267
  </div>
@@ -1306,8 +1312,8 @@ Additional Inherited Members</h2></td></tr>
1306
1312
  </table>
1307
1313
  </div><div class="memdoc">
1308
1314
 
1309
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00498">498</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1310
- <div class="fragment"><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;{</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(srcId);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(dstId);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(srcNode,dstNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a978c857fcc06d2f988bc9ce16ce10145">SVFGEdge::CallIndVF</a>,csId))</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;CallIndSVFGEdge&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;this should be a indirect value flow edge!&quot;</span>);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">return</span> (SVFUtil::cast&lt;CallIndSVFGEdge&gt;(edge)-&gt;addPointsTo(cpts) ? edge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="classSVF_1_1CallIndSVFGEdge.html">CallIndSVFGEdge</a>* callEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CallIndSVFGEdge.html">CallIndSVFGEdge</a>(srcNode,dstNode,csId);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; callEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">addPointsTo</a>(cpts);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">addSVFGEdge</a>(callEdge) ? callEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;}</div><div class="ttc" id="classSVF_1_1VFG_html_ad86631f70bd702b5635bdbeab7d884b9"><div class="ttname"><a href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">SVF::VFG::hasInterVFGEdge</a></div><div class="ttdeci">VFGEdge * hasInterVFGEdge(VFGNode *src, VFGNode *dst, VFGEdge::VFGEdgeK kind, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00892">VFG.cpp:892</a></div></div>
1315
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00502">502</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1316
+ <div class="fragment"><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;{</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(srcId);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(dstId);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(srcNode,dstNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a978c857fcc06d2f988bc9ce16ce10145">SVFGEdge::CallIndVF</a>,csId))</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;CallIndSVFGEdge&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;this should be a indirect value flow edge!&quot;</span>);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">return</span> (SVFUtil::cast&lt;CallIndSVFGEdge&gt;(edge)-&gt;addPointsTo(cpts) ? edge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; }</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <a class="code" href="classSVF_1_1CallIndSVFGEdge.html">CallIndSVFGEdge</a>* callEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CallIndSVFGEdge.html">CallIndSVFGEdge</a>(srcNode,dstNode,csId);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; callEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">addPointsTo</a>(cpts);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">addSVFGEdge</a>(callEdge) ? callEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;}</div><div class="ttc" id="classSVF_1_1VFG_html_ad86631f70bd702b5635bdbeab7d884b9"><div class="ttname"><a href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">SVF::VFG::hasInterVFGEdge</a></div><div class="ttdeci">VFGEdge * hasInterVFGEdge(VFGNode *src, VFGNode *dst, VFGEdge::VFGEdgeK kind, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00892">VFG.cpp:892</a></div></div>
1311
1317
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
1312
1318
  <div class="ttc" id="classSVF_1_1CallIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00126">SVFGEdge.h:126</a></div></div>
1313
1319
  <div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00150">SVFG.h:150</a></div></div>
@@ -1402,12 +1408,12 @@ Additional Inherited Members</h2></td></tr>
1402
1408
 
1403
1409
  <p>Add memory Function entry chi <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node. </p>
1404
1410
 
1405
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00393">393</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
1406
- <div class="fragment"><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; FormalINSVFGNode* sNode = <span class="keyword">new</span> FormalINSVFGNode(nodeId, resVer, funEntry);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode, <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(funEntry-&gt;getFun()));</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>(resVer,sNode);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ae51cd0493e4e767848b96b69045762fd">funToFormalINMap</a>[funEntry-&gt;getFun()].set(sNode-&gt;getId());</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_ae51cd0493e4e767848b96b69045762fd"><div class="ttname"><a href="classSVF_1_1SVFG.html#ae51cd0493e4e767848b96b69045762fd">SVF::SVFG::funToFormalINMap</a></div><div class="ttdeci">FunctionToFormalINsMapTy funToFormalINMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00102">SVFG.h:102</a></div></div>
1411
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00397">397</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
1412
+ <div class="fragment"><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; FormalINSVFGNode* sNode = <span class="keyword">new</span> FormalINSVFGNode(nodeId, resVer, funEntry);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode, <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(funEntry-&gt;getFun()));</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>(resVer,sNode);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ae51cd0493e4e767848b96b69045762fd">funToFormalINMap</a>[funEntry-&gt;getFun()].set(sNode-&gt;getId());</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_ae51cd0493e4e767848b96b69045762fd"><div class="ttname"><a href="classSVF_1_1SVFG.html#ae51cd0493e4e767848b96b69045762fd">SVF::SVFG::funToFormalINMap</a></div><div class="ttdeci">FunctionToFormalINsMapTy funToFormalINMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00102">SVFG.h:102</a></div></div>
1407
1413
  <div class="ttc" id="classSVF_1_1VFG_html_a25c2bbbc2e966e2aaa59a5b83363557a"><div class="ttname"><a href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">SVF::VFG::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00104">VFG.h:104</a></div></div>
1408
- <div class="ttc" id="classSVF_1_1SVFG_html_accd1cbd26c9b194971f3107a57a0ab2e"><div class="ttname"><a href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">SVF::SVFG::setDef</a></div><div class="ttdeci">void setDef(const PAGNode *pagNode, const SVFGNode *node)</div><div class="ttdoc">Given a PAGNode, set/get its def SVFG node (definition of top level pointers) </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00342">SVFG.h:342</a></div></div>
1414
+ <div class="ttc" id="classSVF_1_1SVFG_html_accd1cbd26c9b194971f3107a57a0ab2e"><div class="ttname"><a href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">SVF::SVFG::setDef</a></div><div class="ttdeci">void setDef(const PAGNode *pagNode, const SVFGNode *node)</div><div class="ttdoc">Given a PAGNode, set/get its def SVFG node (definition of top level pointers) </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00346">SVFG.h:346</a></div></div>
1409
1415
  <div class="ttc" id="classSVF_1_1ICFG_html_a0dca4655c2f6112a5be1f921b8e81076"><div class="ttname"><a href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">SVF::ICFG::getFunEntryICFGNode</a></div><div class="ttdeci">FunEntryICFGNode * getFunEntryICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function entry node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00256">ICFG.cpp:256</a></div></div>
1410
- <div class="ttc" id="classSVF_1_1SVFG_html_a88e1f6f77421c5274ceeb14928bdcb43"><div class="ttname"><a href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">SVF::SVFG::addSVFGNode</a></div><div class="ttdeci">virtual void addSVFGNode(SVFGNode *node, ICFGNode *icfgNode)</div><div class="ttdoc">Add SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00387">SVFG.h:387</a></div></div>
1416
+ <div class="ttc" id="classSVF_1_1SVFG_html_a88e1f6f77421c5274ceeb14928bdcb43"><div class="ttname"><a href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">SVF::SVFG::addSVFGNode</a></div><div class="ttdeci">virtual void addSVFGNode(SVFGNode *node, ICFGNode *icfgNode)</div><div class="ttdoc">Add SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00391">SVFG.h:391</a></div></div>
1411
1417
  <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
1412
1418
  </div><!-- fragment -->
1413
1419
  </div>
@@ -1454,11 +1460,11 @@ Additional Inherited Members</h2></td></tr>
1454
1460
 
1455
1461
  <p>Add memory Function return mu <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node. </p>
1456
1462
 
1457
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00402">402</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
1458
- <div class="fragment"><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; FormalOUTSVFGNode* sNode = <span class="keyword">new</span> FormalOUTSVFGNode(nodeId, ver, funExit);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode,<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">getFunExitICFGNode</a>(funExit-&gt;getFun()));</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a7d58f9fe97071ec9936174689cb99301">funToFormalOUTMap</a>[funExit-&gt;getFun()].set(sNode-&gt;getId());</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div><div class="ttc" id="classSVF_1_1ICFG_html_af1b2d2839f811a00103df87342dfc919"><div class="ttname"><a href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">SVF::ICFG::getFunExitICFGNode</a></div><div class="ttdeci">FunExitICFGNode * getFunExitICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function exit node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00265">ICFG.cpp:265</a></div></div>
1463
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00406">406</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
1464
+ <div class="fragment"><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; FormalOUTSVFGNode* sNode = <span class="keyword">new</span> FormalOUTSVFGNode(nodeId, ver, funExit);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode,<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">getFunExitICFGNode</a>(funExit-&gt;getFun()));</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a7d58f9fe97071ec9936174689cb99301">funToFormalOUTMap</a>[funExit-&gt;getFun()].set(sNode-&gt;getId());</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div><div class="ttc" id="classSVF_1_1ICFG_html_af1b2d2839f811a00103df87342dfc919"><div class="ttname"><a href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">SVF::ICFG::getFunExitICFGNode</a></div><div class="ttdeci">FunExitICFGNode * getFunExitICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function exit node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00265">ICFG.cpp:265</a></div></div>
1459
1465
  <div class="ttc" id="classSVF_1_1VFG_html_a25c2bbbc2e966e2aaa59a5b83363557a"><div class="ttname"><a href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">SVF::VFG::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00104">VFG.h:104</a></div></div>
1460
1466
  <div class="ttc" id="classSVF_1_1SVFG_html_a7d58f9fe97071ec9936174689cb99301"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7d58f9fe97071ec9936174689cb99301">SVF::SVFG::funToFormalOUTMap</a></div><div class="ttdeci">FunctionToFormalOUTsMapTy funToFormalOUTMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00103">SVFG.h:103</a></div></div>
1461
- <div class="ttc" id="classSVF_1_1SVFG_html_a88e1f6f77421c5274ceeb14928bdcb43"><div class="ttname"><a href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">SVF::SVFG::addSVFGNode</a></div><div class="ttdeci">virtual void addSVFGNode(SVFGNode *node, ICFGNode *icfgNode)</div><div class="ttdoc">Add SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00387">SVFG.h:387</a></div></div>
1467
+ <div class="ttc" id="classSVF_1_1SVFG_html_a88e1f6f77421c5274ceeb14928bdcb43"><div class="ttname"><a href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">SVF::SVFG::addSVFGNode</a></div><div class="ttdeci">virtual void addSVFGNode(SVFGNode *node, ICFGNode *icfgNode)</div><div class="ttdoc">Add SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00391">SVFG.h:391</a></div></div>
1462
1468
  <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
1463
1469
  </div><!-- fragment -->
1464
1470
  </div>
@@ -1505,8 +1511,8 @@ Additional Inherited Members</h2></td></tr>
1505
1511
 
1506
1512
  <p>Add inter VF edge from callsite mu to function entry chi. </p>
1507
1513
 
1508
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00538">538</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1509
- <div class="fragment"><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;{</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> cpts1 = src-&gt;<a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> cpts2 = dst-&gt;<a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">if</span>(cpts1.intersects(cpts2))</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; cpts1 &amp;= cpts2;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFG.html#af8ceb1ebf745e6803c606c41f7a482ac">addCallIndirectVFEdge</a>(src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),cpts1,csId);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFG_html_af8ceb1ebf745e6803c606c41f7a482ac"><div class="ttname"><a href="classSVF_1_1SVFG.html#af8ceb1ebf745e6803c606c41f7a482ac">SVF::SVFG::addCallIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addCallIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &amp;cpts, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00498">SVFG.cpp:498</a></div></div>
1514
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00542">542</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1515
+ <div class="fragment"><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;{</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> cpts1 = src-&gt;<a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> cpts2 = dst-&gt;<a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">if</span>(cpts1.intersects(cpts2))</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; cpts1 &amp;= cpts2;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFG.html#af8ceb1ebf745e6803c606c41f7a482ac">addCallIndirectVFEdge</a>(src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),cpts1,csId);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; }</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFG_html_af8ceb1ebf745e6803c606c41f7a482ac"><div class="ttname"><a href="classSVF_1_1SVFG.html#af8ceb1ebf745e6803c606c41f7a482ac">SVF::SVFG::addCallIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addCallIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &amp;cpts, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00502">SVFG.cpp:502</a></div></div>
1510
1516
  <div class="ttc" id="classSVF_1_1MRSVFGNode_html_a28fe266d0e4618aa4448aa218495a332"><div class="ttname"><a href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">SVF::MRSVFGNode::getPointsTo</a></div><div class="ttdeci">const NodeBS &amp; getPointsTo() const</div><div class="ttdoc">Return points-to of the MR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00052">SVFGNode.h:52</a></div></div>
1511
1517
  <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
1512
1518
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
@@ -1556,9 +1562,9 @@ Additional Inherited Members</h2></td></tr>
1556
1562
  <p>Add inter VF edge from function exit mu to callsite chi. </p>
1557
1563
  <p>Add inter VF edge from function exit mu to callsite chi </p>
1558
1564
 
1559
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00553">553</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1560
- <div class="fragment"><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;{</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> cpts1 = src-&gt;<a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> cpts2 = dst-&gt;<a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">if</span>(cpts1.intersects(cpts2))</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; cpts1 &amp;= cpts2;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFG.html#a8ebf0e285c69db8332a1f8914d6190f6">addRetIndirectVFEdge</a>(src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),cpts1,csId);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; }</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;}</div><div class="ttc" id="classSVF_1_1MRSVFGNode_html_a28fe266d0e4618aa4448aa218495a332"><div class="ttname"><a href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">SVF::MRSVFGNode::getPointsTo</a></div><div class="ttdeci">const NodeBS &amp; getPointsTo() const</div><div class="ttdoc">Return points-to of the MR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00052">SVFGNode.h:52</a></div></div>
1561
- <div class="ttc" id="classSVF_1_1SVFG_html_a8ebf0e285c69db8332a1f8914d6190f6"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8ebf0e285c69db8332a1f8914d6190f6">SVF::SVFG::addRetIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addRetIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &amp;cpts, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00518">SVFG.cpp:518</a></div></div>
1565
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00557">557</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1566
+ <div class="fragment"><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;{</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> cpts1 = src-&gt;<a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> cpts2 = dst-&gt;<a class="code" href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">getPointsTo</a>();</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">if</span>(cpts1.intersects(cpts2))</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; {</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; cpts1 &amp;= cpts2;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFG.html#a8ebf0e285c69db8332a1f8914d6190f6">addRetIndirectVFEdge</a>(src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),cpts1,csId);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; }</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;}</div><div class="ttc" id="classSVF_1_1MRSVFGNode_html_a28fe266d0e4618aa4448aa218495a332"><div class="ttname"><a href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">SVF::MRSVFGNode::getPointsTo</a></div><div class="ttdeci">const NodeBS &amp; getPointsTo() const</div><div class="ttdoc">Return points-to of the MR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00052">SVFGNode.h:52</a></div></div>
1567
+ <div class="ttc" id="classSVF_1_1SVFG_html_a8ebf0e285c69db8332a1f8914d6190f6"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8ebf0e285c69db8332a1f8914d6190f6">SVF::SVFG::addRetIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addRetIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &amp;cpts, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00522">SVFG.cpp:522</a></div></div>
1562
1568
  <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
1563
1569
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
1564
1570
  </div><!-- fragment -->
@@ -1606,8 +1612,8 @@ Additional Inherited Members</h2></td></tr>
1606
1612
 
1607
1613
  <p>Add indirect def-use edges of a memory region between two statements,. </p>
1608
1614
 
1609
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00456">456</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1610
- <div class="fragment"><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;{</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(srcId);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(dstId);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a43b0c126c2e32cb3d286a78b14e09a96">checkIntraEdgeParents</a>(srcNode, dstNode);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ac34c4529229404617c346f81cc6c141f">hasIntraVFGEdge</a>(srcNode,dstNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5aa80551154bcfbfa84f02df32ead6b1b0">SVFGEdge::IntraIndirectVF</a>))</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;IndirectSVFGEdge&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;this should be a indirect value flow edge!&quot;</span>);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">return</span> (SVFUtil::cast&lt;IndirectSVFGEdge&gt;(edge)-&gt;addPointsTo(cpts) ? edge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <a class="code" href="classSVF_1_1IntraIndSVFGEdge.html">IntraIndSVFGEdge</a>* indirectEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraIndSVFGEdge.html">IntraIndSVFGEdge</a>(srcNode,dstNode);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; indirectEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">addPointsTo</a>(cpts);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">addSVFGEdge</a>(indirectEdge) ? indirectEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; }</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;}</div><div class="ttc" id="classSVF_1_1IntraIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1IntraIndSVFGEdge.html">SVF::IntraIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00094">SVFGEdge.h:94</a></div></div>
1615
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00460">460</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1616
+ <div class="fragment"><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;{</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(srcId);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(dstId);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="classSVF_1_1VFG.html#a43b0c126c2e32cb3d286a78b14e09a96">checkIntraEdgeParents</a>(srcNode, dstNode);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ac34c4529229404617c346f81cc6c141f">hasIntraVFGEdge</a>(srcNode,dstNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5aa80551154bcfbfa84f02df32ead6b1b0">SVFGEdge::IntraIndirectVF</a>))</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;IndirectSVFGEdge&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;this should be a indirect value flow edge!&quot;</span>);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">return</span> (SVFUtil::cast&lt;IndirectSVFGEdge&gt;(edge)-&gt;addPointsTo(cpts) ? edge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; }</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <a class="code" href="classSVF_1_1IntraIndSVFGEdge.html">IntraIndSVFGEdge</a>* indirectEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraIndSVFGEdge.html">IntraIndSVFGEdge</a>(srcNode,dstNode);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; indirectEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">addPointsTo</a>(cpts);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">addSVFGEdge</a>(indirectEdge) ? indirectEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; }</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;}</div><div class="ttc" id="classSVF_1_1IntraIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1IntraIndSVFGEdge.html">SVF::IntraIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00094">SVFGEdge.h:94</a></div></div>
1611
1617
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
1612
1618
  <div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00150">SVFG.h:150</a></div></div>
1613
1619
  <div class="ttc" id="classSVF_1_1IndirectSVFGEdge_html_a50ac2e33c6a4a41291c0a476ed07de53"><div class="ttname"><a href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">SVF::IndirectSVFGEdge::addPointsTo</a></div><div class="ttdeci">bool addPointsTo(const NodeBS &amp;c)</div><div class="ttdoc">Handle memory region. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00056">SVFGEdge.h:56</a></div></div>
@@ -1674,9 +1680,9 @@ Additional Inherited Members</h2></td></tr>
1674
1680
 
1675
1681
  <p>Add memory SSA PHI <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node. </p>
1676
1682
 
1677
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00427">427</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
1678
- <div class="fragment"><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; IntraMSSAPHISVFGNode* sNode = <span class="keyword">new</span> IntraMSSAPHISVFGNode(nodeId, resVer);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode, BlockICFGNode);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">for</span>(MemSSA::PHI::OPVers::const_iterator it = opVerBegin, eit=opVerEnd; it!=eit; ++it)</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; sNode-&gt;setOpVer(it-&gt;first,it-&gt;second);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>(resVer,sNode);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_accd1cbd26c9b194971f3107a57a0ab2e"><div class="ttname"><a href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">SVF::SVFG::setDef</a></div><div class="ttdeci">void setDef(const PAGNode *pagNode, const SVFGNode *node)</div><div class="ttdoc">Given a PAGNode, set/get its def SVFG node (definition of top level pointers) </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00342">SVFG.h:342</a></div></div>
1679
- <div class="ttc" id="classSVF_1_1SVFG_html_a88e1f6f77421c5274ceeb14928bdcb43"><div class="ttname"><a href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">SVF::SVFG::addSVFGNode</a></div><div class="ttdeci">virtual void addSVFGNode(SVFGNode *node, ICFGNode *icfgNode)</div><div class="ttdoc">Add SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00387">SVFG.h:387</a></div></div>
1683
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00431">431</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
1684
+ <div class="fragment"><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; IntraMSSAPHISVFGNode* sNode = <span class="keyword">new</span> IntraMSSAPHISVFGNode(nodeId, resVer);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode, BlockICFGNode);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">for</span>(MemSSA::PHI::OPVers::const_iterator it = opVerBegin, eit=opVerEnd; it!=eit; ++it)</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; sNode-&gt;setOpVer(it-&gt;first,it-&gt;second);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>(resVer,sNode);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_accd1cbd26c9b194971f3107a57a0ab2e"><div class="ttname"><a href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">SVF::SVFG::setDef</a></div><div class="ttdeci">void setDef(const PAGNode *pagNode, const SVFGNode *node)</div><div class="ttdoc">Given a PAGNode, set/get its def SVFG node (definition of top level pointers) </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00346">SVFG.h:346</a></div></div>
1685
+ <div class="ttc" id="classSVF_1_1SVFG_html_a88e1f6f77421c5274ceeb14928bdcb43"><div class="ttname"><a href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">SVF::SVFG::addSVFGNode</a></div><div class="ttdeci">virtual void addSVFGNode(SVFGNode *node, ICFGNode *icfgNode)</div><div class="ttdoc">Add SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00391">SVFG.h:391</a></div></div>
1680
1686
  </div><!-- fragment -->
1681
1687
  </div>
1682
1688
  </div>
@@ -1726,8 +1732,8 @@ Additional Inherited Members</h2></td></tr>
1726
1732
  </table>
1727
1733
  </div><div class="memdoc">
1728
1734
 
1729
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00518">518</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1730
- <div class="fragment"><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;{</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(srcId);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(dstId);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(srcNode,dstNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5ac8124172b3f5f7fc94e895f6b192b668">SVFGEdge::RetIndVF</a>,csId))</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;RetIndSVFGEdge&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;this should be a indirect value flow edge!&quot;</span>);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">return</span> (SVFUtil::cast&lt;RetIndSVFGEdge&gt;(edge)-&gt;addPointsTo(cpts) ? edge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; }</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <a class="code" href="classSVF_1_1RetIndSVFGEdge.html">RetIndSVFGEdge</a>* retEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1RetIndSVFGEdge.html">RetIndSVFGEdge</a>(srcNode,dstNode,csId);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; retEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">addPointsTo</a>(cpts);</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">addSVFGEdge</a>(retEdge) ? retEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; }</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;}</div><div class="ttc" id="classSVF_1_1RetIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetIndSVFGEdge.html">SVF::RetIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00165">SVFGEdge.h:165</a></div></div>
1735
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00522">522</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1736
+ <div class="fragment"><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;{</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(srcId);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(dstId);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(srcNode,dstNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5ac8124172b3f5f7fc94e895f6b192b668">SVFGEdge::RetIndVF</a>,csId))</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;RetIndSVFGEdge&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;this should be a indirect value flow edge!&quot;</span>);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">return</span> (SVFUtil::cast&lt;RetIndSVFGEdge&gt;(edge)-&gt;addPointsTo(cpts) ? edge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="classSVF_1_1RetIndSVFGEdge.html">RetIndSVFGEdge</a>* retEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1RetIndSVFGEdge.html">RetIndSVFGEdge</a>(srcNode,dstNode,csId);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; retEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">addPointsTo</a>(cpts);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">addSVFGEdge</a>(retEdge) ? retEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; }</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;}</div><div class="ttc" id="classSVF_1_1RetIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetIndSVFGEdge.html">SVF::RetIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00165">SVFGEdge.h:165</a></div></div>
1731
1737
  <div class="ttc" id="classSVF_1_1VFG_html_ad86631f70bd702b5635bdbeab7d884b9"><div class="ttname"><a href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">SVF::VFG::hasInterVFGEdge</a></div><div class="ttdeci">VFGEdge * hasInterVFGEdge(VFGNode *src, VFGNode *dst, VFGEdge::VFGEdgeK kind, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00892">VFG.cpp:892</a></div></div>
1732
1738
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
1733
1739
  <div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00150">SVFG.h:150</a></div></div>
@@ -1806,8 +1812,8 @@ Additional Inherited Members</h2></td></tr>
1806
1812
 
1807
1813
  <p>Add <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node. </p>
1808
1814
 
1809
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00387">387</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
1810
- <div class="fragment"><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(node, icfgNode);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFG_html_ad8c76cdb73541eed5aa1c2ba9de60383"><div class="ttname"><a href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">SVF::VFG::addVFGNode</a></div><div class="ttdeci">virtual void addVFGNode(VFGNode *vfgNode, ICFGNode *icfgNode)</div><div class="ttdoc">Add a VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00463">VFG.h:463</a></div></div>
1815
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00391">391</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
1816
+ <div class="fragment"><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(node, icfgNode);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFG_html_ad8c76cdb73541eed5aa1c2ba9de60383"><div class="ttname"><a href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">SVF::VFG::addVFGNode</a></div><div class="ttdeci">virtual void addVFGNode(VFGNode *vfgNode, ICFGNode *icfgNode)</div><div class="ttdoc">Add a VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00463">VFG.h:463</a></div></div>
1811
1817
  </div><!-- fragment -->
1812
1818
  </div>
1813
1819
  </div>
@@ -1841,10 +1847,10 @@ Additional Inherited Members</h2></td></tr>
1841
1847
  <p>initialize memory SSA callsite mu nodes</p>
1842
1848
  <p>initialize memory SSA callsite chi nodes </p>
1843
1849
 
1844
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00247">247</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1845
- <div class="fragment"><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;{</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; <span class="comment">// set defs for address-taken vars defined at store statements</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; stores = <a class="code" href="classSVF_1_1VFG.html#a2e182f7e90a3519a2147a300470a88f1">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = stores.begin(), eiter =</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; stores.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store = SVFUtil::cast&lt;StoreStmt&gt;(*iter);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1StmtVFGNode.html">StmtSVFGNode</a>* sNode = <a class="code" href="classSVF_1_1VFG.html#a32b1586d326fbe47080bd1fa2d3270e6">getStmtVFGNode</a>(store);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator pi = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(store).begin(), epi = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(store).end(); pi!=epi; ++pi)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>((*pi)-&gt;getResVer(),sNode);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">for</span>(MemSSA::BBToPhiSetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">getBBToPhiSetMap</a>().begin(),</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">getBBToPhiSetMap</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">for</span>(PHISet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi)</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <a class="code" href="classSVF_1_1MSSAPHI.html">MemSSA::PHI</a>* phi = *pi;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a0554abe7c072b66ab24a900284646572">addIntraMSSAPHISVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(&amp;(phi-&gt;<a class="code" href="classSVF_1_1MSSAPHI.html#a00b3ab85b31b4de91398efea41db158f">getBasicBlock</a>()-&gt;front())), phi-&gt;<a class="code" href="classSVF_1_1MSSAPHI.html#a940f9afa26bf54c7175276ea27003c2f">opVerBegin</a>(), phi-&gt;<a class="code" href="classSVF_1_1MSSAPHI.html#a2a49ad9d2eedf1dea98d725b13878d88">opVerEnd</a>(),phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a21cb532396180e0b6bab515c52bec282">getResVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">for</span>(MemSSA::FunToEntryChiSetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198">getFunToEntryChiSetMap</a>().begin(),</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198">getFunToEntryChiSetMap</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi)</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="keyword">const</span> <a class="code" href="classSVF_1_1EntryCHI.html">MemSSA::ENTRYCHI</a>* chi = SVFUtil::cast&lt;ENTRYCHI&gt;(*pi);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ab4690114393820f580e805d2e0d6a41d">addFormalINSVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(chi-&gt;<a class="code" href="classSVF_1_1EntryCHI.html#ae021640611362449382668665710154c">getFunction</a>()), chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a21cb532396180e0b6bab515c52bec282">getResVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</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; }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">for</span>(MemSSA::FunToReturnMuSetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a">getFunToRetMuSetMap</a>().begin(),</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a">getFunToRetMuSetMap</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">for</span>(MUSet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetMU.html">MemSSA::RETMU</a>* mu = SVFUtil::cast&lt;RETMU&gt;(*pi);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a804824faa3a042cb1b63edd9e9eb7207">addFormalOUTSVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">getFunExitICFGNode</a>(mu-&gt;<a class="code" href="classSVF_1_1RetMU.html#a8ad6bf3d517e20089dac516742ee4b8f">getFunction</a>()), mu-&gt;<a class="code" href="classSVF_1_1MSSAMU.html#ad120dfc87b90b26649bcd8d0c0d3ca80">getMRVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">for</span>(MemSSA::CallSiteToMUSetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43">getCallSiteToMuSetMap</a>().begin(),</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43">getCallSiteToMuSetMap</a>().end();</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; it!=eit; ++it)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">for</span>(MUSet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallMU.html">MemSSA::CALLMU</a>* mu = SVFUtil::cast&lt;CALLMU&gt;(*pi);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a923924d3887c668b355f4029502a3754">addActualINSVFGNode</a>(mu-&gt;<a class="code" href="classSVF_1_1CallMU.html#a57616dc30fb97c6dc64c9210b42bbeb7">getCallSite</a>(), mu-&gt;<a class="code" href="classSVF_1_1MSSAMU.html#ad120dfc87b90b26649bcd8d0c0d3ca80">getMRVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">for</span>(MemSSA::CallSiteToCHISetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d">getCallSiteToChiSetMap</a>().begin(),</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d">getCallSiteToChiSetMap</a>().end();</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; it!=eit; ++it)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallCHI.html">MemSSA::CALLCHI</a>* chi = SVFUtil::cast&lt;CALLCHI&gt;(*pi);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a74aa824a68f99756ac3e65231c7bc2e9">addActualOUTSVFGNode</a>(chi-&gt;<a class="code" href="classSVF_1_1CallCHI.html#af7f9fb3c01c487686453e25104a5bfc7">getCallSite</a>(), chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a21cb532396180e0b6bab515c52bec282">getResVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</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;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;}</div><div class="ttc" id="classSVF_1_1MemSSA_html_a2e656a50f8964fc3e99d1d436de64418"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">SVF::MemSSA::getCHISet</a></div><div class="ttdeci">CHISet &amp; getCHISet(const StoreStmt *st)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00392">MemSSA.h:392</a></div></div>
1850
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00251">251</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1851
+ <div class="fragment"><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;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="comment">// set defs for address-taken vars defined at store statements</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; stores = <a class="code" href="classSVF_1_1VFG.html#a2e182f7e90a3519a2147a300470a88f1">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = stores.begin(), eiter =</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; stores.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store = SVFUtil::cast&lt;StoreStmt&gt;(*iter);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1StmtVFGNode.html">StmtSVFGNode</a>* sNode = <a class="code" href="classSVF_1_1VFG.html#a32b1586d326fbe47080bd1fa2d3270e6">getStmtVFGNode</a>(store);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator pi = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(store).begin(), epi = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(store).end(); pi!=epi; ++pi)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>((*pi)-&gt;getResVer(),sNode);</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;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">for</span>(MemSSA::BBToPhiSetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">getBBToPhiSetMap</a>().begin(),</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">getBBToPhiSetMap</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">for</span>(PHISet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="classSVF_1_1MSSAPHI.html">MemSSA::PHI</a>* phi = *pi;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a0554abe7c072b66ab24a900284646572">addIntraMSSAPHISVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(&amp;(phi-&gt;<a class="code" href="classSVF_1_1MSSAPHI.html#a00b3ab85b31b4de91398efea41db158f">getBasicBlock</a>()-&gt;front())), phi-&gt;<a class="code" href="classSVF_1_1MSSAPHI.html#a940f9afa26bf54c7175276ea27003c2f">opVerBegin</a>(), phi-&gt;<a class="code" href="classSVF_1_1MSSAPHI.html#a2a49ad9d2eedf1dea98d725b13878d88">opVerEnd</a>(),phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a21cb532396180e0b6bab515c52bec282">getResVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">for</span>(MemSSA::FunToEntryChiSetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198">getFunToEntryChiSetMap</a>().begin(),</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198">getFunToEntryChiSetMap</a>().end(); it!=eit; ++it)</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; <span class="keywordflow">for</span>(CHISet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1EntryCHI.html">MemSSA::ENTRYCHI</a>* chi = SVFUtil::cast&lt;ENTRYCHI&gt;(*pi);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ab4690114393820f580e805d2e0d6a41d">addFormalINSVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(chi-&gt;<a class="code" href="classSVF_1_1EntryCHI.html#ae021640611362449382668665710154c">getFunction</a>()), chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a21cb532396180e0b6bab515c52bec282">getResVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">for</span>(MemSSA::FunToReturnMuSetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a">getFunToRetMuSetMap</a>().begin(),</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a">getFunToRetMuSetMap</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">for</span>(MUSet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetMU.html">MemSSA::RETMU</a>* mu = SVFUtil::cast&lt;RETMU&gt;(*pi);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a804824faa3a042cb1b63edd9e9eb7207">addFormalOUTSVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">getFunExitICFGNode</a>(mu-&gt;<a class="code" href="classSVF_1_1RetMU.html#a8ad6bf3d517e20089dac516742ee4b8f">getFunction</a>()), mu-&gt;<a class="code" href="classSVF_1_1MSSAMU.html#ad120dfc87b90b26649bcd8d0c0d3ca80">getMRVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</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">for</span>(MemSSA::CallSiteToMUSetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43">getCallSiteToMuSetMap</a>().begin(),</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43">getCallSiteToMuSetMap</a>().end();</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; it!=eit; ++it)</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">for</span>(MUSet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallMU.html">MemSSA::CALLMU</a>* mu = SVFUtil::cast&lt;CALLMU&gt;(*pi);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a923924d3887c668b355f4029502a3754">addActualINSVFGNode</a>(mu-&gt;<a class="code" href="classSVF_1_1CallMU.html#a57616dc30fb97c6dc64c9210b42bbeb7">getCallSite</a>(), mu-&gt;<a class="code" href="classSVF_1_1MSSAMU.html#ad120dfc87b90b26649bcd8d0c0d3ca80">getMRVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">for</span>(MemSSA::CallSiteToCHISetMap::iterator it = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d">getCallSiteToChiSetMap</a>().begin(),</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; eit = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d">getCallSiteToChiSetMap</a>().end();</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; it!=eit; ++it)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator pi = it-&gt;second.begin(), epi = it-&gt;second.end(); pi!=epi; ++pi)</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallCHI.html">MemSSA::CALLCHI</a>* chi = SVFUtil::cast&lt;CALLCHI&gt;(*pi);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a74aa824a68f99756ac3e65231c7bc2e9">addActualOUTSVFGNode</a>(chi-&gt;<a class="code" href="classSVF_1_1CallCHI.html#af7f9fb3c01c487686453e25104a5bfc7">getCallSite</a>(), chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a21cb532396180e0b6bab515c52bec282">getResVer</a>(), <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;}</div><div class="ttc" id="classSVF_1_1MemSSA_html_a2e656a50f8964fc3e99d1d436de64418"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">SVF::MemSSA::getCHISet</a></div><div class="ttdeci">CHISet &amp; getCHISet(const StoreStmt *st)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00392">MemSSA.h:392</a></div></div>
1846
1852
  <div class="ttc" id="classSVF_1_1CallMU_html"><div class="ttname"><a href="classSVF_1_1CallMU.html">SVF::CallMU</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00221">MSSAMuChi.h:221</a></div></div>
1847
- <div class="ttc" id="classSVF_1_1SVFG_html_a923924d3887c668b355f4029502a3754"><div class="ttname"><a href="classSVF_1_1SVFG.html#a923924d3887c668b355f4029502a3754">SVF::SVFG::addActualINSVFGNode</a></div><div class="ttdeci">void addActualINSVFGNode(const CallICFGNode *callsite, const MRVer *ver, const NodeID nodeId)</div><div class="ttdoc">Add memory callsite mu SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00410">SVFG.h:410</a></div></div>
1853
+ <div class="ttc" id="classSVF_1_1SVFG_html_a923924d3887c668b355f4029502a3754"><div class="ttname"><a href="classSVF_1_1SVFG.html#a923924d3887c668b355f4029502a3754">SVF::SVFG::addActualINSVFGNode</a></div><div class="ttdeci">void addActualINSVFGNode(const CallICFGNode *callsite, const MRVer *ver, const NodeID nodeId)</div><div class="ttdoc">Add memory callsite mu SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00414">SVFG.h:414</a></div></div>
1848
1854
  <div class="ttc" id="classSVF_1_1VFG_html_a32b1586d326fbe47080bd1fa2d3270e6"><div class="ttname"><a href="classSVF_1_1VFG.html#a32b1586d326fbe47080bd1fa2d3270e6">SVF::VFG::getStmtVFGNode</a></div><div class="ttdeci">StmtVFGNode * getStmtVFGNode(const PAGEdge *pagEdge) const</div><div class="ttdoc">Get an VFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00199">VFG.h:199</a></div></div>
1849
1855
  <div class="ttc" id="classSVF_1_1VFG_html_a2e182f7e90a3519a2147a300470a88f1"><div class="ttname"><a href="classSVF_1_1VFG.html#a2e182f7e90a3519a2147a300470a88f1">SVF::VFG::getPAGEdgeSet</a></div><div class="ttdeci">virtual SVFStmt::SVFStmtSetTy &amp; getPAGEdgeSet(SVFStmt::PEDGEK kind)</div><div class="ttdoc">Get PAGEdge set. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00435">VFG.h:435</a></div></div>
1850
1856
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a8cd7b6c6fd8b030b1421d95a086359f4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVF::SVFStmt::SVFStmtSetTy</a></div><div class="ttdeci">GenericNode&lt; SVFVar, SVFStmt &gt;::GEdgeSetTy SVFStmtSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00177">SVFStatements.h:177</a></div></div>
@@ -1853,17 +1859,17 @@ Additional Inherited Members</h2></td></tr>
1853
1859
  <div class="ttc" id="classSVF_1_1MemSSA_html_a8f88acad31782bfa962e4349d8f4185d"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d">SVF::MemSSA::getCallSiteToChiSetMap</a></div><div class="ttdeci">CallSiteToCHISetMap &amp; getCallSiteToChiSetMap()</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00432">MemSSA.h:432</a></div></div>
1854
1860
  <div class="ttc" id="classSVF_1_1MSSAMU_html_ad120dfc87b90b26649bcd8d0c0d3ca80"><div class="ttname"><a href="classSVF_1_1MSSAMU.html#ad120dfc87b90b26649bcd8d0c0d3ca80">SVF::MSSAMU::getMRVer</a></div><div class="ttdeci">MRVer * getMRVer() const</div><div class="ttdoc">Get Ver. </div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00137">MSSAMuChi.h:137</a></div></div>
1855
1861
  <div class="ttc" id="classSVF_1_1RetMU_html"><div class="ttname"><a href="classSVF_1_1RetMU.html">SVF::RetMU</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00277">MSSAMuChi.h:277</a></div></div>
1856
- <div class="ttc" id="classSVF_1_1SVFG_html_a0554abe7c072b66ab24a900284646572"><div class="ttname"><a href="classSVF_1_1SVFG.html#a0554abe7c072b66ab24a900284646572">SVF::SVFG::addIntraMSSAPHISVFGNode</a></div><div class="ttdeci">void addIntraMSSAPHISVFGNode(ICFGNode *BlockICFGNode, const Map&lt; u32_t, const MRVer *&gt;::const_iterator opVerBegin, const Map&lt; u32_t, const MRVer *&gt;::const_iterator opVerEnd, const MRVer *resVer, const NodeID nodeId)</div><div class="ttdoc">Add memory SSA PHI SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00427">SVFG.h:427</a></div></div>
1857
- <div class="ttc" id="classSVF_1_1SVFG_html_a74aa824a68f99756ac3e65231c7bc2e9"><div class="ttname"><a href="classSVF_1_1SVFG.html#a74aa824a68f99756ac3e65231c7bc2e9">SVF::SVFG::addActualOUTSVFGNode</a></div><div class="ttdeci">void addActualOUTSVFGNode(const CallICFGNode *callsite, const MRVer *resVer, const NodeID nodeId)</div><div class="ttdoc">Add memory callsite chi SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00418">SVFG.h:418</a></div></div>
1862
+ <div class="ttc" id="classSVF_1_1SVFG_html_a0554abe7c072b66ab24a900284646572"><div class="ttname"><a href="classSVF_1_1SVFG.html#a0554abe7c072b66ab24a900284646572">SVF::SVFG::addIntraMSSAPHISVFGNode</a></div><div class="ttdeci">void addIntraMSSAPHISVFGNode(ICFGNode *BlockICFGNode, const Map&lt; u32_t, const MRVer *&gt;::const_iterator opVerBegin, const Map&lt; u32_t, const MRVer *&gt;::const_iterator opVerEnd, const MRVer *resVer, const NodeID nodeId)</div><div class="ttdoc">Add memory SSA PHI SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00431">SVFG.h:431</a></div></div>
1863
+ <div class="ttc" id="classSVF_1_1SVFG_html_a74aa824a68f99756ac3e65231c7bc2e9"><div class="ttname"><a href="classSVF_1_1SVFG.html#a74aa824a68f99756ac3e65231c7bc2e9">SVF::SVFG::addActualOUTSVFGNode</a></div><div class="ttdeci">void addActualOUTSVFGNode(const CallICFGNode *callsite, const MRVer *resVer, const NodeID nodeId)</div><div class="ttdoc">Add memory callsite chi SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00422">SVFG.h:422</a></div></div>
1858
1864
  <div class="ttc" id="classSVF_1_1VFG_html_a25c2bbbc2e966e2aaa59a5b83363557a"><div class="ttname"><a href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">SVF::VFG::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00104">VFG.h:104</a></div></div>
1859
1865
  <div class="ttc" id="classSVF_1_1ICFG_html_a5f2c0aaba07d6fdd63058da0fb60ca8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">SVF::ICFG::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode(NodeID id) const</div><div class="ttdoc">Get a ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00084">ICFG.h:84</a></div></div>
1860
- <div class="ttc" id="classSVF_1_1SVFG_html_accd1cbd26c9b194971f3107a57a0ab2e"><div class="ttname"><a href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">SVF::SVFG::setDef</a></div><div class="ttdeci">void setDef(const PAGNode *pagNode, const SVFGNode *node)</div><div class="ttdoc">Given a PAGNode, set/get its def SVFG node (definition of top level pointers) </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00342">SVFG.h:342</a></div></div>
1866
+ <div class="ttc" id="classSVF_1_1SVFG_html_accd1cbd26c9b194971f3107a57a0ab2e"><div class="ttname"><a href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">SVF::SVFG::setDef</a></div><div class="ttdeci">void setDef(const PAGNode *pagNode, const SVFGNode *node)</div><div class="ttdoc">Given a PAGNode, set/get its def SVFG node (definition of top level pointers) </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00346">SVFG.h:346</a></div></div>
1861
1867
  <div class="ttc" id="classSVF_1_1EntryCHI_html"><div class="ttname"><a href="classSVF_1_1EntryCHI.html">SVF::EntryCHI</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00578">MSSAMuChi.h:578</a></div></div>
1862
1868
  <div class="ttc" id="classSVF_1_1RetMU_html_a8ad6bf3d517e20089dac516742ee4b8f"><div class="ttname"><a href="classSVF_1_1RetMU.html#a8ad6bf3d517e20089dac516742ee4b8f">SVF::RetMU::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction() const</div><div class="ttdoc">Return function. </div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00292">MSSAMuChi.h:292</a></div></div>
1863
- <div class="ttc" id="classSVF_1_1SVFG_html_a804824faa3a042cb1b63edd9e9eb7207"><div class="ttname"><a href="classSVF_1_1SVFG.html#a804824faa3a042cb1b63edd9e9eb7207">SVF::SVFG::addFormalOUTSVFGNode</a></div><div class="ttdeci">void addFormalOUTSVFGNode(const FunExitICFGNode *funExit, const MRVer *ver, const NodeID nodeId)</div><div class="ttdoc">Add memory Function return mu SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00402">SVFG.h:402</a></div></div>
1869
+ <div class="ttc" id="classSVF_1_1SVFG_html_a804824faa3a042cb1b63edd9e9eb7207"><div class="ttname"><a href="classSVF_1_1SVFG.html#a804824faa3a042cb1b63edd9e9eb7207">SVF::SVFG::addFormalOUTSVFGNode</a></div><div class="ttdeci">void addFormalOUTSVFGNode(const FunExitICFGNode *funExit, const MRVer *ver, const NodeID nodeId)</div><div class="ttdoc">Add memory Function return mu SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00406">SVFG.h:406</a></div></div>
1864
1870
  <div class="ttc" id="classSVF_1_1VFG_html_acb181d4f9faa40578c80e2018e2742b8"><div class="ttname"><a href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">SVF::VFG::totalVFGNode</a></div><div class="ttdeci">NodeID totalVFGNode</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00088">VFG.h:88</a></div></div>
1865
1871
  <div class="ttc" id="classSVF_1_1MemSSA_html_a966477062a453901da3631015fcf737d"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">SVF::MemSSA::getBBToPhiSetMap</a></div><div class="ttdeci">BBToPhiSetMap &amp; getBBToPhiSetMap()</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00436">MemSSA.h:436</a></div></div>
1866
- <div class="ttc" id="classSVF_1_1SVFG_html_ab4690114393820f580e805d2e0d6a41d"><div class="ttname"><a href="classSVF_1_1SVFG.html#ab4690114393820f580e805d2e0d6a41d">SVF::SVFG::addFormalINSVFGNode</a></div><div class="ttdeci">void addFormalINSVFGNode(const FunEntryICFGNode *funEntry, const MRVer *resVer, const NodeID nodeId)</div><div class="ttdoc">Add memory Function entry chi SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00393">SVFG.h:393</a></div></div>
1872
+ <div class="ttc" id="classSVF_1_1SVFG_html_ab4690114393820f580e805d2e0d6a41d"><div class="ttname"><a href="classSVF_1_1SVFG.html#ab4690114393820f580e805d2e0d6a41d">SVF::SVFG::addFormalINSVFGNode</a></div><div class="ttdeci">void addFormalINSVFGNode(const FunEntryICFGNode *funEntry, const MRVer *resVer, const NodeID nodeId)</div><div class="ttdoc">Add memory Function entry chi SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00397">SVFG.h:397</a></div></div>
1867
1873
  <div class="ttc" id="classSVF_1_1MSSAPHI_html_a940f9afa26bf54c7175276ea27003c2f"><div class="ttname"><a href="classSVF_1_1MSSAPHI.html#a940f9afa26bf54c7175276ea27003c2f">SVF::MSSAPHI::opVerBegin</a></div><div class="ttdeci">OPVers::const_iterator opVerBegin() const</div><div class="ttdoc">Operand ver iterators. </div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00673">MSSAMuChi.h:673</a></div></div>
1868
1874
  <div class="ttc" id="classSVF_1_1CallCHI_html_af7f9fb3c01c487686453e25104a5bfc7"><div class="ttname"><a href="classSVF_1_1CallCHI.html#af7f9fb3c01c487686453e25104a5bfc7">SVF::CallCHI::getCallSite</a></div><div class="ttdeci">const CallICFGNode * getCallSite() const</div><div class="ttdoc">Return callsite. </div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00544">MSSAMuChi.h:544</a></div></div>
1869
1875
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVF::SVFStmt::Store</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
@@ -1925,8 +1931,8 @@ Additional Inherited Members</h2></td></tr>
1925
1931
  </div><div class="memdoc">
1926
1932
  <p>Add def-use edges of a memory region between two may-happen-in-parallel statements for multithreaded program </p>
1927
1933
 
1928
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00478">478</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1929
- <div class="fragment"><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;{</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(srcId);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(dstId);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#aead3b463d9aa2fae5845d97896bd18ba">hasThreadVFGEdge</a>(srcNode,dstNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5aae3168b6bc9141e4a1f3723eae4f3375">SVFGEdge::TheadMHPIndirectVF</a>))</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;IndirectSVFGEdge&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;this should be a indirect value flow edge!&quot;</span>);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">return</span> (SVFUtil::cast&lt;IndirectSVFGEdge&gt;(edge)-&gt;addPointsTo(cpts) ? edge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; {</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="classSVF_1_1ThreadMHPIndSVFGEdge.html">ThreadMHPIndSVFGEdge</a>* indirectEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ThreadMHPIndSVFGEdge.html">ThreadMHPIndSVFGEdge</a>(srcNode,dstNode);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; indirectEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">addPointsTo</a>(cpts);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">addSVFGEdge</a>(indirectEdge) ? indirectEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; }</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;}</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
1934
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00482">482</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1935
+ <div class="fragment"><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;{</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(srcId);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(dstId);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#aead3b463d9aa2fae5845d97896bd18ba">hasThreadVFGEdge</a>(srcNode,dstNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5aae3168b6bc9141e4a1f3723eae4f3375">SVFGEdge::TheadMHPIndirectVF</a>))</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;IndirectSVFGEdge&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;this should be a indirect value flow edge!&quot;</span>);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">return</span> (SVFUtil::cast&lt;IndirectSVFGEdge&gt;(edge)-&gt;addPointsTo(cpts) ? edge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="classSVF_1_1ThreadMHPIndSVFGEdge.html">ThreadMHPIndSVFGEdge</a>* indirectEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ThreadMHPIndSVFGEdge.html">ThreadMHPIndSVFGEdge</a>(srcNode,dstNode);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; indirectEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">addPointsTo</a>(cpts);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">addSVFGEdge</a>(indirectEdge) ? indirectEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;}</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
1930
1936
  <div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00150">SVFG.h:150</a></div></div>
1931
1937
  <div class="ttc" id="classSVF_1_1VFG_html_aead3b463d9aa2fae5845d97896bd18ba"><div class="ttname"><a href="classSVF_1_1VFG.html#aead3b463d9aa2fae5845d97896bd18ba">SVF::VFG::hasThreadVFGEdge</a></div><div class="ttdeci">VFGEdge * hasThreadVFGEdge(VFGNode *src, VFGNode *dst, VFGEdge::VFGEdgeK kind)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00875">VFG.cpp:875</a></div></div>
1932
1938
  <div class="ttc" id="classSVF_1_1IndirectSVFGEdge_html_a50ac2e33c6a4a41291c0a476ed07de53"><div class="ttname"><a href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">SVF::IndirectSVFGEdge::addPointsTo</a></div><div class="ttdeci">bool addPointsTo(const NodeBS &amp;c)</div><div class="ttdoc">Handle memory region. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00056">SVFGEdge.h:56</a></div></div>
@@ -1967,10 +1973,15 @@ Additional Inherited Members</h2></td></tr>
1967
1973
  <p>Reimplemented in <a class="el" href="classSVF_1_1SVFGOPT.html#af4d2c6d2e3b316b256f860801fe3b178">SVF::SVFGOPT</a>.</p>
1968
1974
 
1969
1975
  <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00224">224</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
1970
- <div class="fragment"><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;{</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;Build Sparse Value-Flow Graph \n&quot;</span>));</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1PTAStat.html#a5524ff7901659f56e9de343992be8f3b">startClk</a>();</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;\tCreate SVFG Addr-taken Node\n&quot;</span>));</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#a4bf9a39b93b7254f627dd393b9f2b82c">ATVFNodeStart</a>();</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#abddfc95cf644d0729ee29eccf95699f1">addSVFGNodesForAddrTakenVars</a>();</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#aa39231c3d81fa87cdb6089f17bc35af8">ATVFNodeEnd</a>();</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;\tCreate SVFG Indirect Edge\n&quot;</span>));</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#adcb30427bb220dc122ad22030e10eb21">indVFEdgeStart</a>();</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a164a3df08fc24bacc0b97aee8b6eec38">connectIndirectSVFGEdges</a>();</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#a8b3b9a211f410e67e8fd1a79d3db9023">indVFEdgeEnd</a>();</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFGStat_html_a4bf9a39b93b7254f627dd393b9f2b82c"><div class="ttname"><a href="classSVF_1_1SVFGStat.html#a4bf9a39b93b7254f627dd393b9f2b82c">SVF::SVFGStat::ATVFNodeStart</a></div><div class="ttdeci">void ATVFNodeStart()</div><div class="ttdef"><b>Definition:</b> <a href="SVFGStat_8h_source.html#l00139">SVFGStat.h:139</a></div></div>
1976
+ <div class="fragment"><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;{</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;Build Sparse Value-Flow Graph \n&quot;</span>));</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1PTAStat.html#a5524ff7901659f56e9de343992be8f3b">startClk</a>();</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1Options.html#a1608ded89f829a780d67cb82e1e62944">Options::ReadSVFG</a>.<a class="code" href="cuddInt_8c.html#a5beb39637a978181c7c17714ac96672e">empty</a>())</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a9da50b8f467066b478143af64f7c9858">readFile</a>(<a class="code" href="classSVF_1_1Options.html#a1608ded89f829a780d67cb82e1e62944">Options::ReadSVFG</a>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;\tCreate SVFG Addr-taken Node\n&quot;</span>));</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#a4bf9a39b93b7254f627dd393b9f2b82c">ATVFNodeStart</a>();</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#abddfc95cf644d0729ee29eccf95699f1">addSVFGNodesForAddrTakenVars</a>();</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#aa39231c3d81fa87cdb6089f17bc35af8">ATVFNodeEnd</a>();</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;\tCreate SVFG Indirect Edge\n&quot;</span>));</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#adcb30427bb220dc122ad22030e10eb21">indVFEdgeStart</a>();</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a164a3df08fc24bacc0b97aee8b6eec38">connectIndirectSVFGEdges</a>();</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#a8b3b9a211f410e67e8fd1a79d3db9023">indVFEdgeEnd</a>();</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1Options.html#a4a9e039ba28cc7cdadf9d9d4fa64ab11">Options::WriteSVFG</a>.<a class="code" href="cuddInt_8c.html#a5beb39637a978181c7c17714ac96672e">empty</a>())</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a7ce9ec638995467c211958262be08ee1">writeToFile</a>(<a class="code" href="classSVF_1_1Options.html#a4a9e039ba28cc7cdadf9d9d4fa64ab11">Options::WriteSVFG</a>);</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;}</div><div class="ttc" id="classSVF_1_1SVFGStat_html_a4bf9a39b93b7254f627dd393b9f2b82c"><div class="ttname"><a href="classSVF_1_1SVFGStat.html#a4bf9a39b93b7254f627dd393b9f2b82c">SVF::SVFGStat::ATVFNodeStart</a></div><div class="ttdeci">void ATVFNodeStart()</div><div class="ttdef"><b>Definition:</b> <a href="SVFGStat_8h_source.html#l00139">SVFGStat.h:139</a></div></div>
1971
1977
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00101">SVFUtil.cpp:101</a></div></div>
1972
- <div class="ttc" id="classSVF_1_1SVFG_html_abddfc95cf644d0729ee29eccf95699f1"><div class="ttname"><a href="classSVF_1_1SVFG.html#abddfc95cf644d0729ee29eccf95699f1">SVF::SVFG::addSVFGNodesForAddrTakenVars</a></div><div class="ttdeci">void addSVFGNodesForAddrTakenVars()</div><div class="ttdoc">Create SVFG nodes for address-taken variables. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00247">SVFG.cpp:247</a></div></div>
1973
- <div class="ttc" id="classSVF_1_1SVFG_html_a164a3df08fc24bacc0b97aee8b6eec38"><div class="ttname"><a href="classSVF_1_1SVFG.html#a164a3df08fc24bacc0b97aee8b6eec38">SVF::SVFG::connectIndirectSVFGEdges</a></div><div class="ttdeci">void connectIndirectSVFGEdges()</div><div class="ttdoc">Connect direct SVFG edges between two SVFG nodes (value-flow of top address-taken variables) ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00321">SVFG.cpp:321</a></div></div>
1978
+ <div class="ttc" id="classSVF_1_1Options_html_a1608ded89f829a780d67cb82e1e62944"><div class="ttname"><a href="classSVF_1_1Options.html#a1608ded89f829a780d67cb82e1e62944">SVF::Options::ReadSVFG</a></div><div class="ttdeci">static const llvm::cl::opt&lt; std ::string &gt; ReadSVFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00162">Options.h:162</a></div></div>
1979
+ <div class="ttc" id="cuddInt_8c_html_a5beb39637a978181c7c17714ac96672e"><div class="ttname"><a href="cuddInt_8c.html#a5beb39637a978181c7c17714ac96672e">empty</a></div><div class="ttdeci">static DdNode * empty</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l28567">cuddInt.c:28567</a></div></div>
1980
+ <div class="ttc" id="classSVF_1_1Options_html_a4a9e039ba28cc7cdadf9d9d4fa64ab11"><div class="ttname"><a href="classSVF_1_1Options.html#a4a9e039ba28cc7cdadf9d9d4fa64ab11">SVF::Options::WriteSVFG</a></div><div class="ttdeci">static const llvm::cl::opt&lt; std ::string &gt; WriteSVFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00161">Options.h:161</a></div></div>
1981
+ <div class="ttc" id="classSVF_1_1SVFG_html_a9da50b8f467066b478143af64f7c9858"><div class="ttname"><a href="classSVF_1_1SVFG.html#a9da50b8f467066b478143af64f7c9858">SVF::SVFG::readFile</a></div><div class="ttdeci">virtual void readFile(const std::string &amp;filename)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGReadWrite_8cpp_source.html#l00205">SVFGReadWrite.cpp:205</a></div></div>
1982
+ <div class="ttc" id="classSVF_1_1SVFG_html_abddfc95cf644d0729ee29eccf95699f1"><div class="ttname"><a href="classSVF_1_1SVFG.html#abddfc95cf644d0729ee29eccf95699f1">SVF::SVFG::addSVFGNodesForAddrTakenVars</a></div><div class="ttdeci">void addSVFGNodesForAddrTakenVars()</div><div class="ttdoc">Create SVFG nodes for address-taken variables. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00251">SVFG.cpp:251</a></div></div>
1983
+ <div class="ttc" id="classSVF_1_1SVFG_html_a164a3df08fc24bacc0b97aee8b6eec38"><div class="ttname"><a href="classSVF_1_1SVFG.html#a164a3df08fc24bacc0b97aee8b6eec38">SVF::SVFG::connectIndirectSVFGEdges</a></div><div class="ttdeci">void connectIndirectSVFGEdges()</div><div class="ttdoc">Connect direct SVFG edges between two SVFG nodes (value-flow of top address-taken variables) ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00325">SVFG.cpp:325</a></div></div>
1984
+ <div class="ttc" id="classSVF_1_1SVFG_html_a7ce9ec638995467c211958262be08ee1"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ce9ec638995467c211958262be08ee1">SVF::SVFG::writeToFile</a></div><div class="ttdeci">virtual void writeToFile(const std::string &amp;filename)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGReadWrite_8cpp_source.html#l00046">SVFGReadWrite.cpp:46</a></div></div>
1974
1985
  <div class="ttc" id="classSVF_1_1PTAStat_html_a5524ff7901659f56e9de343992be8f3b"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a5524ff7901659f56e9de343992be8f3b">SVF::PTAStat::startClk</a></div><div class="ttdeci">virtual void startClk()</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00134">PTAStat.h:134</a></div></div>
1975
1986
  <div class="ttc" id="classSVF_1_1SVFG_html_ad5c1415f488ec4412d5457262269eff3"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">SVF::SVFG::stat</a></div><div class="ttdeci">SVFGStat * stat</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00104">SVFG.h:104</a></div></div>
1976
1987
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
@@ -2063,8 +2074,8 @@ Additional Inherited Members</h2></td></tr>
2063
2074
 
2064
2075
  <p>Reimplemented in <a class="el" href="classSVF_1_1SVFGOPT.html#aa39900e11f5689f8bd70f3ec45865225">SVF::SVFGOPT</a>.</p>
2065
2076
 
2066
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00283">283</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2067
- <div class="fragment"><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <a class="code" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">addInterIndirectVFCallEdge</a>(actualIn, formalIn,csId);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; edges.insert(edge);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_a57629591037e16e57a0178d102a405f2"><div class="ttname"><a href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">SVF::SVFG::addInterIndirectVFCallEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFCallEdge(const ActualINSVFGNode *src, const FormalINSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from callsite mu to function entry chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00538">SVFG.cpp:538</a></div></div>
2077
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00287">287</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2078
+ <div class="fragment"><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">addInterIndirectVFCallEdge</a>(actualIn, formalIn,csId);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; edges.insert(edge);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_a57629591037e16e57a0178d102a405f2"><div class="ttname"><a href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">SVF::SVFG::addInterIndirectVFCallEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFCallEdge(const ActualINSVFGNode *src, const FormalINSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from callsite mu to function entry chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00542">SVFG.cpp:542</a></div></div>
2068
2079
  <div class="ttc" id="namespaceSVF_html_aa4745cf70b26e17d59752356f0b19dd9"><div class="ttname"><a href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVF::SVFGEdge</a></div><div class="ttdeci">VFGEdge SVFGEdge</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00040">SVFG.h:40</a></div></div>
2069
2080
  </div><!-- fragment -->
2070
2081
  </div>
@@ -2114,8 +2125,8 @@ Additional Inherited Members</h2></td></tr>
2114
2125
 
2115
2126
  <p>Reimplemented from <a class="el" href="classSVF_1_1VFG.html#aa055ce3c4fe1cde5529cd63dd1ef2ed6">SVF::VFG</a>.</p>
2116
2127
 
2117
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00651">651</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2118
- <div class="fragment"><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;{</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <a class="code" href="classSVF_1_1VFG.html#aa055ce3c4fe1cde5529cd63dd1ef2ed6">VFG::connectCallerAndCallee</a>(cs,callee,edges);</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = <a class="code" href="classSVF_1_1VFG.html#a5f82b3c2e8e6412e2781b960ffa98387">getCallSiteID</a>(cs, callee);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="comment">// connect actual in and formal in</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFG.html#a23ca21b90feca5e7d00c9ba9f489374a">hasFuncEntryChi</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1SVFG.html#a842f6f2325c9e93ea96367e9cf624ee8">hasCallSiteMu</a>(cs))</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; {</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a">SVFG::ActualINSVFGNodeSet</a>&amp; actualInNodes = <a class="code" href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975">getActualINSVFGNodes</a>(cs);</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html#a8859409373454b6b3d1252776e169cf5">SVFG::FormalINSVFGNodeSet</a>&amp; formalInNodes = <a class="code" href="classSVF_1_1SVFG.html#a9d0714075d6071c26d26cf16c4dec7c5">getFormalINSVFGNodes</a>(callee);</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">for</span>(SVFG::ActualINSVFGNodeSet::iterator ai_it = actualInNodes.begin(),</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; ai_eit = actualInNodes.end(); ai_it!=ai_eit; ++ai_it)</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; {</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a> * actualIn = SVFUtil::cast&lt;ActualINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ai_it));</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">for</span>(SVFG::FormalINSVFGNodeSet::iterator fi_it = formalInNodes.begin(),</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; fi_eit = formalInNodes.end(); fi_it!=fi_eit; ++fi_it)</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; {</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn = SVFUtil::cast&lt;FormalINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*fi_it));</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ac9ab2a95cd7a09bbe4b4aa3e6fafaf62">connectAInAndFIn</a>(actualIn, formalIn, csId, edges);</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; }</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; }</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; }</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="comment">// connect actual out and formal out</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFG.html#a32378226c18a0b1e22271a2338a635f6">hasFuncRetMu</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1SVFG.html#ad9cc1581261182b56ae232d9a9b13296">hasCallSiteChi</a>(cs))</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; {</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="comment">// connect formal out and actual out</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html#acb7262c3b9161c77eb1b491048152fb0">SVFG::FormalOUTSVFGNodeSet</a>&amp; formalOutNodes = <a class="code" href="classSVF_1_1SVFG.html#a287c337697eed7d92889bca0a0e370d7">getFormalOUTSVFGNodes</a>(callee);</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">SVFG::ActualOUTSVFGNodeSet</a>&amp; actualOutNodes = <a class="code" href="classSVF_1_1SVFG.html#a5b7ae610bee28acc2905ca82928e714f">getActualOUTSVFGNodes</a>(cs);</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">for</span>(SVFG::FormalOUTSVFGNodeSet::iterator fo_it = formalOutNodes.begin(),</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; fo_eit = formalOutNodes.end(); fo_it!=fo_eit; ++fo_it)</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a> * formalOut = SVFUtil::cast&lt;FormalOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*fo_it));</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">for</span>(SVFG::ActualOUTSVFGNodeSet::iterator ao_it = actualOutNodes.begin(),</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; ao_eit = actualOutNodes.end(); ao_it!=ao_eit; ++ao_it)</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::cast&lt;ActualOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ao_it));</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a402dfe93b8692be453c4f76d048b690a">connectFOutAndAOut</a>(formalOut, actualOut, csId, edges);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; }</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; }</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; }</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;}</div><div class="ttc" id="classSVF_1_1VFG_html_a5f82b3c2e8e6412e2781b960ffa98387"><div class="ttname"><a href="classSVF_1_1VFG.html#a5f82b3c2e8e6412e2781b960ffa98387">SVF::VFG::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallICFGNode *cs, const SVFFunction *func) const</div><div class="ttdoc">Get callsite given a callsiteID. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00178">VFG.h:178</a></div></div>
2128
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00655">655</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2129
+ <div class="fragment"><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;{</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <a class="code" href="classSVF_1_1VFG.html#aa055ce3c4fe1cde5529cd63dd1ef2ed6">VFG::connectCallerAndCallee</a>(cs,callee,edges);</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = <a class="code" href="classSVF_1_1VFG.html#a5f82b3c2e8e6412e2781b960ffa98387">getCallSiteID</a>(cs, callee);</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="comment">// connect actual in and formal in</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFG.html#a23ca21b90feca5e7d00c9ba9f489374a">hasFuncEntryChi</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1SVFG.html#a842f6f2325c9e93ea96367e9cf624ee8">hasCallSiteMu</a>(cs))</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; {</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a">SVFG::ActualINSVFGNodeSet</a>&amp; actualInNodes = <a class="code" href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975">getActualINSVFGNodes</a>(cs);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html#a8859409373454b6b3d1252776e169cf5">SVFG::FormalINSVFGNodeSet</a>&amp; formalInNodes = <a class="code" href="classSVF_1_1SVFG.html#a9d0714075d6071c26d26cf16c4dec7c5">getFormalINSVFGNodes</a>(callee);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">for</span>(SVFG::ActualINSVFGNodeSet::iterator ai_it = actualInNodes.begin(),</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; ai_eit = actualInNodes.end(); ai_it!=ai_eit; ++ai_it)</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; {</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a> * actualIn = SVFUtil::cast&lt;ActualINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ai_it));</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">for</span>(SVFG::FormalINSVFGNodeSet::iterator fi_it = formalInNodes.begin(),</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; fi_eit = formalInNodes.end(); fi_it!=fi_eit; ++fi_it)</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; {</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn = SVFUtil::cast&lt;FormalINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*fi_it));</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ac9ab2a95cd7a09bbe4b4aa3e6fafaf62">connectAInAndFIn</a>(actualIn, formalIn, csId, edges);</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; }</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; }</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="comment">// connect actual out and formal out</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFG.html#a32378226c18a0b1e22271a2338a635f6">hasFuncRetMu</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1SVFG.html#ad9cc1581261182b56ae232d9a9b13296">hasCallSiteChi</a>(cs))</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="comment">// connect formal out and actual out</span></div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html#acb7262c3b9161c77eb1b491048152fb0">SVFG::FormalOUTSVFGNodeSet</a>&amp; formalOutNodes = <a class="code" href="classSVF_1_1SVFG.html#a287c337697eed7d92889bca0a0e370d7">getFormalOUTSVFGNodes</a>(callee);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">SVFG::ActualOUTSVFGNodeSet</a>&amp; actualOutNodes = <a class="code" href="classSVF_1_1SVFG.html#a5b7ae610bee28acc2905ca82928e714f">getActualOUTSVFGNodes</a>(cs);</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">for</span>(SVFG::FormalOUTSVFGNodeSet::iterator fo_it = formalOutNodes.begin(),</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; fo_eit = formalOutNodes.end(); fo_it!=fo_eit; ++fo_it)</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a> * formalOut = SVFUtil::cast&lt;FormalOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*fo_it));</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">for</span>(SVFG::ActualOUTSVFGNodeSet::iterator ao_it = actualOutNodes.begin(),</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; ao_eit = actualOutNodes.end(); ao_it!=ao_eit; ++ao_it)</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; {</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::cast&lt;ActualOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ao_it));</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a402dfe93b8692be453c4f76d048b690a">connectFOutAndAOut</a>(formalOut, actualOut, csId, edges);</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; }</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; }</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; }</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;}</div><div class="ttc" id="classSVF_1_1VFG_html_a5f82b3c2e8e6412e2781b960ffa98387"><div class="ttname"><a href="classSVF_1_1VFG.html#a5f82b3c2e8e6412e2781b960ffa98387">SVF::VFG::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallICFGNode *cs, const SVFFunction *func) const</div><div class="ttdoc">Get callsite given a callsiteID. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00178">VFG.h:178</a></div></div>
2119
2130
  <div class="ttc" id="classSVF_1_1SVFG_html_a8859409373454b6b3d1252776e169cf5"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8859409373454b6b3d1252776e169cf5">SVF::SVFG::FormalINSVFGNodeSet</a></div><div class="ttdeci">NodeBS FormalINSVFGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00080">SVFG.h:80</a></div></div>
2120
2131
  <div class="ttc" id="classSVF_1_1FormalOUTSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalOUTSVFGNode.html">SVF::FormalOUTSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00138">SVFGNode.h:138</a></div></div>
2121
2132
  <div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00150">SVFG.h:150</a></div></div>
@@ -2127,16 +2138,16 @@ Additional Inherited Members</h2></td></tr>
2127
2138
  <div class="ttc" id="classSVF_1_1SVFG_html_a9d0714075d6071c26d26cf16c4dec7c5"><div class="ttname"><a href="classSVF_1_1SVFG.html#a9d0714075d6071c26d26cf16c4dec7c5">SVF::SVFG::getFormalINSVFGNodes</a></div><div class="ttdeci">FormalINSVFGNodeSet &amp; getFormalINSVFGNodes(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00214">SVFG.h:214</a></div></div>
2128
2139
  <div class="ttc" id="classSVF_1_1SVFG_html_a287c337697eed7d92889bca0a0e370d7"><div class="ttname"><a href="classSVF_1_1SVFG.html#a287c337697eed7d92889bca0a0e370d7">SVF::SVFG::getFormalOUTSVFGNodes</a></div><div class="ttdeci">FormalOUTSVFGNodeSet &amp; getFormalOUTSVFGNodes(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00219">SVFG.h:219</a></div></div>
2129
2140
  <div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00092">SVFBasicTypes.h:92</a></div></div>
2130
- <div class="ttc" id="classSVF_1_1SVFG_html_a32378226c18a0b1e22271a2338a635f6"><div class="ttname"><a href="classSVF_1_1SVFG.html#a32378226c18a0b1e22271a2338a635f6">SVF::SVFG::hasFuncRetMu</a></div><div class="ttdeci">bool hasFuncRetMu(const SVFFunction *func) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00443">SVFG.h:443</a></div></div>
2131
- <div class="ttc" id="classSVF_1_1SVFG_html_a23ca21b90feca5e7d00c9ba9f489374a"><div class="ttname"><a href="classSVF_1_1SVFG.html#a23ca21b90feca5e7d00c9ba9f489374a">SVF::SVFG::hasFuncEntryChi</a></div><div class="ttdeci">bool hasFuncEntryChi(const SVFFunction *func) const</div><div class="ttdoc">Has function for EntryCHI/RetMU/CallCHI/CallMU. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00439">SVFG.h:439</a></div></div>
2141
+ <div class="ttc" id="classSVF_1_1SVFG_html_a32378226c18a0b1e22271a2338a635f6"><div class="ttname"><a href="classSVF_1_1SVFG.html#a32378226c18a0b1e22271a2338a635f6">SVF::SVFG::hasFuncRetMu</a></div><div class="ttdeci">bool hasFuncRetMu(const SVFFunction *func) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00447">SVFG.h:447</a></div></div>
2142
+ <div class="ttc" id="classSVF_1_1SVFG_html_a23ca21b90feca5e7d00c9ba9f489374a"><div class="ttname"><a href="classSVF_1_1SVFG.html#a23ca21b90feca5e7d00c9ba9f489374a">SVF::SVFG::hasFuncEntryChi</a></div><div class="ttdeci">bool hasFuncEntryChi(const SVFFunction *func) const</div><div class="ttdoc">Has function for EntryCHI/RetMU/CallCHI/CallMU. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00443">SVFG.h:443</a></div></div>
2132
2143
  <div class="ttc" id="classSVF_1_1SVFG_html_a2f6ed8a9f14657abc1e2a89247a84b99"><div class="ttname"><a href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">SVF::SVFG::ActualOUTSVFGNodeSet</a></div><div class="ttdeci">NodeBS ActualOUTSVFGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00079">SVFG.h:79</a></div></div>
2133
- <div class="ttc" id="classSVF_1_1SVFG_html_ad9cc1581261182b56ae232d9a9b13296"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad9cc1581261182b56ae232d9a9b13296">SVF::SVFG::hasCallSiteChi</a></div><div class="ttdeci">bool hasCallSiteChi(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00447">SVFG.h:447</a></div></div>
2134
- <div class="ttc" id="classSVF_1_1SVFG_html_a402dfe93b8692be453c4f76d048b690a"><div class="ttname"><a href="classSVF_1_1SVFG.html#a402dfe93b8692be453c4f76d048b690a">SVF::SVFG::connectFOutAndAOut</a></div><div class="ttdeci">virtual void connectFOutAndAOut(const FormalOUTSVFGNode *formalOut, const ActualOUTSVFGNode *actualOut, CallSiteID csId, SVFGEdgeSetTy &amp;edges)</div><div class="ttdoc">Connect formal-out and actual-out. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00290">SVFG.h:290</a></div></div>
2135
- <div class="ttc" id="classSVF_1_1SVFG_html_a842f6f2325c9e93ea96367e9cf624ee8"><div class="ttname"><a href="classSVF_1_1SVFG.html#a842f6f2325c9e93ea96367e9cf624ee8">SVF::SVFG::hasCallSiteMu</a></div><div class="ttdeci">bool hasCallSiteMu(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00451">SVFG.h:451</a></div></div>
2144
+ <div class="ttc" id="classSVF_1_1SVFG_html_ad9cc1581261182b56ae232d9a9b13296"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad9cc1581261182b56ae232d9a9b13296">SVF::SVFG::hasCallSiteChi</a></div><div class="ttdeci">bool hasCallSiteChi(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00451">SVFG.h:451</a></div></div>
2145
+ <div class="ttc" id="classSVF_1_1SVFG_html_a402dfe93b8692be453c4f76d048b690a"><div class="ttname"><a href="classSVF_1_1SVFG.html#a402dfe93b8692be453c4f76d048b690a">SVF::SVFG::connectFOutAndAOut</a></div><div class="ttdeci">virtual void connectFOutAndAOut(const FormalOUTSVFGNode *formalOut, const ActualOUTSVFGNode *actualOut, CallSiteID csId, SVFGEdgeSetTy &amp;edges)</div><div class="ttdoc">Connect formal-out and actual-out. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00294">SVFG.h:294</a></div></div>
2146
+ <div class="ttc" id="classSVF_1_1SVFG_html_a842f6f2325c9e93ea96367e9cf624ee8"><div class="ttname"><a href="classSVF_1_1SVFG.html#a842f6f2325c9e93ea96367e9cf624ee8">SVF::SVFG::hasCallSiteMu</a></div><div class="ttdeci">bool hasCallSiteMu(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00455">SVFG.h:455</a></div></div>
2136
2147
  <div class="ttc" id="classSVF_1_1VFG_html_aa055ce3c4fe1cde5529cd63dd1ef2ed6"><div class="ttname"><a href="classSVF_1_1VFG.html#aa055ce3c4fe1cde5529cd63dd1ef2ed6">SVF::VFG::connectCallerAndCallee</a></div><div class="ttdeci">virtual void connectCallerAndCallee(const CallICFGNode *cs, const SVFFunction *callee, VFGEdgeSetTy &amp;edges)</div><div class="ttdoc">Connect VFG nodes between caller and callee for indirect call site. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00955">VFG.cpp:955</a></div></div>
2137
2148
  <div class="ttc" id="classSVF_1_1SVFG_html_acb7262c3b9161c77eb1b491048152fb0"><div class="ttname"><a href="classSVF_1_1SVFG.html#acb7262c3b9161c77eb1b491048152fb0">SVF::SVFG::FormalOUTSVFGNodeSet</a></div><div class="ttdeci">NodeBS FormalOUTSVFGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00081">SVFG.h:81</a></div></div>
2138
2149
  <div class="ttc" id="classSVF_1_1FormalINSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalINSVFGNode.html">SVF::FormalINSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00093">SVFGNode.h:93</a></div></div>
2139
- <div class="ttc" id="classSVF_1_1SVFG_html_ac9ab2a95cd7a09bbe4b4aa3e6fafaf62"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac9ab2a95cd7a09bbe4b4aa3e6fafaf62">SVF::SVFG::connectAInAndFIn</a></div><div class="ttdeci">virtual void connectAInAndFIn(const ActualINSVFGNode *actualIn, const FormalINSVFGNode *formalIn, CallSiteID csId, SVFGEdgeSetTy &amp;edges)</div><div class="ttdoc">Connect SVFG nodes between caller and callee for indirect call site. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00283">SVFG.h:283</a></div></div>
2150
+ <div class="ttc" id="classSVF_1_1SVFG_html_ac9ab2a95cd7a09bbe4b4aa3e6fafaf62"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac9ab2a95cd7a09bbe4b4aa3e6fafaf62">SVF::SVFG::connectAInAndFIn</a></div><div class="ttdeci">virtual void connectAInAndFIn(const ActualINSVFGNode *actualIn, const FormalINSVFGNode *formalIn, CallSiteID csId, SVFGEdgeSetTy &amp;edges)</div><div class="ttdoc">Connect SVFG nodes between caller and callee for indirect call site. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00287">SVFG.h:287</a></div></div>
2140
2151
  </div><!-- fragment -->
2141
2152
  </div>
2142
2153
  </div>
@@ -2190,8 +2201,8 @@ Additional Inherited Members</h2></td></tr>
2190
2201
 
2191
2202
  <p>Reimplemented in <a class="el" href="classSVF_1_1SVFGOPT.html#a79ace9bac7f2e075c27209ea56fc6032">SVF::SVFGOPT</a>.</p>
2192
2203
 
2193
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00290">290</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2194
- <div class="fragment"><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">addInterIndirectVFRetEdge</a>(formalOut, actualOut,csId);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; edges.insert(edge);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_ac9666ae7266cf1a9c0a5f7d28b39d1e9"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">SVF::SVFG::addInterIndirectVFRetEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFRetEdge(const FormalOUTSVFGNode *src, const ActualOUTSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from function exit mu to callsite chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00553">SVFG.cpp:553</a></div></div>
2204
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00294">294</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2205
+ <div class="fragment"><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">addInterIndirectVFRetEdge</a>(formalOut, actualOut,csId);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; edges.insert(edge);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_ac9666ae7266cf1a9c0a5f7d28b39d1e9"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">SVF::SVFG::addInterIndirectVFRetEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFRetEdge(const FormalOUTSVFGNode *src, const ActualOUTSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from function exit mu to callsite chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00557">SVFG.cpp:557</a></div></div>
2195
2206
  <div class="ttc" id="namespaceSVF_html_aa4745cf70b26e17d59752356f0b19dd9"><div class="ttname"><a href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVF::SVFGEdge</a></div><div class="ttdeci">VFGEdge SVFGEdge</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00040">SVFG.h:40</a></div></div>
2196
2207
  </div><!-- fragment -->
2197
2208
  </div>
@@ -2224,8 +2235,8 @@ Additional Inherited Members</h2></td></tr>
2224
2235
  <p>connect this store to main function entry</p>
2225
2236
  <p>add indirect value flow edge </p>
2226
2237
 
2227
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00419">419</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2228
- <div class="fragment"><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;{</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>();</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* mainFunc =</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aa8017e3e5100b3f63ee338b66118d266">SVFUtil::getProgEntryFunction</a>(svfModule);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a8859409373454b6b3d1252776e169cf5">FormalINSVFGNodeSet</a>&amp; formalIns = <a class="code" href="classSVF_1_1SVFG.html#a9d0714075d6071c26d26cf16c4dec7c5">getFormalINSVFGNodes</a>(mainFunc);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">if</span> (formalIns.empty())</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">for</span> (GlobalVFGNodeSet::const_iterator storeIt = <a class="code" href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3">globalVFGNodes</a>.begin(), storeEit = <a class="code" href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3">globalVFGNodes</a>.end();</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; storeIt != storeEit; ++storeIt)</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* store = SVFUtil::dyn_cast&lt;StoreSVFGNode&gt;(*storeIt))</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; storePts = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(store-&gt;getPAGDstNodeID()).toNodeBS();</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">for</span> (FormalINSVFGNodeSet::iterator fiIt = formalIns.begin(), fiEit =</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; formalIns.end(); fiIt != fiEit; ++fiIt)</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> formalInID = *fiIt;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> formalInPts = ((<a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>*) <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(formalInID))-&gt;getPointsTo();</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; formalInPts &amp;= storePts;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">if</span> (formalInPts.empty())</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(store-&gt;getId(), formalInID, formalInPts);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; }</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; }</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;}</div><div class="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00240">VFGNode.h:240</a></div></div>
2238
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00423">423</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2239
+ <div class="fragment"><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;{</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>();</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* mainFunc =</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aa8017e3e5100b3f63ee338b66118d266">SVFUtil::getProgEntryFunction</a>(svfModule);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a8859409373454b6b3d1252776e169cf5">FormalINSVFGNodeSet</a>&amp; formalIns = <a class="code" href="classSVF_1_1SVFG.html#a9d0714075d6071c26d26cf16c4dec7c5">getFormalINSVFGNodes</a>(mainFunc);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">if</span> (formalIns.empty())</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">for</span> (GlobalVFGNodeSet::const_iterator storeIt = <a class="code" href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3">globalVFGNodes</a>.begin(), storeEit = <a class="code" href="classSVF_1_1VFG.html#a6c3daf2777cc5f76ce07241f803720f3">globalVFGNodes</a>.end();</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; storeIt != storeEit; ++storeIt)</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* store = SVFUtil::dyn_cast&lt;StoreSVFGNode&gt;(*storeIt))</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; storePts = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(store-&gt;getPAGDstNodeID()).toNodeBS();</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">for</span> (FormalINSVFGNodeSet::iterator fiIt = formalIns.begin(), fiEit =</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; formalIns.end(); fiIt != fiEit; ++fiIt)</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> formalInID = *fiIt;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> formalInPts = ((<a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>*) <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(formalInID))-&gt;getPointsTo();</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; formalInPts &amp;= storePts;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">if</span> (formalInPts.empty())</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(store-&gt;getId(), formalInID, formalInPts);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;}</div><div class="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00240">VFGNode.h:240</a></div></div>
2229
2240
  <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>
2230
2241
  <div class="ttc" id="classSVF_1_1SVFG_html_a8859409373454b6b3d1252776e169cf5"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8859409373454b6b3d1252776e169cf5">SVF::SVFG::FormalINSVFGNodeSet</a></div><div class="ttdeci">NodeBS FormalINSVFGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00080">SVFG.h:80</a></div></div>
2231
2242
  <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00124">BasicTypes.h:124</a></div></div>
@@ -2238,7 +2249,7 @@ Additional Inherited Members</h2></td></tr>
2238
2249
  <div class="ttc" id="classSVF_1_1SVFG_html_a9d0714075d6071c26d26cf16c4dec7c5"><div class="ttname"><a href="classSVF_1_1SVFG.html#a9d0714075d6071c26d26cf16c4dec7c5">SVF::SVFG::getFormalINSVFGNodes</a></div><div class="ttdeci">FormalINSVFGNodeSet &amp; getFormalINSVFGNodes(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00214">SVFG.h:214</a></div></div>
2239
2250
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
2240
2251
  <div class="ttc" id="classSVF_1_1SVFG_html_a6f07410ee34e4bf1079e3b5902c81d28"><div class="ttname"><a href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">SVF::SVFG::mssa</a></div><div class="ttdeci">MemSSA * mssa</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00105">SVFG.h:105</a></div></div>
2241
- <div class="ttc" id="classSVF_1_1SVFG_html_ad03f0064d3a1ff397b35a606304a9c80"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">SVF::SVFG::addIntraIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addIntraIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &amp;cpts)</div><div class="ttdoc">Add indirect def-use edges of a memory region between two statements,. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00456">SVFG.cpp:456</a></div></div>
2252
+ <div class="ttc" id="classSVF_1_1SVFG_html_ad03f0064d3a1ff397b35a606304a9c80"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">SVF::SVFG::addIntraIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addIntraIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &amp;cpts)</div><div class="ttdoc">Add indirect def-use edges of a memory region between two statements,. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00460">SVFG.cpp:460</a></div></div>
2242
2253
  <div class="ttc" id="classSVF_1_1MemSSA_html_ad40617a1907b9a6b8cc24888ce54a0ac"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">SVF::MemSSA::getPTA</a></div><div class="ttdeci">BVDataPTAImpl * getPTA() const</div><div class="ttdoc">Return PTA. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00315">MemSSA.h:315</a></div></div>
2243
2254
  <div class="ttc" id="classSVF_1_1FormalINSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalINSVFGNode.html">SVF::FormalINSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00093">SVFGNode.h:93</a></div></div>
2244
2255
  </div><!-- fragment -->
@@ -2270,15 +2281,15 @@ Additional Inherited Members</h2></td></tr>
2270
2281
  <p>Connect direct <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> edges between two <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> nodes (value-flow of top address-taken variables) </p>
2271
2282
  <p>There's no need to connect actual out node to its definition site in the same function. </p>
2272
2283
 
2273
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00321">321</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2274
- <div class="fragment"><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;{</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">iterator</a> it = <a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = it-&gt;first;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadSVFGNode</a>* loadNode = SVFUtil::dyn_cast&lt;LoadSVFGNode&gt;(node))</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#acdbe1c510273107b708935061b6c4127">MUSet</a>&amp; muSet = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(SVFUtil::cast&lt;LoadStmt&gt;(loadNode-&gt;getPAGEdge()));</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">for</span>(MUSet::iterator it = muSet.begin(), eit = muSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFG.html#a86d4a41a881a3d2e5def103d7ba8bb2f">LOADMU</a>* mu = SVFUtil::dyn_cast&lt;LOADMU&gt;(*it))</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(mu-&gt;getMRVer());</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, mu-&gt;getMRVer()-&gt;getMR()-&gt;getPointsTo());</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* storeNode = SVFUtil::dyn_cast&lt;StoreSVFGNode&gt;(node))</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a8843ab4a4608f7f5f46f68ad31314c07">CHISet</a>&amp; chiSet = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(SVFUtil::cast&lt;StoreStmt&gt;(storeNode-&gt;getPAGEdge()));</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator it = chiSet.begin(), eit = chiSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFG.html#ad14cdbb3f1df1f716aa03b4d39f4e52b">STORECHI</a>* chi = SVFUtil::dyn_cast&lt;STORECHI&gt;(*it))</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(chi-&gt;getOpVer());</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, chi-&gt;getOpVer()-&gt;getMR()-&gt;getPointsTo());</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn = SVFUtil::dyn_cast&lt;FormalINSVFGNode&gt;(node))</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; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a> callInstSet;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a0d2544130cc2cdc3ac418c975c278eb2">getDirCallSitesInvokingCallee</a>(formalIn-&gt;getFun(),callInstSet);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::iterator it = callInstSet.begin(), eit = callInstSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = *it;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">hasMU</a>(cs))</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a">ActualINSVFGNodeSet</a>&amp; actualIns = <a class="code" href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975">getActualINSVFGNodes</a>(cs);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">for</span>(ActualINSVFGNodeSet::iterator ait = actualIns.begin(), aeit = actualIns.end(); ait!=aeit; ++ait)</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="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::cast&lt;ActualINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ait));</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">addInterIndirectVFCallEdge</a>(actualIn,formalIn,<a class="code" href="classSVF_1_1VFG.html#a5f82b3c2e8e6412e2781b960ffa98387">getCallSiteID</a>(cs, formalIn-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()));</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* formalOut = SVFUtil::dyn_cast&lt;FormalOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a> callInstSet;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="comment">// const MemSSA::RETMU* retMu = formalOut-&gt;getRetMU();</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a0d2544130cc2cdc3ac418c975c278eb2">getDirCallSitesInvokingCallee</a>(formalOut-&gt;getFun(),callInstSet);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::iterator it = callInstSet.begin(), eit = callInstSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = *it;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">hasCHI</a>(cs))</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">ActualOUTSVFGNodeSet</a>&amp; actualOuts = <a class="code" href="classSVF_1_1SVFG.html#a5b7ae610bee28acc2905ca82928e714f">getActualOUTSVFGNodes</a>(cs);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">for</span>(ActualOUTSVFGNodeSet::iterator ait = actualOuts.begin(), aeit = actualOuts.end(); ait!=aeit; ++ait)</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::cast&lt;ActualOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ait));</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">addInterIndirectVFRetEdge</a>(formalOut,actualOut,<a class="code" href="classSVF_1_1VFG.html#a5f82b3c2e8e6412e2781b960ffa98387">getCallSiteID</a>(cs, formalOut-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()));</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(formalOut-&gt;getMRVer());</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, formalOut-&gt;getMRVer()-&gt;getMR()-&gt;getPointsTo());</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::dyn_cast&lt;ActualINSVFGNode&gt;(node))</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* ver = actualIn-&gt;getMRVer();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(ver);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, ver-&gt;<a class="code" href="classSVF_1_1MRVer.html#a63bd0641be553860cc5f517634b65825">getMR</a>()-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>());</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; }</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ActualOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* phiNode = SVFUtil::dyn_cast&lt;MSSAPHISVFGNode&gt;(node))</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">for</span> (MemSSA::PHI::OPVers::const_iterator it = phiNode-&gt;opVerBegin(), eit = phiNode-&gt;opVerEnd();</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; it != eit; it++)</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* op = it-&gt;second;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(op);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, op-&gt;<a class="code" href="classSVF_1_1MRVer.html#a63bd0641be553860cc5f517634b65825">getMR</a>()-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>());</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a5921483cd5e1bf77b1b2bc8fb3250612">connectFromGlobalToProgEntry</a>();</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;}</div><div class="ttc" id="classSVF_1_1MRVer_html"><div class="ttname"><a href="classSVF_1_1MRVer.html">SVF::MRVer</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00043">MSSAMuChi.h:43</a></div></div>
2284
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00325">325</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2285
+ <div class="fragment"><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;{</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">iterator</a> it = <a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = it-&gt;first;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadSVFGNode</a>* loadNode = SVFUtil::dyn_cast&lt;LoadSVFGNode&gt;(node))</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#acdbe1c510273107b708935061b6c4127">MUSet</a>&amp; muSet = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(SVFUtil::cast&lt;LoadStmt&gt;(loadNode-&gt;getPAGEdge()));</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">for</span>(MUSet::iterator it = muSet.begin(), eit = muSet.end(); it!=eit; ++it)</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">if</span>(<a class="code" href="classSVF_1_1SVFG.html#a86d4a41a881a3d2e5def103d7ba8bb2f">LOADMU</a>* mu = SVFUtil::dyn_cast&lt;LOADMU&gt;(*it))</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="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(mu-&gt;getMRVer());</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, mu-&gt;getMRVer()-&gt;getMR()-&gt;getPointsTo());</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* storeNode = SVFUtil::dyn_cast&lt;StoreSVFGNode&gt;(node))</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; <a class="code" href="classSVF_1_1SVFG.html#a8843ab4a4608f7f5f46f68ad31314c07">CHISet</a>&amp; chiSet = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(SVFUtil::cast&lt;StoreStmt&gt;(storeNode-&gt;getPAGEdge()));</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator it = chiSet.begin(), eit = chiSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFG.html#ad14cdbb3f1df1f716aa03b4d39f4e52b">STORECHI</a>* chi = SVFUtil::dyn_cast&lt;STORECHI&gt;(*it))</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(chi-&gt;getOpVer());</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, chi-&gt;getOpVer()-&gt;getMR()-&gt;getPointsTo());</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">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn = SVFUtil::dyn_cast&lt;FormalINSVFGNode&gt;(node))</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a> callInstSet;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a0d2544130cc2cdc3ac418c975c278eb2">getDirCallSitesInvokingCallee</a>(formalIn-&gt;getFun(),callInstSet);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::iterator it = callInstSet.begin(), eit = callInstSet.end(); it!=eit; ++it)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = *it;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">hasMU</a>(cs))</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a">ActualINSVFGNodeSet</a>&amp; actualIns = <a class="code" href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975">getActualINSVFGNodes</a>(cs);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">for</span>(ActualINSVFGNodeSet::iterator ait = actualIns.begin(), aeit = actualIns.end(); ait!=aeit; ++ait)</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::cast&lt;ActualINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ait));</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">addInterIndirectVFCallEdge</a>(actualIn,formalIn,<a class="code" href="classSVF_1_1VFG.html#a5f82b3c2e8e6412e2781b960ffa98387">getCallSiteID</a>(cs, formalIn-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()));</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; }</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* formalOut = SVFUtil::dyn_cast&lt;FormalOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a> callInstSet;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="comment">// const MemSSA::RETMU* retMu = formalOut-&gt;getRetMU();</span></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a0d2544130cc2cdc3ac418c975c278eb2">getDirCallSitesInvokingCallee</a>(formalOut-&gt;getFun(),callInstSet);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::iterator it = callInstSet.begin(), eit = callInstSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = *it;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">hasCHI</a>(cs))</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">ActualOUTSVFGNodeSet</a>&amp; actualOuts = <a class="code" href="classSVF_1_1SVFG.html#a5b7ae610bee28acc2905ca82928e714f">getActualOUTSVFGNodes</a>(cs);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">for</span>(ActualOUTSVFGNodeSet::iterator ait = actualOuts.begin(), aeit = actualOuts.end(); ait!=aeit; ++ait)</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::cast&lt;ActualOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ait));</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">addInterIndirectVFRetEdge</a>(formalOut,actualOut,<a class="code" href="classSVF_1_1VFG.html#a5f82b3c2e8e6412e2781b960ffa98387">getCallSiteID</a>(cs, formalOut-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()));</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(formalOut-&gt;getMRVer());</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, formalOut-&gt;getMRVer()-&gt;getMR()-&gt;getPointsTo());</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::dyn_cast&lt;ActualINSVFGNode&gt;(node))</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* ver = actualIn-&gt;getMRVer();</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(ver);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, ver-&gt;<a class="code" href="classSVF_1_1MRVer.html#a63bd0641be553860cc5f517634b65825">getMR</a>()-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>());</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ActualOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* phiNode = SVFUtil::dyn_cast&lt;MSSAPHISVFGNode&gt;(node))</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">for</span> (MemSSA::PHI::OPVers::const_iterator it = phiNode-&gt;opVerBegin(), eit = phiNode-&gt;opVerEnd();</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; it != eit; it++)</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* op = it-&gt;second;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(op);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(def,nodeId, op-&gt;<a class="code" href="classSVF_1_1MRVer.html#a63bd0641be553860cc5f517634b65825">getMR</a>()-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>());</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; }</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a5921483cd5e1bf77b1b2bc8fb3250612">connectFromGlobalToProgEntry</a>();</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;}</div><div class="ttc" id="classSVF_1_1MRVer_html"><div class="ttname"><a href="classSVF_1_1MRVer.html">SVF::MRVer</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00043">MSSAMuChi.h:43</a></div></div>
2275
2286
  <div class="ttc" id="classSVF_1_1MemSSA_html_a2e656a50f8964fc3e99d1d436de64418"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">SVF::MemSSA::getCHISet</a></div><div class="ttdeci">CHISet &amp; getCHISet(const StoreStmt *st)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00392">MemSSA.h:392</a></div></div>
2276
2287
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
2277
2288
  <div class="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00240">VFGNode.h:240</a></div></div>
2278
2289
  <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>
2279
2290
  <div class="ttc" id="classSVF_1_1SVFG_html_acdbe1c510273107b708935061b6c4127"><div class="ttname"><a href="classSVF_1_1SVFG.html#acdbe1c510273107b708935061b6c4127">SVF::SVFG::MUSet</a></div><div class="ttdeci">MemSSA::MUSet MUSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00086">SVFG.h:86</a></div></div>
2280
2291
  <div class="ttc" id="classSVF_1_1VFG_html_a5f82b3c2e8e6412e2781b960ffa98387"><div class="ttname"><a href="classSVF_1_1VFG.html#a5f82b3c2e8e6412e2781b960ffa98387">SVF::VFG::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallICFGNode *cs, const SVFFunction *func) const</div><div class="ttdoc">Get callsite given a callsiteID. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00178">VFG.h:178</a></div></div>
2281
- <div class="ttc" id="classSVF_1_1SVFG_html_a5921483cd5e1bf77b1b2bc8fb3250612"><div class="ttname"><a href="classSVF_1_1SVFG.html#a5921483cd5e1bf77b1b2bc8fb3250612">SVF::SVFG::connectFromGlobalToProgEntry</a></div><div class="ttdeci">void connectFromGlobalToProgEntry()</div><div class="ttdoc">Connect indirect SVFG edges from global initializers (store) to main function entry. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00419">SVFG.cpp:419</a></div></div>
2292
+ <div class="ttc" id="classSVF_1_1SVFG_html_a5921483cd5e1bf77b1b2bc8fb3250612"><div class="ttname"><a href="classSVF_1_1SVFG.html#a5921483cd5e1bf77b1b2bc8fb3250612">SVF::SVFG::connectFromGlobalToProgEntry</a></div><div class="ttdeci">void connectFromGlobalToProgEntry()</div><div class="ttdoc">Connect indirect SVFG edges from global initializers (store) to main function entry. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00423">SVFG.cpp:423</a></div></div>
2282
2293
  <div class="ttc" id="classSVF_1_1SVFG_html_a86d4a41a881a3d2e5def103d7ba8bb2f"><div class="ttname"><a href="classSVF_1_1SVFG.html#a86d4a41a881a3d2e5def103d7ba8bb2f">SVF::SVFG::LOADMU</a></div><div class="ttdeci">MemSSA::LOADMU LOADMU</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00091">SVFG.h:91</a></div></div>
2283
2294
  <div class="ttc" id="classSVF_1_1FormalOUTSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalOUTSVFGNode.html">SVF::FormalOUTSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00138">SVFGNode.h:138</a></div></div>
2284
2295
  <div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00150">SVFG.h:150</a></div></div>
@@ -2295,10 +2306,10 @@ Additional Inherited Members</h2></td></tr>
2295
2306
  <div class="ttc" id="classSVF_1_1VFG_html_a241d0489bf0315460e2b07db87e7847c"><div class="ttname"><a href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVF::VFG::iterator</a></div><div class="ttdeci">VFGNodeIDToNodeMapTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00080">VFG.h:80</a></div></div>
2296
2307
  <div class="ttc" id="classSVF_1_1SVFG_html_a475205e221890204c7770c414ee63975"><div class="ttname"><a href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975">SVF::SVFG::getActualINSVFGNodes</a></div><div class="ttdeci">ActualINSVFGNodeSet &amp; getActualINSVFGNodes(const CallICFGNode *cs)</div><div class="ttdoc">Get SVFGNode set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00204">SVFG.h:204</a></div></div>
2297
2308
  <div class="ttc" id="classSVF_1_1MemSSA_html_af5e356e82c3f93b65bd89908e0f465dc"><div class="ttname"><a href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">SVF::MemSSA::hasMU</a></div><div class="ttdeci">bool hasMU(const PAGEdge *inst) const</div><div class="ttdoc">Has mu/chi methods. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00332">MemSSA.h:332</a></div></div>
2298
- <div class="ttc" id="classSVF_1_1SVFG_html_a57629591037e16e57a0178d102a405f2"><div class="ttname"><a href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">SVF::SVFG::addInterIndirectVFCallEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFCallEdge(const ActualINSVFGNode *src, const FormalINSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from callsite mu to function entry chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00538">SVFG.cpp:538</a></div></div>
2309
+ <div class="ttc" id="classSVF_1_1SVFG_html_a57629591037e16e57a0178d102a405f2"><div class="ttname"><a href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">SVF::SVFG::addInterIndirectVFCallEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFCallEdge(const ActualINSVFGNode *src, const FormalINSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from callsite mu to function entry chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00542">SVFG.cpp:542</a></div></div>
2299
2310
  <div class="ttc" id="classSVF_1_1LoadVFGNode_html"><div class="ttname"><a href="classSVF_1_1LoadVFGNode.html">SVF::LoadVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00199">VFGNode.h:199</a></div></div>
2300
- <div class="ttc" id="classSVF_1_1SVFG_html_ac9666ae7266cf1a9c0a5f7d28b39d1e9"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">SVF::SVFG::addInterIndirectVFRetEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFRetEdge(const FormalOUTSVFGNode *src, const ActualOUTSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from function exit mu to callsite chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00553">SVFG.cpp:553</a></div></div>
2301
- <div class="ttc" id="classSVF_1_1SVFG_html_abd917826bf50ed409a307ce00562c97d"><div class="ttname"><a href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">SVF::SVFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00346">SVFG.h:346</a></div></div>
2311
+ <div class="ttc" id="classSVF_1_1SVFG_html_ac9666ae7266cf1a9c0a5f7d28b39d1e9"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">SVF::SVFG::addInterIndirectVFRetEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFRetEdge(const FormalOUTSVFGNode *src, const ActualOUTSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from function exit mu to callsite chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00557">SVFG.cpp:557</a></div></div>
2312
+ <div class="ttc" id="classSVF_1_1SVFG_html_abd917826bf50ed409a307ce00562c97d"><div class="ttname"><a href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">SVF::SVFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00350">SVFG.h:350</a></div></div>
2302
2313
  <div class="ttc" id="classSVF_1_1MRVer_html_a63bd0641be553860cc5f517634b65825"><div class="ttname"><a href="classSVF_1_1MRVer.html#a63bd0641be553860cc5f517634b65825">SVF::MRVer::getMR</a></div><div class="ttdeci">const MemRegion * getMR() const</div><div class="ttdoc">Return the memory region. </div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00063">MSSAMuChi.h:63</a></div></div>
2303
2314
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a0d2544130cc2cdc3ac418c975c278eb2"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a0d2544130cc2cdc3ac418c975c278eb2">SVF::PTACallGraph::getDirCallSitesInvokingCallee</a></div><div class="ttdeci">void getDirCallSitesInvokingCallee(const SVFFunction *callee, PTACallGraphEdge::CallInstSet &amp;csSet)</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8cpp_source.html#l00231">PTACallGraph.cpp:231</a></div></div>
2304
2315
  <div class="ttc" id="classSVF_1_1SVFG_html_a2f6ed8a9f14657abc1e2a89247a84b99"><div class="ttname"><a href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">SVF::SVFG::ActualOUTSVFGNodeSet</a></div><div class="ttdeci">NodeBS ActualOUTSVFGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00079">SVFG.h:79</a></div></div>
@@ -2307,7 +2318,7 @@ Additional Inherited Members</h2></td></tr>
2307
2318
  <div class="ttc" id="classSVF_1_1SVFG_html_ad14cdbb3f1df1f716aa03b4d39f4e52b"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad14cdbb3f1df1f716aa03b4d39f4e52b">SVF::SVFG::STORECHI</a></div><div class="ttdeci">MemSSA::STORECHI STORECHI</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00092">SVFG.h:92</a></div></div>
2308
2319
  <div class="ttc" id="classSVF_1_1SVFG_html_a6f07410ee34e4bf1079e3b5902c81d28"><div class="ttname"><a href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">SVF::SVFG::mssa</a></div><div class="ttdeci">MemSSA * mssa</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00105">SVFG.h:105</a></div></div>
2309
2320
  <div class="ttc" id="classSVF_1_1SVFG_html_a8843ab4a4608f7f5f46f68ad31314c07"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8843ab4a4608f7f5f46f68ad31314c07">SVF::SVFG::CHISet</a></div><div class="ttdeci">MemSSA::CHISet CHISet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00087">SVFG.h:87</a></div></div>
2310
- <div class="ttc" id="classSVF_1_1SVFG_html_ad03f0064d3a1ff397b35a606304a9c80"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">SVF::SVFG::addIntraIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addIntraIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &amp;cpts)</div><div class="ttdoc">Add indirect def-use edges of a memory region between two statements,. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00456">SVFG.cpp:456</a></div></div>
2321
+ <div class="ttc" id="classSVF_1_1SVFG_html_ad03f0064d3a1ff397b35a606304a9c80"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">SVF::SVFG::addIntraIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addIntraIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &amp;cpts)</div><div class="ttdoc">Add indirect def-use edges of a memory region between two statements,. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00460">SVFG.cpp:460</a></div></div>
2311
2322
  <div class="ttc" id="classSVF_1_1MemSSA_html_ad40617a1907b9a6b8cc24888ce54a0ac"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">SVF::MemSSA::getPTA</a></div><div class="ttdeci">BVDataPTAImpl * getPTA() const</div><div class="ttdoc">Return PTA. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00315">MemSSA.h:315</a></div></div>
2312
2323
  <div class="ttc" id="classSVF_1_1FormalINSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalINSVFGNode.html">SVF::FormalINSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00093">SVFGNode.h:93</a></div></div>
2313
2324
  <div class="ttc" id="classSVF_1_1MemSSA_html_abfb338ce36ad46a9654d50dd6e2b07f1"><div class="ttname"><a href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">SVF::MemSSA::hasCHI</a></div><div class="ttdeci">bool hasCHI(const PAGEdge *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00343">MemSSA.h:343</a></div></div>
@@ -2376,8 +2387,8 @@ Additional Inherited Members</h2></td></tr>
2376
2387
  <p>Dump graph into dot file. </p>
2377
2388
  <p>Dump <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> </p>
2378
2389
 
2379
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00569">569</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2380
- <div class="fragment"><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;{</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <a class="code" href="classllvm_1_1GraphPrinter.html#af6ed328e74882d2b5e2b4039cb836928">GraphPrinter::WriteGraphToFile</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>(), file, <span class="keyword">this</span>, simple);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;}</div><div class="ttc" id="classllvm_1_1GraphPrinter_html_af6ed328e74882d2b5e2b4039cb836928"><div class="ttname"><a href="classllvm_1_1GraphPrinter.html#af6ed328e74882d2b5e2b4039cb836928">llvm::GraphPrinter::WriteGraphToFile</a></div><div class="ttdeci">static void WriteGraphToFile(SVF::OutStream &amp;O, const std::string &amp;GraphName, const GraphType &amp;GT, bool simple=false)</div><div class="ttdef"><b>Definition:</b> <a href="GraphPrinter_8h_source.html#l00058">GraphPrinter.h:58</a></div></div>
2390
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00573">573</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2391
+ <div class="fragment"><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;{</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="classllvm_1_1GraphPrinter.html#af6ed328e74882d2b5e2b4039cb836928">GraphPrinter::WriteGraphToFile</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>(), file, <span class="keyword">this</span>, simple);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;}</div><div class="ttc" id="classllvm_1_1GraphPrinter_html_af6ed328e74882d2b5e2b4039cb836928"><div class="ttname"><a href="classllvm_1_1GraphPrinter.html#af6ed328e74882d2b5e2b4039cb836928">llvm::GraphPrinter::WriteGraphToFile</a></div><div class="ttdeci">static void WriteGraphToFile(SVF::OutStream &amp;O, const std::string &amp;GraphName, const GraphType &amp;GT, bool simple=false)</div><div class="ttdef"><b>Definition:</b> <a href="GraphPrinter_8h_source.html#l00058">GraphPrinter.h:58</a></div></div>
2381
2392
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
2382
2393
  </div><!-- fragment -->
2383
2394
  </div>
@@ -2466,8 +2477,8 @@ Additional Inherited Members</h2></td></tr>
2466
2477
  </table>
2467
2478
  </div><div class="memdoc">
2468
2479
 
2469
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00346">346</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2470
- <div class="fragment"><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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">VFG::getDef</a>(pagNode);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFG_html_a7343f970332391634f79b2023bba6650"><div class="ttname"><a href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">SVF::VFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00419">VFG.h:419</a></div></div>
2480
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00350">350</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2481
+ <div class="fragment"><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">VFG::getDef</a>(pagNode);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFG_html_a7343f970332391634f79b2023bba6650"><div class="ttname"><a href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">SVF::VFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00419">VFG.h:419</a></div></div>
2471
2482
  </div><!-- fragment -->
2472
2483
  </div>
2473
2484
  </div>
@@ -2495,8 +2506,8 @@ Additional Inherited Members</h2></td></tr>
2495
2506
  </table>
2496
2507
  </div><div class="memdoc">
2497
2508
 
2498
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00371">371</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2499
- <div class="fragment"><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; MSSAVarToDefMapTy::const_iterator it = <a class="code" href="classSVF_1_1SVFG.html#aafa1b445bd3578daaba8f82e517745f1">MSSAVarToDefMap</a>.find(mvar);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=<a class="code" href="classSVF_1_1SVFG.html#aafa1b445bd3578daaba8f82e517745f1">MSSAVarToDefMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;memory SSA does not have a definition??&quot;</span>);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
2509
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00375">375</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2510
+ <div class="fragment"><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; MSSAVarToDefMapTy::const_iterator it = <a class="code" href="classSVF_1_1SVFG.html#aafa1b445bd3578daaba8f82e517745f1">MSSAVarToDefMap</a>.find(mvar);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=<a class="code" href="classSVF_1_1SVFG.html#aafa1b445bd3578daaba8f82e517745f1">MSSAVarToDefMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;memory SSA does not have a definition??&quot;</span>);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
2500
2511
  <div class="ttc" id="classSVF_1_1SVFG_html_aafa1b445bd3578daaba8f82e517745f1"><div class="ttname"><a href="classSVF_1_1SVFG.html#aafa1b445bd3578daaba8f82e517745f1">SVF::SVFG::MSSAVarToDefMap</a></div><div class="ttdeci">MSSAVarToDefMapTy MSSAVarToDefMap</div><div class="ttdoc">map a memory SSA operator to its definition SVFG node </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00099">SVFG.h:99</a></div></div>
2501
2512
  </div><!-- fragment -->
2502
2513
  </div>
@@ -2529,7 +2540,7 @@ Additional Inherited Members</h2></td></tr>
2529
2540
 
2530
2541
  <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00171">171</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2531
2542
  <div class="fragment"><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(pagNode));</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00150">SVFG.h:150</a></div></div>
2532
- <div class="ttc" id="classSVF_1_1SVFG_html_abd917826bf50ed409a307ce00562c97d"><div class="ttname"><a href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">SVF::SVFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00346">SVFG.h:346</a></div></div>
2543
+ <div class="ttc" id="classSVF_1_1SVFG_html_abd917826bf50ed409a307ce00562c97d"><div class="ttname"><a href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">SVF::SVFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00350">SVFG.h:350</a></div></div>
2533
2544
  </div><!-- fragment -->
2534
2545
  </div>
2535
2546
  </div>
@@ -2631,8 +2642,8 @@ Additional Inherited Members</h2></td></tr>
2631
2642
  </table>
2632
2643
  </div><div class="memdoc">
2633
2644
 
2634
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00318">318</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2635
- <div class="fragment"><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> outIt = actualIn-&gt;OutEdgeBegin(), outEit = actualIn-&gt;OutEdgeEnd(); outIt != outEit; ++outIt)</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVFGEdge</a>* edge = *outIt;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">if</span> (edge-&gt;getDstNode()-&gt;getFun() == callee)</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; edges.insert(edge);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFGNode_html_a3c558955f60c237c558d8faafed781e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVF::VFGNode::const_iterator</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00060">VFGNode.h:60</a></div></div>
2645
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00322">322</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2646
+ <div class="fragment"><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> outIt = actualIn-&gt;OutEdgeBegin(), outEit = actualIn-&gt;OutEdgeEnd(); outIt != outEit; ++outIt)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVFGEdge</a>* edge = *outIt;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">if</span> (edge-&gt;getDstNode()-&gt;getFun() == callee)</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; edges.insert(edge);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFGNode_html_a3c558955f60c237c558d8faafed781e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVF::VFGNode::const_iterator</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00060">VFGNode.h:60</a></div></div>
2636
2647
  <div class="ttc" id="namespaceSVF_html_aa4745cf70b26e17d59752356f0b19dd9"><div class="ttname"><a href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVF::SVFGEdge</a></div><div class="ttdeci">VFGEdge SVFGEdge</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00040">SVFG.h:40</a></div></div>
2637
2648
  </div><!-- fragment -->
2638
2649
  </div>
@@ -2691,13 +2702,13 @@ Additional Inherited Members</h2></td></tr>
2691
2702
 
2692
2703
  <p>Get inter value flow edges between indirect call site and callee. </p>
2693
2704
 
2694
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00300">300</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2695
- <div class="fragment"><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a>* actualParam = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(cs_arg));</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a>* formalParam = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(fun_arg));</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(actualParam, formalParam, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8383c27feab3f1acc67cacef9744c04a">SVFGEdge::CallDirVF</a>, csId);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge != <span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;Can not find inter value flow edge from aparam to fparam&quot;</span>);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; edges.insert(edge);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFG_html_ad86631f70bd702b5635bdbeab7d884b9"><div class="ttname"><a href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">SVF::VFG::hasInterVFGEdge</a></div><div class="ttdeci">VFGEdge * hasInterVFGEdge(VFGNode *src, VFGNode *dst, VFGEdge::VFGEdgeK kind, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00892">VFG.cpp:892</a></div></div>
2705
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00304">304</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2706
+ <div class="fragment"><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; <a class="code" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a>* actualParam = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(cs_arg));</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a>* formalParam = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(fun_arg));</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(actualParam, formalParam, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8383c27feab3f1acc67cacef9744c04a">SVFGEdge::CallDirVF</a>, csId);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge != <span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;Can not find inter value flow edge from aparam to fparam&quot;</span>);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; edges.insert(edge);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFG_html_ad86631f70bd702b5635bdbeab7d884b9"><div class="ttname"><a href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">SVF::VFG::hasInterVFGEdge</a></div><div class="ttdeci">VFGEdge * hasInterVFGEdge(VFGNode *src, VFGNode *dst, VFGEdge::VFGEdgeK kind, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00892">VFG.cpp:892</a></div></div>
2696
2707
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
2697
2708
  <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>
2698
2709
  <div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00150">SVFG.h:150</a></div></div>
2699
2710
  <div class="ttc" id="namespaceSVF_html_a5dfa3fa5129bacdc0be0c051ccf386df"><div class="ttname"><a href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVF::SVFGNode</a></div><div class="ttdeci">VFGNode SVFGNode</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00043">SVFG.h:43</a></div></div>
2700
- <div class="ttc" id="classSVF_1_1SVFG_html_abd917826bf50ed409a307ce00562c97d"><div class="ttname"><a href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">SVF::SVFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00346">SVFG.h:346</a></div></div>
2711
+ <div class="ttc" id="classSVF_1_1SVFG_html_abd917826bf50ed409a307ce00562c97d"><div class="ttname"><a href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">SVF::SVFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00350">SVFG.h:350</a></div></div>
2701
2712
  <div class="ttc" id="namespaceSVF_html_aa4745cf70b26e17d59752356f0b19dd9"><div class="ttname"><a href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVF::SVFGEdge</a></div><div class="ttdeci">VFGEdge SVFGEdge</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00040">SVFG.h:40</a></div></div>
2702
2713
  </div><!-- fragment -->
2703
2714
  </div>
@@ -2742,8 +2753,8 @@ Additional Inherited Members</h2></td></tr>
2742
2753
  </table>
2743
2754
  </div><div class="memdoc">
2744
2755
 
2745
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00328">328</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2746
- <div class="fragment"><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> inIt = actualOut-&gt;InEdgeBegin(), inEit = actualOut-&gt;InEdgeEnd(); inIt != inEit; ++inIt)</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <a class="code" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVFGEdge</a>* edge = *inIt;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">if</span> (edge-&gt;getSrcNode()-&gt;getFun() == callee)</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; edges.insert(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; }</div><div class="ttc" id="classSVF_1_1VFGNode_html_a3c558955f60c237c558d8faafed781e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVF::VFGNode::const_iterator</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00060">VFGNode.h:60</a></div></div>
2756
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00332">332</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2757
+ <div class="fragment"><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> inIt = actualOut-&gt;InEdgeBegin(), inEit = actualOut-&gt;InEdgeEnd(); inIt != inEit; ++inIt)</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; <a class="code" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVFGEdge</a>* edge = *inIt;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">if</span> (edge-&gt;getSrcNode()-&gt;getFun() == callee)</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; edges.insert(edge);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFGNode_html_a3c558955f60c237c558d8faafed781e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVF::VFGNode::const_iterator</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00060">VFGNode.h:60</a></div></div>
2747
2758
  <div class="ttc" id="namespaceSVF_html_aa4745cf70b26e17d59752356f0b19dd9"><div class="ttname"><a href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVF::SVFGEdge</a></div><div class="ttdeci">VFGEdge SVFGEdge</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00040">SVFG.h:40</a></div></div>
2748
2759
  </div><!-- fragment -->
2749
2760
  </div>
@@ -2794,13 +2805,13 @@ Additional Inherited Members</h2></td></tr>
2794
2805
  </table>
2795
2806
  </div><div class="memdoc">
2796
2807
 
2797
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00309">309</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2798
- <div class="fragment"><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; <a class="code" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a>* formalRet = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(fun_ret));</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a>* actualRet = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(cs_ret));</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(formalRet, actualRet, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8288c583cfcbfdf9aa2ac2103c0e7191">SVFGEdge::RetDirVF</a>, csId);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge != <span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;Can not find inter value flow edge from fret to aret&quot;</span>);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; edges.insert(edge);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFG_html_ad86631f70bd702b5635bdbeab7d884b9"><div class="ttname"><a href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">SVF::VFG::hasInterVFGEdge</a></div><div class="ttdeci">VFGEdge * hasInterVFGEdge(VFGNode *src, VFGNode *dst, VFGEdge::VFGEdgeK kind, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00892">VFG.cpp:892</a></div></div>
2808
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00313">313</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
2809
+ <div class="fragment"><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a>* formalRet = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(fun_ret));</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a>* actualRet = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(cs_ret));</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(formalRet, actualRet, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8288c583cfcbfdf9aa2ac2103c0e7191">SVFGEdge::RetDirVF</a>, csId);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge != <span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;Can not find inter value flow edge from fret to aret&quot;</span>);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; edges.insert(edge);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFG_html_ad86631f70bd702b5635bdbeab7d884b9"><div class="ttname"><a href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">SVF::VFG::hasInterVFGEdge</a></div><div class="ttdeci">VFGEdge * hasInterVFGEdge(VFGNode *src, VFGNode *dst, VFGEdge::VFGEdgeK kind, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00892">VFG.cpp:892</a></div></div>
2799
2810
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
2800
2811
  <div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00150">SVFG.h:150</a></div></div>
2801
2812
  <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>
2802
2813
  <div class="ttc" id="namespaceSVF_html_a5dfa3fa5129bacdc0be0c051ccf386df"><div class="ttname"><a href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVF::SVFGNode</a></div><div class="ttdeci">VFGNode SVFGNode</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00043">SVFG.h:43</a></div></div>
2803
- <div class="ttc" id="classSVF_1_1SVFG_html_abd917826bf50ed409a307ce00562c97d"><div class="ttname"><a href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">SVF::SVFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00346">SVFG.h:346</a></div></div>
2814
+ <div class="ttc" id="classSVF_1_1SVFG_html_abd917826bf50ed409a307ce00562c97d"><div class="ttname"><a href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">SVF::SVFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00350">SVFG.h:350</a></div></div>
2804
2815
  <div class="ttc" id="namespaceSVF_html_aa4745cf70b26e17d59752356f0b19dd9"><div class="ttname"><a href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVF::SVFGEdge</a></div><div class="ttdeci">VFGEdge SVFGEdge</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00040">SVFG.h:40</a></div></div>
2805
2816
  </div><!-- fragment -->
2806
2817
  </div>
@@ -2815,7 +2826,7 @@ Additional Inherited Members</h2></td></tr>
2815
2826
  <td class="memname">void SVFG::getInterVFEdgesForIndirectCallSite </td>
2816
2827
  <td>(</td>
2817
2828
  <td class="paramtype">const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *&#160;</td>
2818
- <td class="paramname"><em>callBlockNode</em>, </td>
2829
+ <td class="paramname"><em>callICFGNode</em>, </td>
2819
2830
  </tr>
2820
2831
  <tr>
2821
2832
  <td class="paramkey"></td>
@@ -2840,8 +2851,8 @@ Additional Inherited Members</h2></td></tr>
2840
2851
  <p>Get all inter value flow edges of a indirect call site. </p>
2841
2852
  <p>Get all inter value flow edges at this indirect call site, including call and return edges. </p>
2842
2853
 
2843
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00577">577</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2844
- <div class="fragment"><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;{</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = <a class="code" href="classSVF_1_1VFG.html#a5f82b3c2e8e6412e2781b960ffa98387">getCallSiteID</a>(callBlockNode, callee);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retBlockNode = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">getRetICFGNode</a>(callBlockNode-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>());</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="comment">// Find inter direct call edges between actual param and formal param.</span></div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a95f77211550ec2374d57779d88cf5138">hasCallSiteArgsMap</a>(callBlockNode) &amp;&amp; <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ac359813747b4f75920c5f395ba74f410">hasFunArgsList</a>(callee))</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVFIR::SVFVarList</a>&amp; csArgList = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2a1e8ce39bf8deace3c344d5f05fe6ac">getCallSiteArgsList</a>(callBlockNode);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVFIR::SVFVarList</a>&amp; funArgList = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa148e3e14ebad8460e32079f2f44413a">getFunArgsList</a>(callee);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; SVFIR::SVFVarList::const_iterator csArgIt = csArgList.begin(), csArgEit = csArgList.end();</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; SVFIR::SVFVarList::const_iterator funArgIt = funArgList.begin(), funArgEit = funArgList.end();</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">for</span> (; funArgIt != funArgEit &amp;&amp; csArgIt != csArgEit; funArgIt++, csArgIt++)</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; {</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *cs_arg = *csArgIt;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *fun_arg = *funArgIt;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">if</span> (fun_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>() &amp;&amp; cs_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ac1acdf7bc468d7734359591e45f485fe">getInterVFEdgeAtIndCSFromAPToFP</a>(cs_arg, fun_arg, callBlockNode, csId, edges);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; }</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(funArgIt == funArgEit &amp;&amp; <span class="stringliteral">&quot;function has more arguments than call site&quot;</span>);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">if</span> (callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;isVarArg())</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; {</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> varFunArg = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a8b10c318674a47035d617b3ade4f069b">getVarargNode</a>(callee);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* varFunArgNode = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(varFunArg);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">if</span> (varFunArgNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; {</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">for</span> (; csArgIt != csArgEit; csArgIt++)</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; {</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *cs_arg = *csArgIt;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">if</span> (cs_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ac1acdf7bc468d7734359591e45f485fe">getInterVFEdgeAtIndCSFromAPToFP</a>(cs_arg, varFunArgNode, callBlockNode, csId, edges);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; }</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; }</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="comment">// Find inter direct return edges between actual return and formal return.</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#afe8274c3b7317fccef5314662a182046">funHasRet</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa79dba26cb34b40eee682713db299d5f">callsiteHasRet</a>(retBlockNode))</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* cs_return = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3145677c7a3763fc0d6aa7e21b264ab6">getCallSiteRet</a>(retBlockNode);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fun_return = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a34e27b8bcfeaafda190dcdb9169a346f">getFunRet</a>(callee);</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordflow">if</span> (cs_return-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>() &amp;&amp; fun_return-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ab2b969b7d5922427622dd875e6b8fe14">getInterVFEdgeAtIndCSFromFRToAR</a>(fun_return, cs_return, csId, edges);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; }</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="comment">// Find inter indirect call edges between actual-in and formal-in svfg nodes.</span></div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFG.html#a23ca21b90feca5e7d00c9ba9f489374a">hasFuncEntryChi</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1SVFG.html#a842f6f2325c9e93ea96367e9cf624ee8">hasCallSiteMu</a>(callBlockNode))</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a">SVFG::ActualINSVFGNodeSet</a>&amp; actualInNodes = <a class="code" href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975">getActualINSVFGNodes</a>(callBlockNode);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">for</span>(SVFG::ActualINSVFGNodeSet::iterator ai_it = actualInNodes.begin(),</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; ai_eit = actualInNodes.end(); ai_it!=ai_eit; ++ai_it)</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a> * actualIn = SVFUtil::cast&lt;ActualINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ai_it));</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#afbaf925e1e165f75161999229fa5f782">getInterVFEdgeAtIndCSFromAInToFIn</a>(actualIn, callee, edges);</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; }</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; }</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="comment">// Find inter indirect return edges between actual-out and formal-out svfg nodes.</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFG.html#a32378226c18a0b1e22271a2338a635f6">hasFuncRetMu</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1SVFG.html#ad9cc1581261182b56ae232d9a9b13296">hasCallSiteChi</a>(callBlockNode))</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; {</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">SVFG::ActualOUTSVFGNodeSet</a>&amp; actualOutNodes = <a class="code" href="classSVF_1_1SVFG.html#a5b7ae610bee28acc2905ca82928e714f">getActualOUTSVFGNodes</a>(callBlockNode);</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">for</span>(SVFG::ActualOUTSVFGNodeSet::iterator ao_it = actualOutNodes.begin(),</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; ao_eit = actualOutNodes.end(); ao_it!=ao_eit; ++ao_it)</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; {</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::cast&lt;ActualOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ao_it));</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a7a88391e0c2cf8a57238dec32c2474a3">getInterVFEdgeAtIndCSFromFOutToAOut</a>(actualOut, callee, edges);</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; }</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; }</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_a64939d7ecfd8e2cf862782954a56596b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVF::SVFIR::SVFVarList</a></div><div class="ttdeci">std::vector&lt; const SVFVar * &gt; SVFVarList</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00057">SVFIR.h:57</a></div></div>
2854
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00581">581</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
2855
+ <div class="fragment"><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;{</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = <a class="code" href="classSVF_1_1VFG.html#a5f82b3c2e8e6412e2781b960ffa98387">getCallSiteID</a>(callICFGNode, callee);</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retICFGNode = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">getRetICFGNode</a>(callICFGNode-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>());</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="comment">// Find inter direct call edges between actual param and formal param.</span></div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a95f77211550ec2374d57779d88cf5138">hasCallSiteArgsMap</a>(callICFGNode) &amp;&amp; <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ac359813747b4f75920c5f395ba74f410">hasFunArgsList</a>(callee))</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVFIR::SVFVarList</a>&amp; csArgList = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2a1e8ce39bf8deace3c344d5f05fe6ac">getCallSiteArgsList</a>(callICFGNode);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVFIR::SVFVarList</a>&amp; funArgList = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa148e3e14ebad8460e32079f2f44413a">getFunArgsList</a>(callee);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; SVFIR::SVFVarList::const_iterator csArgIt = csArgList.begin(), csArgEit = csArgList.end();</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; SVFIR::SVFVarList::const_iterator funArgIt = funArgList.begin(), funArgEit = funArgList.end();</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">for</span> (; funArgIt != funArgEit &amp;&amp; csArgIt != csArgEit; funArgIt++, csArgIt++)</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *cs_arg = *csArgIt;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *fun_arg = *funArgIt;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">if</span> (fun_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>() &amp;&amp; cs_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ac1acdf7bc468d7734359591e45f485fe">getInterVFEdgeAtIndCSFromAPToFP</a>(cs_arg, fun_arg, callICFGNode, csId, edges);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; }</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(funArgIt == funArgEit &amp;&amp; <span class="stringliteral">&quot;function has more arguments than call site&quot;</span>);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">if</span> (callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;isVarArg())</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; {</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> varFunArg = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a8b10c318674a47035d617b3ade4f069b">getVarargNode</a>(callee);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* varFunArgNode = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(varFunArg);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">if</span> (varFunArgNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">for</span> (; csArgIt != csArgEit; csArgIt++)</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; {</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *cs_arg = *csArgIt;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keywordflow">if</span> (cs_arg-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ac1acdf7bc468d7734359591e45f485fe">getInterVFEdgeAtIndCSFromAPToFP</a>(cs_arg, varFunArgNode, callICFGNode, csId, edges);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; }</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; }</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; }</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; }</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="comment">// Find inter direct return edges between actual return and formal return.</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#afe8274c3b7317fccef5314662a182046">funHasRet</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa79dba26cb34b40eee682713db299d5f">callsiteHasRet</a>(retICFGNode))</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; {</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* cs_return = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3145677c7a3763fc0d6aa7e21b264ab6">getCallSiteRet</a>(retICFGNode);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fun_return = <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a34e27b8bcfeaafda190dcdb9169a346f">getFunRet</a>(callee);</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">if</span> (cs_return-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>() &amp;&amp; fun_return-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ab2b969b7d5922427622dd875e6b8fe14">getInterVFEdgeAtIndCSFromFRToAR</a>(fun_return, cs_return, csId, edges);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; }</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="comment">// Find inter indirect call edges between actual-in and formal-in svfg nodes.</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFG.html#a23ca21b90feca5e7d00c9ba9f489374a">hasFuncEntryChi</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1SVFG.html#a842f6f2325c9e93ea96367e9cf624ee8">hasCallSiteMu</a>(callICFGNode))</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a">SVFG::ActualINSVFGNodeSet</a>&amp; actualInNodes = <a class="code" href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975">getActualINSVFGNodes</a>(callICFGNode);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">for</span>(SVFG::ActualINSVFGNodeSet::iterator ai_it = actualInNodes.begin(),</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; ai_eit = actualInNodes.end(); ai_it!=ai_eit; ++ai_it)</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; {</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a> * actualIn = SVFUtil::cast&lt;ActualINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ai_it));</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#afbaf925e1e165f75161999229fa5f782">getInterVFEdgeAtIndCSFromAInToFIn</a>(actualIn, callee, edges);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; }</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="comment">// Find inter indirect return edges between actual-out and formal-out svfg nodes.</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFG.html#a32378226c18a0b1e22271a2338a635f6">hasFuncRetMu</a>(callee) &amp;&amp; <a class="code" href="classSVF_1_1SVFG.html#ad9cc1581261182b56ae232d9a9b13296">hasCallSiteChi</a>(callICFGNode))</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; {</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">SVFG::ActualOUTSVFGNodeSet</a>&amp; actualOutNodes = <a class="code" href="classSVF_1_1SVFG.html#a5b7ae610bee28acc2905ca82928e714f">getActualOUTSVFGNodes</a>(callICFGNode);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">for</span>(SVFG::ActualOUTSVFGNodeSet::iterator ao_it = actualOutNodes.begin(),</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; ao_eit = actualOutNodes.end(); ao_it!=ao_eit; ++ao_it)</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; {</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::cast&lt;ActualOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ao_it));</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a7a88391e0c2cf8a57238dec32c2474a3">getInterVFEdgeAtIndCSFromFOutToAOut</a>(actualOut, callee, edges);</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; }</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_a64939d7ecfd8e2cf862782954a56596b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVF::SVFIR::SVFVarList</a></div><div class="ttdeci">std::vector&lt; const SVFVar * &gt; SVFVarList</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00057">SVFIR.h:57</a></div></div>
2845
2856
  <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>
2846
2857
  <div class="ttc" id="classSVF_1_1IRGraph_html_a8b10c318674a47035d617b3ade4f069b"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a8b10c318674a47035d617b3ade4f069b">SVF::IRGraph::getVarargNode</a></div><div class="ttdeci">NodeID getVarargNode(const SVFFunction *func) const</div><div class="ttdoc">getVarargNode - Return the unique node representing the variadic argument of a variadic function...</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00144">IRGraph.h:144</a></div></div>
2847
2858
  <div class="ttc" id="classSVF_1_1VFG_html_a5f82b3c2e8e6412e2781b960ffa98387"><div class="ttname"><a href="classSVF_1_1VFG.html#a5f82b3c2e8e6412e2781b960ffa98387">SVF::VFG::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallICFGNode *cs, const SVFFunction *func) const</div><div class="ttdoc">Get callsite given a callsiteID. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00178">VFG.h:178</a></div></div>
@@ -2858,27 +2869,61 @@ Additional Inherited Members</h2></td></tr>
2858
2869
  <div class="ttc" id="classSVF_1_1SVFG_html_a5b7ae610bee28acc2905ca82928e714f"><div class="ttname"><a href="classSVF_1_1SVFG.html#a5b7ae610bee28acc2905ca82928e714f">SVF::SVFG::getActualOUTSVFGNodes</a></div><div class="ttdeci">ActualOUTSVFGNodeSet &amp; getActualOUTSVFGNodes(const CallICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00209">SVFG.h:209</a></div></div>
2859
2870
  <div class="ttc" id="classSVF_1_1SVFIR_html_a2a1e8ce39bf8deace3c344d5f05fe6ac"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2a1e8ce39bf8deace3c344d5f05fe6ac">SVF::SVFIR::getCallSiteArgsList</a></div><div class="ttdeci">const SVFVarList &amp; getCallSiteArgsList(const CallICFGNode *cs) const</div><div class="ttdoc">Get callsite argument list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00242">SVFIR.h:242</a></div></div>
2860
2871
  <div class="ttc" id="classSVF_1_1SVFG_html_a475205e221890204c7770c414ee63975"><div class="ttname"><a href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975">SVF::SVFG::getActualINSVFGNodes</a></div><div class="ttdeci">ActualINSVFGNodeSet &amp; getActualINSVFGNodes(const CallICFGNode *cs)</div><div class="ttdoc">Get SVFGNode set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00204">SVFG.h:204</a></div></div>
2861
- <div class="ttc" id="classSVF_1_1SVFG_html_ac1acdf7bc468d7734359591e45f485fe"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac1acdf7bc468d7734359591e45f485fe">SVF::SVFG::getInterVFEdgeAtIndCSFromAPToFP</a></div><div class="ttdeci">virtual void getInterVFEdgeAtIndCSFromAPToFP(const PAGNode *cs_arg, const PAGNode *fun_arg, const CallICFGNode *, CallSiteID csId, SVFGEdgeSetTy &amp;edges)</div><div class="ttdoc">Get inter value flow edges between indirect call site and callee. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00300">SVFG.h:300</a></div></div>
2872
+ <div class="ttc" id="classSVF_1_1SVFG_html_ac1acdf7bc468d7734359591e45f485fe"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac1acdf7bc468d7734359591e45f485fe">SVF::SVFG::getInterVFEdgeAtIndCSFromAPToFP</a></div><div class="ttdeci">virtual void getInterVFEdgeAtIndCSFromAPToFP(const PAGNode *cs_arg, const PAGNode *fun_arg, const CallICFGNode *, CallSiteID csId, SVFGEdgeSetTy &amp;edges)</div><div class="ttdoc">Get inter value flow edges between indirect call site and callee. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00304">SVFG.h:304</a></div></div>
2862
2873
  <div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00092">SVFBasicTypes.h:92</a></div></div>
2863
2874
  <div class="ttc" id="classSVF_1_1VFG_html_a25c2bbbc2e966e2aaa59a5b83363557a"><div class="ttname"><a href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">SVF::VFG::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00104">VFG.h:104</a></div></div>
2864
2875
  <div class="ttc" id="classSVF_1_1SVFIR_html_ac359813747b4f75920c5f395ba74f410"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac359813747b4f75920c5f395ba74f410">SVF::SVFIR::hasFunArgsList</a></div><div class="ttdeci">bool hasFunArgsList(const SVFFunction *func) const</div><div class="ttdoc">Function has arguments list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00215">SVFIR.h:215</a></div></div>
2865
2876
  <div class="ttc" id="classSVF_1_1SVFIR_html_aa148e3e14ebad8460e32079f2f44413a"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa148e3e14ebad8460e32079f2f44413a">SVF::SVFIR::getFunArgsList</a></div><div class="ttdeci">const SVFVarList &amp; getFunArgsList(const SVFFunction *func) const</div><div class="ttdoc">Get function arguments list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00225">SVFIR.h:225</a></div></div>
2866
- <div class="ttc" id="classSVF_1_1SVFG_html_a32378226c18a0b1e22271a2338a635f6"><div class="ttname"><a href="classSVF_1_1SVFG.html#a32378226c18a0b1e22271a2338a635f6">SVF::SVFG::hasFuncRetMu</a></div><div class="ttdeci">bool hasFuncRetMu(const SVFFunction *func) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00443">SVFG.h:443</a></div></div>
2877
+ <div class="ttc" id="classSVF_1_1SVFG_html_a32378226c18a0b1e22271a2338a635f6"><div class="ttname"><a href="classSVF_1_1SVFG.html#a32378226c18a0b1e22271a2338a635f6">SVF::SVFG::hasFuncRetMu</a></div><div class="ttdeci">bool hasFuncRetMu(const SVFFunction *func) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00447">SVFG.h:447</a></div></div>
2867
2878
  <div class="ttc" id="classSVF_1_1SVFIR_html_afe8274c3b7317fccef5314662a182046"><div class="ttname"><a href="classSVF_1_1SVFIR.html#afe8274c3b7317fccef5314662a182046">SVF::SVFIR::funHasRet</a></div><div class="ttdeci">bool funHasRet(const SVFFunction *func) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00276">SVFIR.h:276</a></div></div>
2868
- <div class="ttc" id="classSVF_1_1SVFG_html_afbaf925e1e165f75161999229fa5f782"><div class="ttname"><a href="classSVF_1_1SVFG.html#afbaf925e1e165f75161999229fa5f782">SVF::SVFG::getInterVFEdgeAtIndCSFromAInToFIn</a></div><div class="ttdeci">virtual void getInterVFEdgeAtIndCSFromAInToFIn(ActualINSVFGNode *actualIn, const SVFFunction *callee, SVFGEdgeSetTy &amp;edges)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00318">SVFG.h:318</a></div></div>
2869
- <div class="ttc" id="classSVF_1_1SVFG_html_a23ca21b90feca5e7d00c9ba9f489374a"><div class="ttname"><a href="classSVF_1_1SVFG.html#a23ca21b90feca5e7d00c9ba9f489374a">SVF::SVFG::hasFuncEntryChi</a></div><div class="ttdeci">bool hasFuncEntryChi(const SVFFunction *func) const</div><div class="ttdoc">Has function for EntryCHI/RetMU/CallCHI/CallMU. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00439">SVFG.h:439</a></div></div>
2879
+ <div class="ttc" id="classSVF_1_1SVFG_html_afbaf925e1e165f75161999229fa5f782"><div class="ttname"><a href="classSVF_1_1SVFG.html#afbaf925e1e165f75161999229fa5f782">SVF::SVFG::getInterVFEdgeAtIndCSFromAInToFIn</a></div><div class="ttdeci">virtual void getInterVFEdgeAtIndCSFromAInToFIn(ActualINSVFGNode *actualIn, const SVFFunction *callee, SVFGEdgeSetTy &amp;edges)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00322">SVFG.h:322</a></div></div>
2880
+ <div class="ttc" id="classSVF_1_1SVFG_html_a23ca21b90feca5e7d00c9ba9f489374a"><div class="ttname"><a href="classSVF_1_1SVFG.html#a23ca21b90feca5e7d00c9ba9f489374a">SVF::SVFG::hasFuncEntryChi</a></div><div class="ttdeci">bool hasFuncEntryChi(const SVFFunction *func) const</div><div class="ttdoc">Has function for EntryCHI/RetMU/CallCHI/CallMU. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00443">SVFG.h:443</a></div></div>
2870
2881
  <div class="ttc" id="classSVF_1_1CallICFGNode_html_a674753d5ca0fbe28674acb25291f2bcf"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">SVF::CallICFGNode::getCallSite</a></div><div class="ttdeci">const Instruction * getCallSite() const</div><div class="ttdoc">Return callsite. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00380">ICFGNode.h:380</a></div></div>
2871
2882
  <div class="ttc" id="classSVF_1_1SVFG_html_a2f6ed8a9f14657abc1e2a89247a84b99"><div class="ttname"><a href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">SVF::SVFG::ActualOUTSVFGNodeSet</a></div><div class="ttdeci">NodeBS ActualOUTSVFGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00079">SVFG.h:79</a></div></div>
2872
- <div class="ttc" id="classSVF_1_1SVFG_html_ad9cc1581261182b56ae232d9a9b13296"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad9cc1581261182b56ae232d9a9b13296">SVF::SVFG::hasCallSiteChi</a></div><div class="ttdeci">bool hasCallSiteChi(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00447">SVFG.h:447</a></div></div>
2883
+ <div class="ttc" id="classSVF_1_1SVFG_html_ad9cc1581261182b56ae232d9a9b13296"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad9cc1581261182b56ae232d9a9b13296">SVF::SVFG::hasCallSiteChi</a></div><div class="ttdeci">bool hasCallSiteChi(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00451">SVFG.h:451</a></div></div>
2873
2884
  <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00140">BasicTypes.h:140</a></div></div>
2874
2885
  <div class="ttc" id="classSVF_1_1SVFIR_html_a34e27b8bcfeaafda190dcdb9169a346f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a34e27b8bcfeaafda190dcdb9169a346f">SVF::SVFIR::getFunRet</a></div><div class="ttdeci">const SVFVar * getFunRet(const SVFFunction *func) const</div><div class="ttdoc">Get function return list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00270">SVFIR.h:270</a></div></div>
2875
- <div class="ttc" id="classSVF_1_1SVFG_html_a842f6f2325c9e93ea96367e9cf624ee8"><div class="ttname"><a href="classSVF_1_1SVFG.html#a842f6f2325c9e93ea96367e9cf624ee8">SVF::SVFG::hasCallSiteMu</a></div><div class="ttdeci">bool hasCallSiteMu(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00451">SVFG.h:451</a></div></div>
2876
- <div class="ttc" id="classSVF_1_1SVFG_html_a7a88391e0c2cf8a57238dec32c2474a3"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7a88391e0c2cf8a57238dec32c2474a3">SVF::SVFG::getInterVFEdgeAtIndCSFromFOutToAOut</a></div><div class="ttdeci">virtual void getInterVFEdgeAtIndCSFromFOutToAOut(ActualOUTSVFGNode *actualOut, const SVFFunction *callee, SVFGEdgeSetTy &amp;edges)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00328">SVFG.h:328</a></div></div>
2886
+ <div class="ttc" id="classSVF_1_1SVFG_html_a842f6f2325c9e93ea96367e9cf624ee8"><div class="ttname"><a href="classSVF_1_1SVFG.html#a842f6f2325c9e93ea96367e9cf624ee8">SVF::SVFG::hasCallSiteMu</a></div><div class="ttdeci">bool hasCallSiteMu(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00455">SVFG.h:455</a></div></div>
2887
+ <div class="ttc" id="classSVF_1_1SVFG_html_a7a88391e0c2cf8a57238dec32c2474a3"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7a88391e0c2cf8a57238dec32c2474a3">SVF::SVFG::getInterVFEdgeAtIndCSFromFOutToAOut</a></div><div class="ttdeci">virtual void getInterVFEdgeAtIndCSFromFOutToAOut(ActualOUTSVFGNode *actualOut, const SVFFunction *callee, SVFGEdgeSetTy &amp;edges)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00332">SVFG.h:332</a></div></div>
2877
2888
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00391">GenericGraph.h:391</a></div></div>
2878
2889
  <div class="ttc" id="classSVF_1_1SVFIR_html_a3145677c7a3763fc0d6aa7e21b264ab6"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3145677c7a3763fc0d6aa7e21b264ab6">SVF::SVFIR::getCallSiteRet</a></div><div class="ttdeci">const SVFVar * getCallSiteRet(const RetICFGNode *cs) const</div><div class="ttdoc">Get callsite return. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00254">SVFIR.h:254</a></div></div>
2879
2890
  <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
2880
2891
  <div class="ttc" id="classSVF_1_1SVFIR_html_aa79dba26cb34b40eee682713db299d5f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa79dba26cb34b40eee682713db299d5f">SVF::SVFIR::callsiteHasRet</a></div><div class="ttdeci">bool callsiteHasRet(const RetICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00260">SVFIR.h:260</a></div></div>
2881
- <div class="ttc" id="classSVF_1_1SVFG_html_ab2b969b7d5922427622dd875e6b8fe14"><div class="ttname"><a href="classSVF_1_1SVFG.html#ab2b969b7d5922427622dd875e6b8fe14">SVF::SVFG::getInterVFEdgeAtIndCSFromFRToAR</a></div><div class="ttdeci">virtual void getInterVFEdgeAtIndCSFromFRToAR(const PAGNode *fun_ret, const PAGNode *cs_ret, CallSiteID csId, SVFGEdgeSetTy &amp;edges)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00309">SVFG.h:309</a></div></div>
2892
+ <div class="ttc" id="classSVF_1_1SVFG_html_ab2b969b7d5922427622dd875e6b8fe14"><div class="ttname"><a href="classSVF_1_1SVFG.html#ab2b969b7d5922427622dd875e6b8fe14">SVF::SVFG::getInterVFEdgeAtIndCSFromFRToAR</a></div><div class="ttdeci">virtual void getInterVFEdgeAtIndCSFromFRToAR(const PAGNode *fun_ret, const PAGNode *cs_ret, CallSiteID csId, SVFGEdgeSetTy &amp;edges)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00313">SVFG.h:313</a></div></div>
2893
+ </div><!-- fragment -->
2894
+ </div>
2895
+ </div>
2896
+ <a id="a910298ed854a6b88b9dae44181ca72de"></a>
2897
+ <h2 class="memtitle"><span class="permalink"><a href="#a910298ed854a6b88b9dae44181ca72de">&#9670;&nbsp;</a></span>getMRVERFromString()</h2>
2898
+
2899
+ <div class="memitem">
2900
+ <div class="memproto">
2901
+ <table class="mlabels">
2902
+ <tr>
2903
+ <td class="mlabels-left">
2904
+ <table class="memname">
2905
+ <tr>
2906
+ <td class="memname"><a class="el" href="classSVF_1_1MRVer.html">MRVer</a> * SVFG::getMRVERFromString </td>
2907
+ <td>(</td>
2908
+ <td class="paramtype">const std::string &amp;&#160;</td>
2909
+ <td class="paramname"><em>input</em></td><td>)</td>
2910
+ <td></td>
2911
+ </tr>
2912
+ </table>
2913
+ </td>
2914
+ <td class="mlabels-right">
2915
+ <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
2916
+ </tr>
2917
+ </table>
2918
+ </div><div class="memdoc">
2919
+
2920
+ <p class="definition">Definition at line <a class="el" href="SVFGReadWrite_8cpp_source.html#l00429">429</a> of file <a class="el" href="SVFGReadWrite_8cpp_source.html">SVFGReadWrite.cpp</a>.</p>
2921
+ <div class="fragment"><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;{</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">if</span>(s == <span class="stringliteral">&quot;&quot;</span>)</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordtype">string</span> temp;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordtype">size_t</span> last = 0;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordtype">size_t</span> next = 0;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* tempMRVer;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* tempMemRegion;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="classSVF_1_1MSSADEF.html">MSSADEF</a>* tempDef;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="comment">//{create Memory Region object</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; next = s.find(<span class="stringliteral">&quot;MemRegion: pts{&quot;</span>) + 15;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; last = s.find(<span class="stringliteral">&quot;} MRVERSION: &quot;</span>);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; temp = s.substr(next, last-next);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="comment">// convert string to PointsTo</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> dstPts;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordtype">string</span> point;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; stringstream ss(temp);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">while</span> (getline(ss, point, <span class="charliteral">&#39; &#39;</span>))</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; istringstream sss(point);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; sss &gt;&gt; obj;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; dstPts.set(obj);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; tempMemRegion = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>(dstPts);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="comment">// create mssdef</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; next = s.find(<span class="stringliteral">&quot;MSSADef: &quot;</span>) + 9;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; last = s.find(<span class="stringliteral">&quot;} &gt;=&quot;</span>);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; temp = s.substr(next, last-next);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="comment">// convert string to deftype</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; istringstream ss1(temp.substr(0, temp.find(<span class="stringliteral">&quot;, &quot;</span>)));</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordtype">int</span> obj1;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; ss1 &gt;&gt; obj1;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <a class="code" href="classSVF_1_1MSSADEF.html#a32682e20c9c08d2bdd5abc62ea17af18">MSSADEF::DEFTYPE</a> defType = <span class="keyword">static_cast&lt;</span><a class="code" href="classSVF_1_1MSSADEF.html#a32682e20c9c08d2bdd5abc62ea17af18">MSSADEF::DEFTYPE</a><span class="keyword">&gt;</span>(obj1);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; tempDef = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MSSADEF.html">MSSADEF</a>(defType, tempMemRegion);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="comment">// mrversion</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; next = s.find(<span class="stringliteral">&quot;MRVERSION: &quot;</span>) + 11;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; last = s.find(<span class="stringliteral">&quot; MSSADef:&quot;</span>);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; temp = s.substr(next, last-next);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="comment">// convert mrversion to nodeid</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; istringstream ss2(temp);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj2;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; ss2 &gt;&gt; obj2;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="comment">// create mrver</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; tempMRVer = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>(tempMemRegion, obj2, tempDef);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">return</span> tempMRVer;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;}</div><div class="ttc" id="classSVF_1_1MRVer_html"><div class="ttname"><a href="classSVF_1_1MRVer.html">SVF::MRVer</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00043">MSSAMuChi.h:43</a></div></div>
2922
+ <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>
2923
+ <div class="ttc" id="classSVF_1_1MSSADEF_html"><div class="ttname"><a href="classSVF_1_1MSSADEF.html">SVF::MSSADEF</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00325">MSSAMuChi.h:325</a></div></div>
2924
+ <div class="ttc" id="classSVF_1_1MSSADEF_html_a32682e20c9c08d2bdd5abc62ea17af18"><div class="ttname"><a href="classSVF_1_1MSSADEF.html#a32682e20c9c08d2bdd5abc62ea17af18">SVF::MSSADEF::DEFTYPE</a></div><div class="ttdeci">DEFTYPE</div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00329">MSSAMuChi.h:329</a></div></div>
2925
+ <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
2926
+ <div class="ttc" id="classSVF_1_1MemRegion_html"><div class="ttname"><a href="classSVF_1_1MemRegion.html">SVF::MemRegion</a></div><div class="ttdoc">Memory Region class. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00051">MemRegion.h:51</a></div></div>
2882
2927
  </div><!-- fragment -->
2883
2928
  </div>
2884
2929
  </div>
@@ -3117,8 +3162,8 @@ Additional Inherited Members</h2></td></tr>
3117
3162
  </table>
3118
3163
  </div><div class="memdoc">
3119
3164
 
3120
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00447">447</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
3121
- <div class="fragment"><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a39873b954b6e0eb0641f56ca4cd06ef9">callSiteToActualOUTMap</a>.find(cs) != <a class="code" href="classSVF_1_1SVFG.html#a39873b954b6e0eb0641f56ca4cd06ef9">callSiteToActualOUTMap</a>.end());</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_a39873b954b6e0eb0641f56ca4cd06ef9"><div class="ttname"><a href="classSVF_1_1SVFG.html#a39873b954b6e0eb0641f56ca4cd06ef9">SVF::SVFG::callSiteToActualOUTMap</a></div><div class="ttdeci">CallSiteToActualOUTsMapTy callSiteToActualOUTMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00101">SVFG.h:101</a></div></div>
3165
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00451">451</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
3166
+ <div class="fragment"><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a39873b954b6e0eb0641f56ca4cd06ef9">callSiteToActualOUTMap</a>.find(cs) != <a class="code" href="classSVF_1_1SVFG.html#a39873b954b6e0eb0641f56ca4cd06ef9">callSiteToActualOUTMap</a>.end());</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_a39873b954b6e0eb0641f56ca4cd06ef9"><div class="ttname"><a href="classSVF_1_1SVFG.html#a39873b954b6e0eb0641f56ca4cd06ef9">SVF::SVFG::callSiteToActualOUTMap</a></div><div class="ttdeci">CallSiteToActualOUTsMapTy callSiteToActualOUTMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00101">SVFG.h:101</a></div></div>
3122
3167
  </div><!-- fragment -->
3123
3168
  </div>
3124
3169
  </div>
@@ -3146,8 +3191,8 @@ Additional Inherited Members</h2></td></tr>
3146
3191
  </table>
3147
3192
  </div><div class="memdoc">
3148
3193
 
3149
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00451">451</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
3150
- <div class="fragment"><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#af9313ebec4a52fd887169b7c6373a7d4">callSiteToActualINMap</a>.find(cs) != <a class="code" href="classSVF_1_1SVFG.html#af9313ebec4a52fd887169b7c6373a7d4">callSiteToActualINMap</a>.end());</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_af9313ebec4a52fd887169b7c6373a7d4"><div class="ttname"><a href="classSVF_1_1SVFG.html#af9313ebec4a52fd887169b7c6373a7d4">SVF::SVFG::callSiteToActualINMap</a></div><div class="ttdeci">CallSiteToActualINsMapTy callSiteToActualINMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00100">SVFG.h:100</a></div></div>
3194
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00455">455</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
3195
+ <div class="fragment"><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#af9313ebec4a52fd887169b7c6373a7d4">callSiteToActualINMap</a>.find(cs) != <a class="code" href="classSVF_1_1SVFG.html#af9313ebec4a52fd887169b7c6373a7d4">callSiteToActualINMap</a>.end());</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_af9313ebec4a52fd887169b7c6373a7d4"><div class="ttname"><a href="classSVF_1_1SVFG.html#af9313ebec4a52fd887169b7c6373a7d4">SVF::SVFG::callSiteToActualINMap</a></div><div class="ttdeci">CallSiteToActualINsMapTy callSiteToActualINMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00100">SVFG.h:100</a></div></div>
3151
3196
  </div><!-- fragment -->
3152
3197
  </div>
3153
3198
  </div>
@@ -3175,8 +3220,8 @@ Additional Inherited Members</h2></td></tr>
3175
3220
  </table>
3176
3221
  </div><div class="memdoc">
3177
3222
 
3178
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00350">350</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
3179
- <div class="fragment"><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4">VFG::hasDef</a>(pagNode);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFG_html_ab5b63b4f6317bfb5875f2b977bcf26a4"><div class="ttname"><a href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4">SVF::VFG::hasDef</a></div><div class="ttdeci">bool hasDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00425">VFG.h:425</a></div></div>
3223
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00354">354</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
3224
+ <div class="fragment"><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> <a class="code" href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4">VFG::hasDef</a>(pagNode);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFG_html_ab5b63b4f6317bfb5875f2b977bcf26a4"><div class="ttname"><a href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4">SVF::VFG::hasDef</a></div><div class="ttdeci">bool hasDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00425">VFG.h:425</a></div></div>
3180
3225
  </div><!-- fragment -->
3181
3226
  </div>
3182
3227
  </div>
@@ -3264,8 +3309,8 @@ Additional Inherited Members</h2></td></tr>
3264
3309
 
3265
3310
  <p>Has function for EntryCHI/RetMU/CallCHI/CallMU. </p>
3266
3311
 
3267
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00439">439</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
3268
- <div class="fragment"><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#ae51cd0493e4e767848b96b69045762fd">funToFormalINMap</a>.find(func) != <a class="code" href="classSVF_1_1SVFG.html#ae51cd0493e4e767848b96b69045762fd">funToFormalINMap</a>.end());</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_ae51cd0493e4e767848b96b69045762fd"><div class="ttname"><a href="classSVF_1_1SVFG.html#ae51cd0493e4e767848b96b69045762fd">SVF::SVFG::funToFormalINMap</a></div><div class="ttdeci">FunctionToFormalINsMapTy funToFormalINMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00102">SVFG.h:102</a></div></div>
3312
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00443">443</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
3313
+ <div class="fragment"><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#ae51cd0493e4e767848b96b69045762fd">funToFormalINMap</a>.find(func) != <a class="code" href="classSVF_1_1SVFG.html#ae51cd0493e4e767848b96b69045762fd">funToFormalINMap</a>.end());</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_ae51cd0493e4e767848b96b69045762fd"><div class="ttname"><a href="classSVF_1_1SVFG.html#ae51cd0493e4e767848b96b69045762fd">SVF::SVFG::funToFormalINMap</a></div><div class="ttdeci">FunctionToFormalINsMapTy funToFormalINMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00102">SVFG.h:102</a></div></div>
3269
3314
  </div><!-- fragment -->
3270
3315
  </div>
3271
3316
  </div>
@@ -3293,8 +3338,8 @@ Additional Inherited Members</h2></td></tr>
3293
3338
  </table>
3294
3339
  </div><div class="memdoc">
3295
3340
 
3296
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00443">443</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
3297
- <div class="fragment"><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a7d58f9fe97071ec9936174689cb99301">funToFormalOUTMap</a>.find(func) != <a class="code" href="classSVF_1_1SVFG.html#a7d58f9fe97071ec9936174689cb99301">funToFormalOUTMap</a>.end());</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_a7d58f9fe97071ec9936174689cb99301"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7d58f9fe97071ec9936174689cb99301">SVF::SVFG::funToFormalOUTMap</a></div><div class="ttdeci">FunctionToFormalOUTsMapTy funToFormalOUTMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00103">SVFG.h:103</a></div></div>
3341
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00447">447</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
3342
+ <div class="fragment"><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFG.html#a7d58f9fe97071ec9936174689cb99301">funToFormalOUTMap</a>.find(func) != <a class="code" href="classSVF_1_1SVFG.html#a7d58f9fe97071ec9936174689cb99301">funToFormalOUTMap</a>.end());</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFG_html_a7d58f9fe97071ec9936174689cb99301"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7d58f9fe97071ec9936174689cb99301">SVF::SVFG::funToFormalOUTMap</a></div><div class="ttdeci">FunctionToFormalOUTsMapTy funToFormalOUTMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00103">SVFG.h:103</a></div></div>
3298
3343
  </div><!-- fragment -->
3299
3344
  </div>
3300
3345
  </div>
@@ -3348,8 +3393,8 @@ Additional Inherited Members</h2></td></tr>
3348
3393
  <p>Whether a node is callsite return SVFGNode. </p>
3349
3394
  <p>Whether this is an callsite return SVFGNode (actual return, actual out) </p>
3350
3395
 
3351
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00725">725</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
3352
- <div class="fragment"><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;{</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetSVFGNode</a>* ar = SVFUtil::dyn_cast&lt;ActualRetSVFGNode&gt;(node))</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; {</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">return</span> ar-&gt;getCallSite();</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; }</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterPHIVFGNode.html">InterPHISVFGNode</a>* phi = SVFUtil::dyn_cast&lt;InterPHISVFGNode&gt;(node))</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; {</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordflow">if</span>(phi-&gt;isActualRetPHI())</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">return</span> phi-&gt;getCallSite();</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; }</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* ao = SVFUtil::dyn_cast&lt;ActualOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; {</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">return</span> ao-&gt;getCallSite();</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; }</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterMSSAPHISVFGNode.html">InterMSSAPHISVFGNode</a>* mphi = SVFUtil::dyn_cast&lt;InterMSSAPHISVFGNode&gt;(node))</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; {</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">if</span>(mphi-&gt;isActualOUTPHI())</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">return</span> mphi-&gt;getCallSite();</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; }</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;}</div><div class="ttc" id="classSVF_1_1ActualOUTSVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualOUTSVFGNode.html">SVF::ActualOUTSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00229">SVFGNode.h:229</a></div></div>
3396
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00729">729</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
3397
+ <div class="fragment"><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;{</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetSVFGNode</a>* ar = SVFUtil::dyn_cast&lt;ActualRetSVFGNode&gt;(node))</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; {</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordflow">return</span> ar-&gt;getCallSite();</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; }</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterPHIVFGNode.html">InterPHISVFGNode</a>* phi = SVFUtil::dyn_cast&lt;InterPHISVFGNode&gt;(node))</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; {</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">if</span>(phi-&gt;isActualRetPHI())</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">return</span> phi-&gt;getCallSite();</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; }</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* ao = SVFUtil::dyn_cast&lt;ActualOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; {</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">return</span> ao-&gt;getCallSite();</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; }</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterMSSAPHISVFGNode.html">InterMSSAPHISVFGNode</a>* mphi = SVFUtil::dyn_cast&lt;InterMSSAPHISVFGNode&gt;(node))</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; {</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">if</span>(mphi-&gt;isActualOUTPHI())</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">return</span> mphi-&gt;getCallSite();</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; }</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;}</div><div class="ttc" id="classSVF_1_1ActualOUTSVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualOUTSVFGNode.html">SVF::ActualOUTSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00229">SVFGNode.h:229</a></div></div>
3353
3398
  <div class="ttc" id="classSVF_1_1ActualRetVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualRetVFGNode.html">SVF::ActualRetVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00967">VFGNode.h:967</a></div></div>
3354
3399
  <div class="ttc" id="classSVF_1_1InterMSSAPHISVFGNode_html"><div class="ttname"><a href="classSVF_1_1InterMSSAPHISVFGNode.html">SVF::InterMSSAPHISVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00404">SVFGNode.h:404</a></div></div>
3355
3400
  <div class="ttc" id="classSVF_1_1InterPHIVFGNode_html"><div class="ttname"><a href="classSVF_1_1InterPHIVFGNode.html">SVF::InterPHIVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01091">VFGNode.h:1091</a></div></div>
@@ -3375,8 +3420,8 @@ Additional Inherited Members</h2></td></tr>
3375
3420
  <p>Whether a node is function entry SVFGNode. </p>
3376
3421
  <p>Whether this is an function entry SVFGNode (formal parameter, formal In) </p>
3377
3422
 
3378
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00699">699</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
3379
- <div class="fragment"><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;{</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmSVFGNode</a>* fp = SVFUtil::dyn_cast&lt;FormalParmSVFGNode&gt;(node))</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; {</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">return</span> fp-&gt;getFun();</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; }</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterPHIVFGNode.html">InterPHISVFGNode</a>* phi = SVFUtil::dyn_cast&lt;InterPHISVFGNode&gt;(node))</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; {</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">if</span>(phi-&gt;isFormalParmPHI())</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">return</span> phi-&gt;getFun();</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; }</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* fi = SVFUtil::dyn_cast&lt;FormalINSVFGNode&gt;(node))</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; {</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">return</span> fi-&gt;getFun();</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; }</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterMSSAPHISVFGNode.html">InterMSSAPHISVFGNode</a>* mphi = SVFUtil::dyn_cast&lt;InterMSSAPHISVFGNode&gt;(node))</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; {</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">if</span>(mphi-&gt;isFormalINPHI())</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">return</span> mphi-&gt;getFun();</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; }</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;}</div><div class="ttc" id="classSVF_1_1InterMSSAPHISVFGNode_html"><div class="ttname"><a href="classSVF_1_1InterMSSAPHISVFGNode.html">SVF::InterMSSAPHISVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00404">SVFGNode.h:404</a></div></div>
3423
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00703">703</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
3424
+ <div class="fragment"><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;{</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmSVFGNode</a>* fp = SVFUtil::dyn_cast&lt;FormalParmSVFGNode&gt;(node))</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; {</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">return</span> fp-&gt;getFun();</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterPHIVFGNode.html">InterPHISVFGNode</a>* phi = SVFUtil::dyn_cast&lt;InterPHISVFGNode&gt;(node))</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; {</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">if</span>(phi-&gt;isFormalParmPHI())</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">return</span> phi-&gt;getFun();</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; }</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* fi = SVFUtil::dyn_cast&lt;FormalINSVFGNode&gt;(node))</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; {</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">return</span> fi-&gt;getFun();</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; }</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterMSSAPHISVFGNode.html">InterMSSAPHISVFGNode</a>* mphi = SVFUtil::dyn_cast&lt;InterMSSAPHISVFGNode&gt;(node))</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; {</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">if</span>(mphi-&gt;isFormalINPHI())</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">return</span> mphi-&gt;getFun();</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; }</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;}</div><div class="ttc" id="classSVF_1_1InterMSSAPHISVFGNode_html"><div class="ttname"><a href="classSVF_1_1InterMSSAPHISVFGNode.html">SVF::InterMSSAPHISVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00404">SVFGNode.h:404</a></div></div>
3380
3425
  <div class="ttc" id="classSVF_1_1FormalParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalParmVFGNode.html">SVF::FormalParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00898">VFGNode.h:898</a></div></div>
3381
3426
  <div class="ttc" id="classSVF_1_1FormalINSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalINSVFGNode.html">SVF::FormalINSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00093">SVFGNode.h:93</a></div></div>
3382
3427
  <div class="ttc" id="classSVF_1_1InterPHIVFGNode_html"><div class="ttname"><a href="classSVF_1_1InterPHIVFGNode.html">SVF::InterPHIVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01091">VFGNode.h:1091</a></div></div>
@@ -3401,12 +3446,86 @@ Additional Inherited Members</h2></td></tr>
3401
3446
  <p>Perform statistics. </p>
3402
3447
  <p>Perform Statistics </p>
3403
3448
 
3404
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00751">751</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
3405
- <div class="fragment"><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;{</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#a037600bfff11659542f8595d8700dec4">performStat</a>();</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFG_html_ad5c1415f488ec4412d5457262269eff3"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">SVF::SVFG::stat</a></div><div class="ttdeci">SVFGStat * stat</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00104">SVFG.h:104</a></div></div>
3449
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00755">755</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
3450
+ <div class="fragment"><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;{</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#a037600bfff11659542f8595d8700dec4">performStat</a>();</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFG_html_ad5c1415f488ec4412d5457262269eff3"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">SVF::SVFG::stat</a></div><div class="ttdeci">SVFGStat * stat</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00104">SVFG.h:104</a></div></div>
3406
3451
  <div class="ttc" id="classSVF_1_1SVFGStat_html_a037600bfff11659542f8595d8700dec4"><div class="ttname"><a href="classSVF_1_1SVFGStat.html#a037600bfff11659542f8595d8700dec4">SVF::SVFGStat::performStat</a></div><div class="ttdeci">virtual void performStat() override</div><div class="ttdef"><b>Definition:</b> <a href="SVFGStat_8cpp_source.html#l00179">SVFGStat.cpp:179</a></div></div>
3407
3452
  </div><!-- fragment -->
3408
3453
  </div>
3409
3454
  </div>
3455
+ <a id="a9da50b8f467066b478143af64f7c9858"></a>
3456
+ <h2 class="memtitle"><span class="permalink"><a href="#a9da50b8f467066b478143af64f7c9858">&#9670;&nbsp;</a></span>readFile()</h2>
3457
+
3458
+ <div class="memitem">
3459
+ <div class="memproto">
3460
+ <table class="mlabels">
3461
+ <tr>
3462
+ <td class="mlabels-left">
3463
+ <table class="memname">
3464
+ <tr>
3465
+ <td class="memname">void SVFG::readFile </td>
3466
+ <td>(</td>
3467
+ <td class="paramtype">const std::string &amp;&#160;</td>
3468
+ <td class="paramname"><em>filename</em></td><td>)</td>
3469
+ <td></td>
3470
+ </tr>
3471
+ </table>
3472
+ </td>
3473
+ <td class="mlabels-right">
3474
+ <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
3475
+ </tr>
3476
+ </table>
3477
+ </div><div class="memdoc">
3478
+
3479
+ <p class="definition">Definition at line <a class="el" href="SVFGReadWrite_8cpp_source.html#l00205">205</a> of file <a class="el" href="SVFGReadWrite_8cpp_source.html">SVFGReadWrite.cpp</a>.</p>
3480
+ <div class="fragment"><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;{</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Loading SVFG analysis results from &#39;&quot;</span> &lt;&lt; filename &lt;&lt; <span class="stringliteral">&quot;&#39;...&quot;</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; ifstream <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>(filename.c_str());</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>.is_open())</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; error opening file for reading!\n&quot;</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a2bdfa37167b5496629e5cae62705d5f2">PAGEdge::PAGEdgeSetTy</a>&amp; stores = <a class="code" href="classSVF_1_1VFG.html#a2e182f7e90a3519a2147a300470a88f1">getPAGEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">PAGEdge::Store</a>);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = stores.begin(), eiter =</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; stores.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store = SVFUtil::cast&lt;StoreStmt&gt;(*iter);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1StmtVFGNode.html">StmtSVFGNode</a>* sNode = <a class="code" href="classSVF_1_1VFG.html#a32b1586d326fbe47080bd1fa2d3270e6">getStmtVFGNode</a>(store);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator pi = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(store).begin(), epi = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(store).end(); pi!=epi; ++pi)</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>((*pi)-&gt;getResVer(),sNode);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="comment">//outer loop through each line in the file</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordtype">string</span> line;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="comment">// add nodes</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#a4bf9a39b93b7254f627dd393b9f2b82c">ATVFNodeStart</a>();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>.good())</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; getline(<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>, line);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">if</span> (line.empty())</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (line.find(<span class="stringliteral">&quot;__Edges__&quot;</span>) != std::string::npos)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; std::string s = line;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; std::string delimiter = <span class="stringliteral">&quot; &gt;= &quot;</span>;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordtype">string</span> temp;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordtype">int</span> index = 0;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="comment">//implement delimiter to split string using &quot;&gt;=&quot;</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordtype">size_t</span> next = 0;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordtype">size_t</span> last = 0;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordtype">size_t</span> outer_last = 0;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordtype">size_t</span> nextTemp; <span class="comment">//size_t lastTemp;</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> = 0;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordtype">string</span> type;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordtype">string</span> MR;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordtype">string</span> basicBlock;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordtype">string</span> opVer;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="comment">//inner loop through to get each element in the line</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">while</span> ((next = s.find(delimiter, last)) != string::npos)</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; temp = s.substr(last, next-last);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; last = next + 4;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; outer_last = next + 4;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">if</span>(index == 0)</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; nextTemp = temp.find(<span class="stringliteral">&quot;SVFGNodeID: &quot;</span>) + 12;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordtype">id</span> = atoi(temp.substr(nextTemp).c_str());</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">if</span>(index == 1)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; type = temp;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">if</span>(index &gt; 1)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">if</span>(index == 2)</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; MR = temp;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span>(index == 3)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; basicBlock = temp;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; index++;</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; <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* tempMRVer;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span>(!MR.empty())</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; tempMRVer = <a class="code" href="classSVF_1_1SVFG.html#a910298ed854a6b88b9dae44181ca72de">getMRVERFromString</a>(MR);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; tempMRVer = <a class="code" href="classSVF_1_1SVFG.html#a910298ed854a6b88b9dae44181ca72de">getMRVERFromString</a>(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="comment">//add nodes using the variables we extracted</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">if</span>(type == <span class="stringliteral">&quot;FormalINSVFGNode&quot;</span>)</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; outer_last = s.find(<span class="stringliteral">&quot;ICFGNodeID: &quot;</span>) + 12;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> FunID = atoi(s.substr(outer_last).c_str());</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ab4690114393820f580e805d2e0d6a41d">addFormalINSVFGNode</a>(SVFUtil::dyn_cast&lt;FunEntryICFGNode&gt;(<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(FunID)), tempMRVer, <span class="keywordtype">id</span>);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(type == <span class="stringliteral">&quot;FormalOUTSVFGNode&quot;</span>)</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; outer_last = s.find(<span class="stringliteral">&quot;ICFGNodeID: &quot;</span>) + 12;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> FunID = atoi(s.substr(outer_last).c_str());</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a804824faa3a042cb1b63edd9e9eb7207">addFormalOUTSVFGNode</a>(SVFUtil::dyn_cast&lt;FunExitICFGNode&gt;(<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(FunID)), tempMRVer, <span class="keywordtype">id</span>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(type == <span class="stringliteral">&quot;ActualINSVFGNode&quot;</span>)</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; outer_last = s.find(<span class="stringliteral">&quot;ICFGNodeID: &quot;</span>) + 12;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> = atoi(s.substr(outer_last).c_str());</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a923924d3887c668b355f4029502a3754">addActualINSVFGNode</a>(SVFUtil::dyn_cast&lt;CallICFGNode&gt;(<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(CallSiteID)), tempMRVer, <span class="keywordtype">id</span>);</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">else</span> <span class="keywordflow">if</span>(type == <span class="stringliteral">&quot;ActualOUTSVFGNode&quot;</span>)</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; outer_last = s.find(<span class="stringliteral">&quot;ICFGNodeID: &quot;</span>) + 12;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> CallSiteID = atoi(s.substr(outer_last).c_str());</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a74aa824a68f99756ac3e65231c7bc2e9">addActualOUTSVFGNode</a>(SVFUtil::dyn_cast&lt;CallICFGNode&gt;(<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(CallSiteID)), tempMRVer, <span class="keywordtype">id</span>);</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">else</span> <span class="keywordflow">if</span> (type == <span class="stringliteral">&quot;PHISVFGNode&quot;</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; opVer = s.substr(outer_last);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; next = opVer.find(<span class="stringliteral">&quot;{&quot;</span>) + 1;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; last = opVer.find(<span class="stringliteral">&quot;,}&quot;</span>);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; temp = opVer.substr(next, last);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t,const MRVer*&gt;</a> OPVers;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordtype">int</span> index = 0;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">while</span> ((next = temp.find(<span class="stringliteral">&quot;{&quot;</span>) + 1) != string::npos)</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">if</span> (temp == <span class="stringliteral">&quot;,}&quot;</span>)</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; last = temp.find(<span class="stringliteral">&quot;},&quot;</span>);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordtype">string</span> temp1;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; temp1 = temp.substr(next, last-next);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* tempOPVer = <a class="code" href="classSVF_1_1SVFG.html#a910298ed854a6b88b9dae44181ca72de">getMRVERFromString</a>(temp1);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; OPVers.insert(make_pair(index, tempOPVer));</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; temp = temp.substr(last + 1);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; index++;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; next = basicBlock.find(<span class="stringliteral">&quot;ICFGNodeID: &quot;</span>) + 12;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; temp = basicBlock.substr(next);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a0554abe7c072b66ab24a900284646572">addIntraMSSAPHISVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(atoi(temp.c_str())), OPVers.begin(), OPVers.end(), tempMRVer, id);</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a> &lt; <span class="keywordtype">id</span>)</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a> = <span class="keywordtype">id</span> + 1;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#aa39231c3d81fa87cdb6089f17bc35af8">ATVFNodeEnd</a>();</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#adcb30427bb220dc122ad22030e10eb21">indVFEdgeStart</a>();</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="comment">// Edges</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>.good())</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; getline(<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>, line);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">if</span> (line.empty())</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">continue</span>;</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; std::string s = line;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; std::string delimiter = <span class="stringliteral">&quot; &gt;= &quot;</span>;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordtype">string</span> temp;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="comment">// int index = 0;</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordtype">size_t</span> last = 0;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordtype">size_t</span> next = 0; <span class="comment">// size_t outer_last = 0;</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordtype">string</span> edge;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordtype">string</span> attributes;</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; next = s.find(delimiter);</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; edge = s.substr(0, next);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; attributes = s.substr(next + 4);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="comment">// extract nodeIDs for src and dst nodes</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; next = edge.find(<span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span>) + 15;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; last = edge.find(<span class="stringliteral">&quot; =&gt; &quot;</span>);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; src = atoi(edge.substr(next, last-next).c_str());</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; next = edge.find(<span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span>) + 15;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; dst = atoi(edge.substr(next).c_str());</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordtype">string</span> type;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordtype">string</span> attribute;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">if</span> (attributes.find(<span class="stringliteral">&quot; | &quot;</span>) == string::npos)</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; type = attributes;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; next = attributes.find(<span class="stringliteral">&quot; | &quot;</span>);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; type = attributes.substr(0, next);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; attribute = attributes.substr(next + 3);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">if</span>(type == <span class="stringliteral">&quot;FormalINSVFGNode&quot;</span>)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn = SVFUtil::cast&lt;FormalINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(src));</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::cast&lt;ActualINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(dst));</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">addInterIndirectVFCallEdge</a>(actualIn,formalIn, <a class="code" href="classSVF_1_1VFG.html#a5f82b3c2e8e6412e2781b960ffa98387">getCallSiteID</a>(actualIn-&gt;getCallSite(), formalIn-&gt;<a class="code" href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">getFun</a>()));</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(type == <span class="stringliteral">&quot;FormalOUTSVFGNode&quot;</span>)</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* formalOut = SVFUtil::cast&lt;FormalOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(src));</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">if</span> (attribute.find(<span class="stringliteral">&quot;intra&quot;</span>) != string::npos)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(dst, src, formalOut-&gt;<a class="code" href="classSVF_1_1FormalOUTSVFGNode.html#ad2e841a18b777220c2b13f38289d6168">getMRVer</a>()-&gt;<a class="code" href="classSVF_1_1MRVer.html#a63bd0641be553860cc5f517634b65825">getMR</a>()-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>());</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::cast&lt;ActualOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(dst));</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">addInterIndirectVFRetEdge</a>(formalOut,actualOut,<a class="code" href="classSVF_1_1VFG.html#a5f82b3c2e8e6412e2781b960ffa98387">getCallSiteID</a>(actualOut-&gt;<a class="code" href="classSVF_1_1ActualOUTSVFGNode.html#a89cb274936513df411a75fb33a86702f">getCallSite</a>(), formalOut-&gt;<a class="code" href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">getFun</a>()));</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(type == <span class="stringliteral">&quot;ActualINSVFGNode&quot;</span>)</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::cast&lt;ActualINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(src));</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(dst,src, actualIn-&gt;<a class="code" href="classSVF_1_1ActualINSVFGNode.html#aa92b36228a6f42496984cfea32f3415c">getMRVer</a>()-&gt;<a class="code" href="classSVF_1_1MRVer.html#a63bd0641be553860cc5f517634b65825">getMR</a>()-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>());</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(type == <span class="stringliteral">&quot;ActualOUTSVFGNode&quot;</span>)</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="comment">// There&#39;s no need to connect actual out node to its definition site in the same function.</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; }</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == <span class="stringliteral">&quot;StoreNode&quot;</span> || type == <span class="stringliteral">&quot;LoadNode&quot;</span> || type == <span class="stringliteral">&quot;PHISVFGNode&quot;</span>)</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* tempMRVer;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; tempMRVer = <a class="code" href="classSVF_1_1SVFG.html#a910298ed854a6b88b9dae44181ca72de">getMRVERFromString</a>(attribute);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(dst,src, tempMRVer-&gt;<a class="code" href="classSVF_1_1MRVer.html#a63bd0641be553860cc5f517634b65825">getMR</a>()-&gt;<a class="code" href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">getPointsTo</a>());</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFGStat.html#a8b3b9a211f410e67e8fd1a79d3db9023">indVFEdgeEnd</a>();</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a5921483cd5e1bf77b1b2bc8fb3250612">connectFromGlobalToProgEntry</a>();</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;}</div><div class="ttc" id="classSVF_1_1MRVer_html"><div class="ttname"><a href="classSVF_1_1MRVer.html">SVF::MRVer</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00043">MSSAMuChi.h:43</a></div></div>
3481
+ <div class="ttc" id="classSVF_1_1MemSSA_html_a2e656a50f8964fc3e99d1d436de64418"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">SVF::MemSSA::getCHISet</a></div><div class="ttdeci">CHISet &amp; getCHISet(const StoreStmt *st)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00392">MemSSA.h:392</a></div></div>
3482
+ <div class="ttc" id="classSVF_1_1ActualINSVFGNode_html_aa92b36228a6f42496984cfea32f3415c"><div class="ttname"><a href="classSVF_1_1ActualINSVFGNode.html#aa92b36228a6f42496984cfea32f3415c">SVF::ActualINSVFGNode::getMRVer</a></div><div class="ttdeci">const MRVer * getMRVer() const</div><div class="ttdoc">Ver. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00200">SVFGNode.h:200</a></div></div>
3483
+ <div class="ttc" id="classSVF_1_1SVFGStat_html_a4bf9a39b93b7254f627dd393b9f2b82c"><div class="ttname"><a href="classSVF_1_1SVFGStat.html#a4bf9a39b93b7254f627dd393b9f2b82c">SVF::SVFGStat::ATVFNodeStart</a></div><div class="ttdeci">void ATVFNodeStart()</div><div class="ttdef"><b>Definition:</b> <a href="SVFGStat_8h_source.html#l00139">SVFGStat.h:139</a></div></div>
3484
+ <div class="ttc" id="classSVF_1_1SVFStmt_html_a2bdfa37167b5496629e5cae62705d5f2"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a2bdfa37167b5496629e5cae62705d5f2">SVF::SVFStmt::PAGEdgeSetTy</a></div><div class="ttdeci">SVFStmtSetTy PAGEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00180">SVFStatements.h:180</a></div></div>
3485
+ <div class="ttc" id="classSVF_1_1SVFG_html_a923924d3887c668b355f4029502a3754"><div class="ttname"><a href="classSVF_1_1SVFG.html#a923924d3887c668b355f4029502a3754">SVF::SVFG::addActualINSVFGNode</a></div><div class="ttdeci">void addActualINSVFGNode(const CallICFGNode *callsite, const MRVer *ver, const NodeID nodeId)</div><div class="ttdoc">Add memory callsite mu SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00414">SVFG.h:414</a></div></div>
3486
+ <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>
3487
+ <div class="ttc" id="classSVF_1_1VFG_html_a32b1586d326fbe47080bd1fa2d3270e6"><div class="ttname"><a href="classSVF_1_1VFG.html#a32b1586d326fbe47080bd1fa2d3270e6">SVF::VFG::getStmtVFGNode</a></div><div class="ttdeci">StmtVFGNode * getStmtVFGNode(const PAGEdge *pagEdge) const</div><div class="ttdoc">Get an VFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00199">VFG.h:199</a></div></div>
3488
+ <div class="ttc" id="classSVF_1_1VFG_html_a5f82b3c2e8e6412e2781b960ffa98387"><div class="ttname"><a href="classSVF_1_1VFG.html#a5f82b3c2e8e6412e2781b960ffa98387">SVF::VFG::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallICFGNode *cs, const SVFFunction *func) const</div><div class="ttdoc">Get callsite given a callsiteID. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00178">VFG.h:178</a></div></div>
3489
+ <div class="ttc" id="classSVF_1_1SVFG_html_a5921483cd5e1bf77b1b2bc8fb3250612"><div class="ttname"><a href="classSVF_1_1SVFG.html#a5921483cd5e1bf77b1b2bc8fb3250612">SVF::SVFG::connectFromGlobalToProgEntry</a></div><div class="ttdeci">void connectFromGlobalToProgEntry()</div><div class="ttdoc">Connect indirect SVFG edges from global initializers (store) to main function entry. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00423">SVFG.cpp:423</a></div></div>
3490
+ <div class="ttc" id="classSVF_1_1FormalOUTSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalOUTSVFGNode.html">SVF::FormalOUTSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00138">SVFGNode.h:138</a></div></div>
3491
+ <div class="ttc" id="classSVF_1_1VFG_html_a2e182f7e90a3519a2147a300470a88f1"><div class="ttname"><a href="classSVF_1_1VFG.html#a2e182f7e90a3519a2147a300470a88f1">SVF::VFG::getPAGEdgeSet</a></div><div class="ttdeci">virtual SVFStmt::SVFStmtSetTy &amp; getPAGEdgeSet(SVFStmt::PEDGEK kind)</div><div class="ttdoc">Get PAGEdge set. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00435">VFG.h:435</a></div></div>
3492
+ <div class="ttc" id="classSVF_1_1ActualOUTSVFGNode_html_a89cb274936513df411a75fb33a86702f"><div class="ttname"><a href="classSVF_1_1ActualOUTSVFGNode.html#a89cb274936513df411a75fb33a86702f">SVF::ActualOUTSVFGNode::getCallSite</a></div><div class="ttdeci">const CallICFGNode * getCallSite() const</div><div class="ttdoc">Callsite. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00244">SVFGNode.h:244</a></div></div>
3493
+ <div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00150">SVFG.h:150</a></div></div>
3494
+ <div class="ttc" id="classSVF_1_1VFGNode_html_ab98e74dfd4756e70e3e3c5b7d5e5ae27"><div class="ttname"><a href="classSVF_1_1VFGNode.html#ab98e74dfd4756e70e3e3c5b7d5e5ae27">SVF::VFGNode::getFun</a></div><div class="ttdeci">virtual const SVFFunction * getFun() const</div><div class="ttdoc">Get the function of this SVFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00084">VFGNode.h:84</a></div></div>
3495
+ <div class="ttc" id="classSVF_1_1ActualOUTSVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualOUTSVFGNode.html">SVF::ActualOUTSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00229">SVFGNode.h:229</a></div></div>
3496
+ <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00109">SVFBasicTypes.h:109</a></div></div>
3497
+ <div class="ttc" id="classSVF_1_1SVFG_html_a910298ed854a6b88b9dae44181ca72de"><div class="ttname"><a href="classSVF_1_1SVFG.html#a910298ed854a6b88b9dae44181ca72de">SVF::SVFG::getMRVERFromString</a></div><div class="ttdeci">virtual MRVer * getMRVERFromString(const std::string &amp;input)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGReadWrite_8cpp_source.html#l00429">SVFGReadWrite.cpp:429</a></div></div>
3498
+ <div class="ttc" id="classSVF_1_1ActualINSVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualINSVFGNode.html">SVF::ActualINSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00180">SVFGNode.h:180</a></div></div>
3499
+ <div class="ttc" id="classSVF_1_1FormalOUTSVFGNode_html_ad2e841a18b777220c2b13f38289d6168"><div class="ttname"><a href="classSVF_1_1FormalOUTSVFGNode.html#ad2e841a18b777220c2b13f38289d6168">SVF::FormalOUTSVFGNode::getMRVer</a></div><div class="ttdeci">const MRVer * getMRVer() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00153">SVFGNode.h:153</a></div></div>
3500
+ <div class="ttc" id="classSVF_1_1SVFG_html_a0554abe7c072b66ab24a900284646572"><div class="ttname"><a href="classSVF_1_1SVFG.html#a0554abe7c072b66ab24a900284646572">SVF::SVFG::addIntraMSSAPHISVFGNode</a></div><div class="ttdeci">void addIntraMSSAPHISVFGNode(ICFGNode *BlockICFGNode, const Map&lt; u32_t, const MRVer *&gt;::const_iterator opVerBegin, const Map&lt; u32_t, const MRVer *&gt;::const_iterator opVerEnd, const MRVer *resVer, const NodeID nodeId)</div><div class="ttdoc">Add memory SSA PHI SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00431">SVFG.h:431</a></div></div>
3501
+ <div class="ttc" id="classSVF_1_1SVFG_html_a74aa824a68f99756ac3e65231c7bc2e9"><div class="ttname"><a href="classSVF_1_1SVFG.html#a74aa824a68f99756ac3e65231c7bc2e9">SVF::SVFG::addActualOUTSVFGNode</a></div><div class="ttdeci">void addActualOUTSVFGNode(const CallICFGNode *callsite, const MRVer *resVer, const NodeID nodeId)</div><div class="ttdoc">Add memory callsite chi SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00422">SVFG.h:422</a></div></div>
3502
+ <div class="ttc" id="classSVF_1_1SVFG_html_ad5c1415f488ec4412d5457262269eff3"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">SVF::SVFG::stat</a></div><div class="ttdeci">SVFGStat * stat</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00104">SVFG.h:104</a></div></div>
3503
+ <div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00092">SVFBasicTypes.h:92</a></div></div>
3504
+ <div class="ttc" id="classSVF_1_1SVFG_html_a57629591037e16e57a0178d102a405f2"><div class="ttname"><a href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">SVF::SVFG::addInterIndirectVFCallEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFCallEdge(const ActualINSVFGNode *src, const FormalINSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from callsite mu to function entry chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00542">SVFG.cpp:542</a></div></div>
3505
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
3506
+ <div class="ttc" id="classSVF_1_1VFG_html_a25c2bbbc2e966e2aaa59a5b83363557a"><div class="ttname"><a href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">SVF::VFG::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00104">VFG.h:104</a></div></div>
3507
+ <div class="ttc" id="classSVF_1_1ICFG_html_a5f2c0aaba07d6fdd63058da0fb60ca8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">SVF::ICFG::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode(NodeID id) const</div><div class="ttdoc">Get a ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00084">ICFG.h:84</a></div></div>
3508
+ <div class="ttc" id="classSVF_1_1SVFG_html_ac9666ae7266cf1a9c0a5f7d28b39d1e9"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">SVF::SVFG::addInterIndirectVFRetEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFRetEdge(const FormalOUTSVFGNode *src, const ActualOUTSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from function exit mu to callsite chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00557">SVFG.cpp:557</a></div></div>
3509
+ <div class="ttc" id="classSVF_1_1SVFG_html_accd1cbd26c9b194971f3107a57a0ab2e"><div class="ttname"><a href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">SVF::SVFG::setDef</a></div><div class="ttdeci">void setDef(const PAGNode *pagNode, const SVFGNode *node)</div><div class="ttdoc">Given a PAGNode, set/get its def SVFG node (definition of top level pointers) </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00346">SVFG.h:346</a></div></div>
3510
+ <div class="ttc" id="classSVF_1_1SVFG_html_a804824faa3a042cb1b63edd9e9eb7207"><div class="ttname"><a href="classSVF_1_1SVFG.html#a804824faa3a042cb1b63edd9e9eb7207">SVF::SVFG::addFormalOUTSVFGNode</a></div><div class="ttdeci">void addFormalOUTSVFGNode(const FunExitICFGNode *funExit, const MRVer *ver, const NodeID nodeId)</div><div class="ttdoc">Add memory Function return mu SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00406">SVFG.h:406</a></div></div>
3511
+ <div class="ttc" id="classSVF_1_1VFG_html_acb181d4f9faa40578c80e2018e2742b8"><div class="ttname"><a href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">SVF::VFG::totalVFGNode</a></div><div class="ttdeci">NodeID totalVFGNode</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00088">VFG.h:88</a></div></div>
3512
+ <div class="ttc" id="classSVF_1_1SVFG_html_ab4690114393820f580e805d2e0d6a41d"><div class="ttname"><a href="classSVF_1_1SVFG.html#ab4690114393820f580e805d2e0d6a41d">SVF::SVFG::addFormalINSVFGNode</a></div><div class="ttdeci">void addFormalINSVFGNode(const FunEntryICFGNode *funEntry, const MRVer *resVer, const NodeID nodeId)</div><div class="ttdoc">Add memory Function entry chi SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00397">SVFG.h:397</a></div></div>
3513
+ <div class="ttc" id="classSVF_1_1SVFGStat_html_aa39231c3d81fa87cdb6089f17bc35af8"><div class="ttname"><a href="classSVF_1_1SVFGStat.html#aa39231c3d81fa87cdb6089f17bc35af8">SVF::SVFGStat::ATVFNodeEnd</a></div><div class="ttdeci">void ATVFNodeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFGStat_8h_source.html#l00144">SVFGStat.h:144</a></div></div>
3514
+ <div class="ttc" id="classSVF_1_1MRVer_html_a63bd0641be553860cc5f517634b65825"><div class="ttname"><a href="classSVF_1_1MRVer.html#a63bd0641be553860cc5f517634b65825">SVF::MRVer::getMR</a></div><div class="ttdeci">const MemRegion * getMR() const</div><div class="ttdoc">Return the memory region. </div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00063">MSSAMuChi.h:63</a></div></div>
3515
+ <div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00008">CFLGrammar.txt:8</a></div></div>
3516
+ <div class="ttc" id="classSVF_1_1SVFGStat_html_a8b3b9a211f410e67e8fd1a79d3db9023"><div class="ttname"><a href="classSVF_1_1SVFGStat.html#a8b3b9a211f410e67e8fd1a79d3db9023">SVF::SVFGStat::indVFEdgeEnd</a></div><div class="ttdeci">void indVFEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFGStat_8h_source.html#l00124">SVFGStat.h:124</a></div></div>
3517
+ <div class="ttc" id="classSVF_1_1MemRegion_html_a1e5befaa1a46943e101b33adaf141ca1"><div class="ttname"><a href="classSVF_1_1MemRegion.html#a1e5befaa1a46943e101b33adaf141ca1">SVF::MemRegion::getPointsTo</a></div><div class="ttdeci">const NodeBS &amp; getPointsTo() const</div><div class="ttdoc">Return points-to. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00079">MemRegion.h:79</a></div></div>
3518
+ <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVF::SVFStmt::Store</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
3519
+ <div class="ttc" id="classSVF_1_1StmtVFGNode_html"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html">SVF::StmtVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00116">VFGNode.h:116</a></div></div>
3520
+ <div class="ttc" id="classSVF_1_1SVFG_html_a6f07410ee34e4bf1079e3b5902c81d28"><div class="ttname"><a href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">SVF::SVFG::mssa</a></div><div class="ttdeci">MemSSA * mssa</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00105">SVFG.h:105</a></div></div>
3521
+ <div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00341">SVFStatements.h:341</a></div></div>
3522
+ <div class="ttc" id="classSVF_1_1SVFG_html_ad03f0064d3a1ff397b35a606304a9c80"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">SVF::SVFG::addIntraIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addIntraIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &amp;cpts)</div><div class="ttdoc">Add indirect def-use edges of a memory region between two statements,. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00460">SVFG.cpp:460</a></div></div>
3523
+ <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
3524
+ <div class="ttc" id="classSVF_1_1FormalINSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalINSVFGNode.html">SVF::FormalINSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00093">SVFGNode.h:93</a></div></div>
3525
+ <div class="ttc" id="classSVF_1_1SVFGStat_html_adcb30427bb220dc122ad22030e10eb21"><div class="ttname"><a href="classSVF_1_1SVFGStat.html#adcb30427bb220dc122ad22030e10eb21">SVF::SVFGStat::indVFEdgeStart</a></div><div class="ttdeci">void indVFEdgeStart()</div><div class="ttdef"><b>Definition:</b> <a href="SVFGStat_8h_source.html#l00119">SVFGStat.h:119</a></div></div>
3526
+ </div><!-- fragment -->
3527
+ </div>
3528
+ </div>
3410
3529
  <a id="a931d8b82e10a54d68c68cf6bd80264be"></a>
3411
3530
  <h2 class="memtitle"><span class="permalink"><a href="#a931d8b82e10a54d68c68cf6bd80264be">&#9670;&nbsp;</a></span>removeSVFGEdge()</h2>
3412
3531
 
@@ -3505,8 +3624,8 @@ Additional Inherited Members</h2></td></tr>
3505
3624
 
3506
3625
  <p>Given a PAGNode, set/get its def <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node (definition of top level pointers) </p>
3507
3626
 
3508
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00342">342</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
3509
- <div class="fragment"><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; <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">VFG::setDef</a>(pagNode, node);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFG_html_a1e0b8c7df55e05739775e8a1c50cf660"><div class="ttname"><a href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">SVF::VFG::setDef</a></div><div class="ttdeci">void setDef(const PAGNode *pagNode, const VFGNode *node)</div><div class="ttdoc">Given a PAGNode, set/get its def VFG node (definition of top level pointers) </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00406">VFG.h:406</a></div></div>
3627
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00346">346</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
3628
+ <div class="fragment"><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; <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">VFG::setDef</a>(pagNode, node);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFG_html_a1e0b8c7df55e05739775e8a1c50cf660"><div class="ttname"><a href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">SVF::VFG::setDef</a></div><div class="ttdeci">void setDef(const PAGNode *pagNode, const VFGNode *node)</div><div class="ttdoc">Given a PAGNode, set/get its def VFG node (definition of top level pointers) </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00406">VFG.h:406</a></div></div>
3510
3629
  </div><!-- fragment -->
3511
3630
  </div>
3512
3631
  </div>
@@ -3546,13 +3665,79 @@ Additional Inherited Members</h2></td></tr>
3546
3665
 
3547
3666
  <p>Given a MSSADef, set/get its def <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node (definition of address-taken variables) </p>
3548
3667
 
3549
- <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00358">358</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
3550
- <div class="fragment"><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; MSSAVarToDefMapTy::iterator it = <a class="code" href="classSVF_1_1SVFG.html#aafa1b445bd3578daaba8f82e517745f1">MSSAVarToDefMap</a>.find(mvar);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">if</span>(it==<a class="code" href="classSVF_1_1SVFG.html#aafa1b445bd3578daaba8f82e517745f1">MSSAVarToDefMap</a>.end())</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; <a class="code" href="classSVF_1_1SVFG.html#aafa1b445bd3578daaba8f82e517745f1">MSSAVarToDefMap</a>[mvar] = node-&gt;getId();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SVFG.html#a1b9d1ad76785ae0eb07979aa75325640">hasSVFGNode</a>(node-&gt;getId()) &amp;&amp; <span class="stringliteral">&quot;not in the map!!&quot;</span>);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((it-&gt;second == node-&gt;getId()) &amp;&amp; <span class="stringliteral">&quot;a SVFIR node can only have unique definition &quot;</span>);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
3668
+ <p class="definition">Definition at line <a class="el" href="SVFG_8h_source.html#l00362">362</a> of file <a class="el" href="SVFG_8h_source.html">SVFG.h</a>.</p>
3669
+ <div class="fragment"><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; MSSAVarToDefMapTy::iterator it = <a class="code" href="classSVF_1_1SVFG.html#aafa1b445bd3578daaba8f82e517745f1">MSSAVarToDefMap</a>.find(mvar);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">if</span>(it==<a class="code" href="classSVF_1_1SVFG.html#aafa1b445bd3578daaba8f82e517745f1">MSSAVarToDefMap</a>.end())</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#aafa1b445bd3578daaba8f82e517745f1">MSSAVarToDefMap</a>[mvar] = node-&gt;getId();</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SVFG.html#a1b9d1ad76785ae0eb07979aa75325640">hasSVFGNode</a>(node-&gt;getId()) &amp;&amp; <span class="stringliteral">&quot;not in the map!!&quot;</span>);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((it-&gt;second == node-&gt;getId()) &amp;&amp; <span class="stringliteral">&quot;a SVFIR node can only have unique definition &quot;</span>);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
3551
3670
  <div class="ttc" id="classSVF_1_1SVFG_html_aafa1b445bd3578daaba8f82e517745f1"><div class="ttname"><a href="classSVF_1_1SVFG.html#aafa1b445bd3578daaba8f82e517745f1">SVF::SVFG::MSSAVarToDefMap</a></div><div class="ttdeci">MSSAVarToDefMapTy MSSAVarToDefMap</div><div class="ttdoc">map a memory SSA operator to its definition SVFG node </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00099">SVFG.h:99</a></div></div>
3552
3671
  <div class="ttc" id="classSVF_1_1SVFG_html_a1b9d1ad76785ae0eb07979aa75325640"><div class="ttname"><a href="classSVF_1_1SVFG.html#a1b9d1ad76785ae0eb07979aa75325640">SVF::SVFG::hasSVFGNode</a></div><div class="ttdeci">bool hasSVFGNode(NodeID id) const</div><div class="ttdoc">Whether has the SVFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00156">SVFG.h:156</a></div></div>
3553
3672
  </div><!-- fragment -->
3554
3673
  </div>
3555
3674
  </div>
3675
+ <a id="a7ce9ec638995467c211958262be08ee1"></a>
3676
+ <h2 class="memtitle"><span class="permalink"><a href="#a7ce9ec638995467c211958262be08ee1">&#9670;&nbsp;</a></span>writeToFile()</h2>
3677
+
3678
+ <div class="memitem">
3679
+ <div class="memproto">
3680
+ <table class="mlabels">
3681
+ <tr>
3682
+ <td class="mlabels-left">
3683
+ <table class="memname">
3684
+ <tr>
3685
+ <td class="memname">void SVFG::writeToFile </td>
3686
+ <td>(</td>
3687
+ <td class="paramtype">const std::string &amp;&#160;</td>
3688
+ <td class="paramname"><em>filename</em></td><td>)</td>
3689
+ <td></td>
3690
+ </tr>
3691
+ </table>
3692
+ </td>
3693
+ <td class="mlabels-right">
3694
+ <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
3695
+ </tr>
3696
+ </table>
3697
+ </div><div class="memdoc">
3698
+
3699
+ <p class="definition">Definition at line <a class="el" href="SVFGReadWrite_8cpp_source.html#l00046">46</a> of file <a class="el" href="SVFGReadWrite_8cpp_source.html">SVFGReadWrite.cpp</a>.</p>
3700
+ <div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Writing SVFG analysis to &#39;&quot;</span> &lt;&lt; filename &lt;&lt; <span class="stringliteral">&quot;&#39;...&quot;</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; error_code err;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; std::fstream f(filename.c_str(), std::ios_base::out);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (!f.good())</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; error opening file for writing!\n&quot;</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;__Nodes__\n&quot;</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// Iterate over nodes and write to file</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">iterator</a> it = <a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = it-&gt;first;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn = SVFUtil::dyn_cast&lt;FormalINSVFGNode&gt;(node))</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="comment">//node</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;SVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; &gt;= &quot;</span> &lt;&lt; <span class="stringliteral">&quot;FormalINSVFGNode&quot;</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; f &lt;&lt; <span class="stringliteral">&quot; &gt;= MVER: {&quot;</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; f &lt;&lt; *formalIn-&gt;getMRVer() &lt;&lt; <span class="stringliteral">&quot;} &gt;= ICFGNodeID: &quot;</span> &lt;&lt; formalIn-&gt;getFunEntryNode()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* formalOut = SVFUtil::dyn_cast&lt;FormalOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="comment">//node</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;SVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; &gt;= &quot;</span> &lt;&lt; <span class="stringliteral">&quot;FormalOUTSVFGNode&quot;</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; f &lt;&lt; <span class="stringliteral">&quot; &gt;= MVER: {&quot;</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; f &lt;&lt; *formalOut-&gt;getMRVer() &lt;&lt; <span class="stringliteral">&quot;} &gt;= ICFGNodeID: &quot;</span> &lt;&lt; formalOut-&gt;getFunExitNode()-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::dyn_cast&lt;ActualINSVFGNode&gt;(node))</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">//node</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;SVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; &gt;= &quot;</span> &lt;&lt; <span class="stringliteral">&quot;ActualINSVFGNode&quot;</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; f &lt;&lt; <span class="stringliteral">&quot; &gt;= MVER: {&quot;</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; f &lt;&lt; *actualIn-&gt;getMRVer() &lt;&lt; <span class="stringliteral">&quot;} &gt;= ICFGNodeID: &quot;</span> &lt;&lt; actualIn-&gt;getCallSite()-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::dyn_cast&lt;ActualOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="comment">//node</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;SVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; &gt;= &quot;</span> &lt;&lt; <span class="stringliteral">&quot;ActualOUTSVFGNode&quot;</span> &lt;&lt; <span class="stringliteral">&quot; &gt;= MVER: {&quot;</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; f &lt;&lt; *actualOut-&gt;getMRVer() &lt;&lt; <span class="stringliteral">&quot;} &gt;= ICFGNodeID: &quot;</span> &lt;&lt; actualOut-&gt;getCallSite()-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* phiNode = SVFUtil::dyn_cast&lt;MSSAPHISVFGNode&gt;(node))</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="comment">//node</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;SVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; &gt;= &quot;</span> &lt;&lt; <span class="stringliteral">&quot;PHISVFGNode&quot;</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; unordered_map&lt;u32_t,const MRVer*&gt; opvers;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">for</span> (MemSSA::PHI::OPVers::const_iterator it = phiNode-&gt;opVerBegin(), eit = phiNode-&gt;opVerEnd();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; it != eit; it++)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; opvers.insert(make_pair(it-&gt;first, it-&gt;second));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// opvers</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; f &lt;&lt; <span class="stringliteral">&quot; &gt;= MVER: {&quot;</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; f &lt;&lt; *phiNode-&gt;getResVer();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;} &gt;= ICFGNodeID: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(&amp;(phiNode-&gt;getICFGNode()-&gt;getBB()-&gt;front()))-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; f &lt;&lt; <span class="stringliteral">&quot; &gt;= OPVers: {&quot;</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> x: opvers)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* op = x.second;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;{&quot;</span> &lt;&lt; *op &lt;&lt; <span class="stringliteral">&quot;}&quot;</span> &lt;&lt; <span class="stringliteral">&quot;,&quot;</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;\n\n__Edges__\n&quot;</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">// Iterate over edges and write to file</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">iterator</a> it = <a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = it-&gt;first;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadSVFGNode</a>* loadNode = SVFUtil::dyn_cast&lt;LoadSVFGNode&gt;(node))</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#acdbe1c510273107b708935061b6c4127">MUSet</a>&amp; muSet = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(SVFUtil::cast&lt;LoadStmt&gt;(loadNode-&gt;getPAGEdge()));</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">for</span>(MUSet::iterator it = muSet.begin(), eit = muSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFG.html#a86d4a41a881a3d2e5def103d7ba8bb2f">LOADMU</a>* mu = SVFUtil::dyn_cast&lt;LOADMU&gt;(*it))</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(mu-&gt;getMRVer());</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; def &lt;&lt; <span class="stringliteral">&quot; &gt;= LoadNode | MVER: {&quot;</span>&lt;&lt; *mu-&gt;getMRVer() &lt;&lt; <span class="stringliteral">&quot;}&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* storeNode = SVFUtil::dyn_cast&lt;StoreSVFGNode&gt;(node))</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a8843ab4a4608f7f5f46f68ad31314c07">CHISet</a>&amp; chiSet = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(SVFUtil::cast&lt;StoreStmt&gt;(storeNode-&gt;getPAGEdge()));</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator it = chiSet.begin(), eit = chiSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFG.html#ad14cdbb3f1df1f716aa03b4d39f4e52b">STORECHI</a>* chi = SVFUtil::dyn_cast&lt;STORECHI&gt;(*it))</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(chi-&gt;getOpVer());</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; def &lt;&lt; <span class="stringliteral">&quot; &gt;= StoreNode | MVER: {&quot;</span>&lt;&lt; *chi-&gt;getOpVer() &lt;&lt; <span class="stringliteral">&quot;}&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn = SVFUtil::dyn_cast&lt;FormalINSVFGNode&gt;(node))</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a> callInstSet;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a0d2544130cc2cdc3ac418c975c278eb2">getDirCallSitesInvokingCallee</a>(formalIn-&gt;getFun(),callInstSet);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::iterator it = callInstSet.begin(), eit = callInstSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = *it;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">hasMU</a>(cs))</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a">ActualINSVFGNodeSet</a>&amp; actualIns = <a class="code" href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975">getActualINSVFGNodes</a>(cs);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">for</span>(ActualINSVFGNodeSet::iterator ait = actualIns.begin(), aeit = actualIns.end(); ait!=aeit; ++ait)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::cast&lt;ActualINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ait));</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; actualIn-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; &gt;= FormalINSVFGNode&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* formalOut = SVFUtil::dyn_cast&lt;FormalOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a> callInstSet;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a0d2544130cc2cdc3ac418c975c278eb2">getDirCallSitesInvokingCallee</a>(formalOut-&gt;getFun(),callInstSet);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::iterator it = callInstSet.begin(), eit = callInstSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = *it;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">hasCHI</a>(cs))</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">ActualOUTSVFGNodeSet</a>&amp; actualOuts = <a class="code" href="classSVF_1_1SVFG.html#a5b7ae610bee28acc2905ca82928e714f">getActualOUTSVFGNodes</a>(cs);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">for</span>(ActualOUTSVFGNodeSet::iterator ait = actualOuts.begin(), aeit = actualOuts.end(); ait!=aeit; ++ait)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::cast&lt;ActualOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ait));</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; actualOut-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; &gt;= FormalOUTSVFGNode&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(formalOut-&gt;getMRVer());</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; def &lt;&lt; <span class="stringliteral">&quot; &gt;= FormalOUTSVFGNode | intra&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::dyn_cast&lt;ActualINSVFGNode&gt;(node))</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(actualIn-&gt;getMRVer());</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; def &lt;&lt; <span class="stringliteral">&quot; &gt;= ActualINSVFGNode&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* phiNode = SVFUtil::dyn_cast&lt;MSSAPHISVFGNode&gt;(node))</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">for</span> (MemSSA::PHI::OPVers::const_iterator it = phiNode-&gt;opVerBegin(), eit = phiNode-&gt;opVerEnd();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; it != eit; it++)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* op = it-&gt;second;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(op);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; def &lt;&lt; <span class="stringliteral">&quot; &gt;= PHISVFGNode | MVER: {&quot;</span>&lt;&lt; *op &lt;&lt; <span class="stringliteral">&quot;}&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="comment">// Job finish and close file</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; f.close();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">if</span> (f.good())</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;}</div><div class="ttc" id="classSVF_1_1MRVer_html"><div class="ttname"><a href="classSVF_1_1MRVer.html">SVF::MRVer</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00043">MSSAMuChi.h:43</a></div></div>
3701
+ <div class="ttc" id="classSVF_1_1MemSSA_html_a2e656a50f8964fc3e99d1d436de64418"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">SVF::MemSSA::getCHISet</a></div><div class="ttdeci">CHISet &amp; getCHISet(const StoreStmt *st)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00392">MemSSA.h:392</a></div></div>
3702
+ <div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
3703
+ <div class="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00240">VFGNode.h:240</a></div></div>
3704
+ <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>
3705
+ <div class="ttc" id="classSVF_1_1SVFG_html_acdbe1c510273107b708935061b6c4127"><div class="ttname"><a href="classSVF_1_1SVFG.html#acdbe1c510273107b708935061b6c4127">SVF::SVFG::MUSet</a></div><div class="ttdeci">MemSSA::MUSet MUSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00086">SVFG.h:86</a></div></div>
3706
+ <div class="ttc" id="classSVF_1_1SVFG_html_a86d4a41a881a3d2e5def103d7ba8bb2f"><div class="ttname"><a href="classSVF_1_1SVFG.html#a86d4a41a881a3d2e5def103d7ba8bb2f">SVF::SVFG::LOADMU</a></div><div class="ttdeci">MemSSA::LOADMU LOADMU</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00091">SVFG.h:91</a></div></div>
3707
+ <div class="ttc" id="classSVF_1_1FormalOUTSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalOUTSVFGNode.html">SVF::FormalOUTSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00138">SVFGNode.h:138</a></div></div>
3708
+ <div class="ttc" id="classSVF_1_1SVFG_html_a7ace06b6c893b31f7dec2abe54e33e11"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">SVF::SVFG::getSVFGNode</a></div><div class="ttdeci">SVFGNode * getSVFGNode(NodeID id) const</div><div class="ttdoc">Get a SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00150">SVFG.h:150</a></div></div>
3709
+ <div class="ttc" id="classSVF_1_1ActualOUTSVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualOUTSVFGNode.html">SVF::ActualOUTSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00229">SVFGNode.h:229</a></div></div>
3710
+ <div class="ttc" id="classSVF_1_1MSSAPHISVFGNode_html"><div class="ttname"><a href="classSVF_1_1MSSAPHISVFGNode.html">SVF::MSSAPHISVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00276">SVFGNode.h:276</a></div></div>
3711
+ <div class="ttc" id="classSVF_1_1SVFG_html_aa9f520779475e4783eccc45c460e346a"><div class="ttname"><a href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a">SVF::SVFG::ActualINSVFGNodeSet</a></div><div class="ttdeci">NodeBS ActualINSVFGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00078">SVFG.h:78</a></div></div>
3712
+ <div class="ttc" id="classSVF_1_1ActualINSVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualINSVFGNode.html">SVF::ActualINSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00180">SVFGNode.h:180</a></div></div>
3713
+ <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_adbedb15ac0f9395c5264f087a63bad3b"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">SVF::PTACallGraphEdge::CallInstSet</a></div><div class="ttdeci">Set&lt; const CallICFGNode * &gt; CallInstSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00055">PTACallGraph.h:55</a></div></div>
3714
+ <div class="ttc" id="classSVF_1_1MemSSA_html_af4d11a0c7da0ddd7dff8d75a00279847"><div class="ttname"><a href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">SVF::MemSSA::getMUSet</a></div><div class="ttdeci">MUSet &amp; getMUSet(const LoadStmt *ld)</div><div class="ttdoc">Get methods of mu/chi/phi. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00388">MemSSA.h:388</a></div></div>
3715
+ <div class="ttc" id="classSVF_1_1SVFG_html_a5b7ae610bee28acc2905ca82928e714f"><div class="ttname"><a href="classSVF_1_1SVFG.html#a5b7ae610bee28acc2905ca82928e714f">SVF::SVFG::getActualOUTSVFGNodes</a></div><div class="ttdeci">ActualOUTSVFGNodeSet &amp; getActualOUTSVFGNodes(const CallICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00209">SVFG.h:209</a></div></div>
3716
+ <div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
3717
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a7c9b7e5fe37ae31ba84d167945ca57df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">SVF::PointerAnalysis::getPTACallGraph</a></div><div class="ttdeci">PTACallGraph * getPTACallGraph() const</div><div class="ttdoc">Return call graph. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00179">PointerAnalysis.h:179</a></div></div>
3718
+ <div class="ttc" id="classSVF_1_1VFG_html_a241d0489bf0315460e2b07db87e7847c"><div class="ttname"><a href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVF::VFG::iterator</a></div><div class="ttdeci">VFGNodeIDToNodeMapTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00080">VFG.h:80</a></div></div>
3719
+ <div class="ttc" id="classSVF_1_1SVFG_html_a475205e221890204c7770c414ee63975"><div class="ttname"><a href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975">SVF::SVFG::getActualINSVFGNodes</a></div><div class="ttdeci">ActualINSVFGNodeSet &amp; getActualINSVFGNodes(const CallICFGNode *cs)</div><div class="ttdoc">Get SVFGNode set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00204">SVFG.h:204</a></div></div>
3720
+ <div class="ttc" id="classSVF_1_1MemSSA_html_af5e356e82c3f93b65bd89908e0f465dc"><div class="ttname"><a href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">SVF::MemSSA::hasMU</a></div><div class="ttdeci">bool hasMU(const PAGEdge *inst) const</div><div class="ttdoc">Has mu/chi methods. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00332">MemSSA.h:332</a></div></div>
3721
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
3722
+ <div class="ttc" id="classSVF_1_1VFG_html_a25c2bbbc2e966e2aaa59a5b83363557a"><div class="ttname"><a href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">SVF::VFG::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00104">VFG.h:104</a></div></div>
3723
+ <div class="ttc" id="classSVF_1_1LoadVFGNode_html"><div class="ttname"><a href="classSVF_1_1LoadVFGNode.html">SVF::LoadVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00199">VFGNode.h:199</a></div></div>
3724
+ <div class="ttc" id="classSVF_1_1ICFG_html_a5f2c0aaba07d6fdd63058da0fb60ca8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">SVF::ICFG::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode(NodeID id) const</div><div class="ttdoc">Get a ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00084">ICFG.h:84</a></div></div>
3725
+ <div class="ttc" id="classSVF_1_1SVFG_html_abd917826bf50ed409a307ce00562c97d"><div class="ttname"><a href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">SVF::SVFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00350">SVFG.h:350</a></div></div>
3726
+ <div class="ttc" id="classSVF_1_1PTACallGraph_html_a0d2544130cc2cdc3ac418c975c278eb2"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a0d2544130cc2cdc3ac418c975c278eb2">SVF::PTACallGraph::getDirCallSitesInvokingCallee</a></div><div class="ttdeci">void getDirCallSitesInvokingCallee(const SVFFunction *callee, PTACallGraphEdge::CallInstSet &amp;csSet)</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8cpp_source.html#l00231">PTACallGraph.cpp:231</a></div></div>
3727
+ <div class="ttc" id="classSVF_1_1SVFG_html_a2f6ed8a9f14657abc1e2a89247a84b99"><div class="ttname"><a href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">SVF::SVFG::ActualOUTSVFGNodeSet</a></div><div class="ttdeci">NodeBS ActualOUTSVFGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00079">SVFG.h:79</a></div></div>
3728
+ <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
3729
+ <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
3730
+ <div class="ttc" id="classSVF_1_1SVFG_html_ad14cdbb3f1df1f716aa03b4d39f4e52b"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad14cdbb3f1df1f716aa03b4d39f4e52b">SVF::SVFG::STORECHI</a></div><div class="ttdeci">MemSSA::STORECHI STORECHI</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00092">SVFG.h:92</a></div></div>
3731
+ <div class="ttc" id="classSVF_1_1SVFG_html_a6f07410ee34e4bf1079e3b5902c81d28"><div class="ttname"><a href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">SVF::SVFG::mssa</a></div><div class="ttdeci">MemSSA * mssa</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00105">SVFG.h:105</a></div></div>
3732
+ <div class="ttc" id="classSVF_1_1SVFG_html_a8843ab4a4608f7f5f46f68ad31314c07"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8843ab4a4608f7f5f46f68ad31314c07">SVF::SVFG::CHISet</a></div><div class="ttdeci">MemSSA::CHISet CHISet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00087">SVFG.h:87</a></div></div>
3733
+ <div class="ttc" id="classSVF_1_1MemSSA_html_ad40617a1907b9a6b8cc24888ce54a0ac"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">SVF::MemSSA::getPTA</a></div><div class="ttdeci">BVDataPTAImpl * getPTA() const</div><div class="ttdoc">Return PTA. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00315">MemSSA.h:315</a></div></div>
3734
+ <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
3735
+ <div class="ttc" id="classSVF_1_1FormalINSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalINSVFGNode.html">SVF::FormalINSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00093">SVFGNode.h:93</a></div></div>
3736
+ <div class="ttc" id="classSVF_1_1MemSSA_html_abfb338ce36ad46a9654d50dd6e2b07f1"><div class="ttname"><a href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">SVF::MemSSA::hasCHI</a></div><div class="ttdeci">bool hasCHI(const PAGEdge *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00343">MemSSA.h:343</a></div></div>
3737
+ <div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
3738
+ </div><!-- fragment -->
3739
+ </div>
3740
+ </div>
3556
3741
  <h2 class="groupheader">Friends And Related Function Documentation</h2>
3557
3742
  <a id="a9ccd530dc4c49b0df372a2ce95b66921"></a>
3558
3743
  <h2 class="memtitle"><span class="permalink"><a href="#a9ccd530dc4c49b0df372a2ce95b66921">&#9670;&nbsp;</a></span>DDASVFGBuilder</h2>
@@ -3896,6 +4081,7 @@ Additional Inherited Members</h2></td></tr>
3896
4081
  <hr/>The documentation for this class was generated from the following files:<ul>
3897
4082
  <li>/home/runner/work/SVF/SVF/include/Graphs/<a class="el" href="SVFG_8h_source.html">SVFG.h</a></li>
3898
4083
  <li>/home/runner/work/SVF/SVF/lib/Graphs/<a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a></li>
4084
+ <li>/home/runner/work/SVF/SVF/lib/Graphs/<a class="el" href="SVFGReadWrite_8cpp_source.html">SVFGReadWrite.cpp</a></li>
3899
4085
  </ul>
3900
4086
  </div><!-- contents -->
3901
4087
  <!-- start footer part -->