svf-tools 1.0.367 → 1.0.371

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 (141) hide show
  1. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +5 -5
  3. package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
  4. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  6. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +2 -2
  9. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +4 -4
  10. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +9 -7
  11. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +4 -4
  12. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +51 -41
  13. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +2 -2
  14. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +4 -4
  15. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +22 -19
  16. package/SVF-doxygen/html/html/ICFG_8h_source.html +6 -5
  17. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +2 -2
  21. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
  22. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +2 -2
  23. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +10 -6
  24. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +40 -40
  25. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +40 -40
  26. package/SVF-doxygen/html/html/SVFIR_8h_source.html +38 -38
  27. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  28. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +73 -75
  29. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +1 -1
  32. package/SVF-doxygen/html/html/VFGNode_8h_source.html +5 -5
  33. package/SVF-doxygen/html/html/VFG_8cpp_source.html +9 -9
  34. package/SVF-doxygen/html/html/VFG_8h_source.html +8 -8
  35. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +1 -1
  36. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +3 -3
  37. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +42 -43
  38. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +15 -18
  39. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +31 -31
  40. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
  41. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge-members.html +28 -25
  42. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +108 -15
  43. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode-members.html +1 -1
  44. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +6 -6
  45. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +42 -43
  46. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +16 -19
  47. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  48. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +7 -7
  49. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +2 -2
  50. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
  51. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +4 -4
  52. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  53. package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +1 -1
  54. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +30 -26
  55. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +22 -17
  56. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +30 -30
  57. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter-members.html +1 -1
  58. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +6 -6
  59. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge-members.html +27 -26
  60. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +121 -82
  61. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
  62. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
  63. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +45 -46
  64. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +8 -46
  65. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +1 -2
  66. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +8 -8
  67. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +47 -48
  68. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +32 -33
  69. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +2 -2
  70. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge-members.html +23 -20
  71. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +110 -15
  72. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +87 -86
  73. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +87 -76
  74. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  75. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt-members.html +44 -45
  76. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +21 -24
  77. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +9 -9
  78. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +9 -9
  79. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +1 -1
  80. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +20 -20
  81. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +10 -10
  82. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
  83. package/SVF-doxygen/html/html/functions_a.html +12 -10
  84. package/SVF-doxygen/html/html/functions_b.html +7 -12
  85. package/SVF-doxygen/html/html/functions_c.html +22 -18
  86. package/SVF-doxygen/html/html/functions_f.html +3 -3
  87. package/SVF-doxygen/html/html/functions_func.html +13 -11
  88. package/SVF-doxygen/html/html/functions_func_g.html +19 -17
  89. package/SVF-doxygen/html/html/functions_func_s.html +2 -2
  90. package/SVF-doxygen/html/html/functions_g.html +20 -18
  91. package/SVF-doxygen/html/html/functions_n.html +6 -6
  92. package/SVF-doxygen/html/html/functions_p.html +15 -15
  93. package/SVF-doxygen/html/html/functions_r.html +5 -2
  94. package/SVF-doxygen/html/html/functions_s.html +11 -11
  95. package/SVF-doxygen/html/html/functions_type_b.html +0 -3
  96. package/SVF-doxygen/html/html/functions_vars_b.html +2 -2
  97. package/SVF-doxygen/html/html/functions_vars_c.html +5 -1
  98. package/SVF-doxygen/html/html/functions_vars_r.html +3 -0
  99. package/SVF-doxygen/html/html/functions_w.html +5 -9
  100. package/SVF-doxygen/html/html/namespaceSVF.html +1 -1
  101. package/SVF-doxygen/html/html/search/all_1.js +3 -3
  102. package/SVF-doxygen/html/html/search/all_10.js +7 -7
  103. package/SVF-doxygen/html/html/search/all_12.js +3 -3
  104. package/SVF-doxygen/html/html/search/all_13.js +8 -8
  105. package/SVF-doxygen/html/html/search/all_14.js +2 -2
  106. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  107. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  108. package/SVF-doxygen/html/html/search/all_2.js +2 -3
  109. package/SVF-doxygen/html/html/search/all_3.js +2 -1
  110. package/SVF-doxygen/html/html/search/all_6.js +1 -1
  111. package/SVF-doxygen/html/html/search/all_7.js +7 -7
  112. package/SVF-doxygen/html/html/search/all_c.js +1 -1
  113. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  114. package/SVF-doxygen/html/html/search/all_e.js +6 -6
  115. package/SVF-doxygen/html/html/search/functions_0.js +3 -3
  116. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  117. package/SVF-doxygen/html/html/search/functions_6.js +7 -7
  118. package/SVF-doxygen/html/html/search/typedefs_1.js +0 -1
  119. package/SVF-doxygen/html/html/search/variables_12.js +1 -0
  120. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  121. package/SVF-doxygen/html/html/search/variables_2.js +1 -1
  122. package/SVF-doxygen/html/html/search/variables_3.js +2 -1
  123. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  124. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  125. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +18 -18
  126. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  127. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  128. package/include/Graphs/ICFG.h +1 -1
  129. package/include/Graphs/ICFGEdge.h +39 -17
  130. package/include/Graphs/ICFGNode.h +1 -1
  131. package/include/MemoryModel/SVFStatements.h +2 -11
  132. package/include/SVF-FE/SVFIRBuilder.h +3 -1
  133. package/include/Util/ExtAPI.h +1 -1
  134. package/lib/Graphs/ICFG.cpp +22 -7
  135. package/lib/MemoryModel/SVFIR.cpp +2 -1
  136. package/lib/MemoryModel/SVFStatements.cpp +6 -6
  137. package/lib/MemoryModel/SymbolTableInfo.cpp +1 -1
  138. package/lib/SVF-FE/ICFGBuilder.cpp +8 -3
  139. package/lib/SVF-FE/SVFIRBuilder.cpp +15 -3
  140. package/lib/Util/ExtAPI.cpp +0 -1
  141. package/package.json +1 -1
@@ -471,10 +471,10 @@ Private Attributes</h2></td></tr>
471
471
 
472
472
  <p>Add Copy edge. </p>
473
473
 
474
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00330">330</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
475
- <div class="fragment"><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; BinaryOPStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a955a2f93cf9eef857e40f19bc24edb2f">addBinaryOPStmt</a>(op1, op2, dst, opcode);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01617">SVFIRBuilder.cpp:1617</a></div></div>
474
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00332">332</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
475
+ <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; BinaryOPStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a955a2f93cf9eef857e40f19bc24edb2f">addBinaryOPStmt</a>(op1, op2, dst, opcode);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01617">SVFIRBuilder.cpp:1617</a></div></div>
476
476
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
477
- <div class="ttc" id="classSVF_1_1SVFIR_html_a955a2f93cf9eef857e40f19bc24edb2f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a955a2f93cf9eef857e40f19bc24edb2f">SVF::SVFIR::addBinaryOPStmt</a></div><div class="ttdeci">BinaryOPStmt * addBinaryOPStmt(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00150">SVFIR.cpp:150</a></div></div>
477
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a955a2f93cf9eef857e40f19bc24edb2f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a955a2f93cf9eef857e40f19bc24edb2f">SVF::SVFIR::addBinaryOPStmt</a></div><div class="ttdeci">BinaryOPStmt * addBinaryOPStmt(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00151">SVFIR.cpp:151</a></div></div>
478
478
  </div><!-- fragment -->
479
479
  </div>
480
480
  </div>
@@ -503,7 +503,7 @@ Private Attributes</h2></td></tr>
503
503
  </div><div class="memdoc">
504
504
 
505
505
  <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00287">287</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
506
- <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#ae6ead95a66f69e1e4cfa1159f868a152">PAGEdge</a> *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a33df5f5d9b7de3846cf973135b04f513">addBlackHoleAddrStmt</a>(node);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a33df5f5d9b7de3846cf973135b04f513"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a33df5f5d9b7de3846cf973135b04f513">SVF::SVFIR::addBlackHoleAddrStmt</a></div><div class="ttdeci">SVFStmt * addBlackHoleAddrStmt(NodeID node)</div><div class="ttdoc">Set a pointer points-to black hole (e.g. int2ptr) </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00279">SVFIR.cpp:279</a></div></div>
506
+ <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#ae6ead95a66f69e1e4cfa1159f868a152">PAGEdge</a> *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a33df5f5d9b7de3846cf973135b04f513">addBlackHoleAddrStmt</a>(node);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a33df5f5d9b7de3846cf973135b04f513"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a33df5f5d9b7de3846cf973135b04f513">SVF::SVFIR::addBlackHoleAddrStmt</a></div><div class="ttdeci">SVFStmt * addBlackHoleAddrStmt(NodeID node)</div><div class="ttdoc">Set a pointer points-to black hole (e.g. int2ptr) </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00280">SVFIR.cpp:280</a></div></div>
507
507
  <div class="ttc" id="namespaceSVF_html_ae6ead95a66f69e1e4cfa1159f868a152"><div class="ttname"><a href="namespaceSVF.html#ae6ead95a66f69e1e4cfa1159f868a152">SVF::PAGEdge</a></div><div class="ttdeci">SVFStmt PAGEdge</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00043">IRGraph.h:43</a></div></div>
508
508
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01617">SVFIRBuilder.cpp:1617</a></div></div>
509
509
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
@@ -552,8 +552,8 @@ Private Attributes</h2></td></tr>
552
552
 
553
553
  <p>Add Branch statement. </p>
554
554
 
555
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00344">344</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
556
- <div class="fragment"><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; BranchStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae61030da4a84b5c9c47903804af9d107">addBranchStmt</a>(br, cond, succs);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_ae61030da4a84b5c9c47903804af9d107"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae61030da4a84b5c9c47903804af9d107">SVF::SVFIR::addBranchStmt</a></div><div class="ttdeci">BranchStmt * addBranchStmt(NodeID br, NodeID cond, const BranchStmt::SuccAndCondPairVec &amp;succs)</div><div class="ttdoc">Add BranchStmt. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00188">SVFIR.cpp:188</a></div></div>
555
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00346">346</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
556
+ <div class="fragment"><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; BranchStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae61030da4a84b5c9c47903804af9d107">addBranchStmt</a>(br, cond, succs);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_ae61030da4a84b5c9c47903804af9d107"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae61030da4a84b5c9c47903804af9d107">SVF::SVFIR::addBranchStmt</a></div><div class="ttdeci">BranchStmt * addBranchStmt(NodeID br, NodeID cond, const BranchStmt::SuccAndCondPairVec &amp;succs)</div><div class="ttdoc">Add BranchStmt. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00189">SVFIR.cpp:189</a></div></div>
557
557
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01617">SVFIRBuilder.cpp:1617</a></div></div>
558
558
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
559
559
  </div><!-- fragment -->
@@ -607,8 +607,8 @@ Private Attributes</h2></td></tr>
607
607
 
608
608
  <p>Add Call edge. </p>
609
609
 
610
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00369">369</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
611
- <div class="fragment"><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; CallPE *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a574bd5c9f11681c70db29c25f25a4cba">addCallPE</a>(src, dst, cs, <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a574bd5c9f11681c70db29c25f25a4cba"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a574bd5c9f11681c70db29c25f25a4cba">SVF::SVFIR::addCallPE</a></div><div class="ttdeci">CallPE * addCallPE(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Call edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00243">SVFIR.cpp:243</a></div></div>
610
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00371">371</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
611
+ <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; CallPE *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a574bd5c9f11681c70db29c25f25a4cba">addCallPE</a>(src, dst, cs, <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a574bd5c9f11681c70db29c25f25a4cba"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a574bd5c9f11681c70db29c25f25a4cba">SVF::SVFIR::addCallPE</a></div><div class="ttdeci">CallPE * addCallPE(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Call edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00244">SVFIR.cpp:244</a></div></div>
612
612
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01617">SVFIRBuilder.cpp:1617</a></div></div>
613
613
  <div class="ttc" id="cuddInt_8c_html_a936a27e51e66afb57c2b3a12d78a238e"><div class="ttname"><a href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a></div><div class="ttdeci">static int * entry</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l08422">cuddInt.c:8422</a></div></div>
614
614
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
@@ -663,8 +663,8 @@ Private Attributes</h2></td></tr>
663
663
 
664
664
  <p>Add Copy edge. </p>
665
665
 
666
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00323">323</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
667
- <div class="fragment"><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; CmpStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a7eb14738f0cf08cc8b5c623c953db4ba">addCmpStmt</a>(op1, op2, dst, predict);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a7eb14738f0cf08cc8b5c623c953db4ba"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7eb14738f0cf08cc8b5c623c953db4ba">SVF::SVFIR::addCmpStmt</a></div><div class="ttdeci">CmpStmt * addCmpStmt(NodeID op1, NodeID op2, NodeID dst, u32_t predict)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00129">SVFIR.cpp:129</a></div></div>
666
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00325">325</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
667
+ <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; CmpStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a7eb14738f0cf08cc8b5c623c953db4ba">addCmpStmt</a>(op1, op2, dst, predict);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a7eb14738f0cf08cc8b5c623c953db4ba"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7eb14738f0cf08cc8b5c623c953db4ba">SVF::SVFIR::addCmpStmt</a></div><div class="ttdeci">CmpStmt * addCmpStmt(NodeID op1, NodeID op2, NodeID dst, u32_t predict)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00130">SVFIR.cpp:130</a></div></div>
668
668
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01617">SVFIRBuilder.cpp:1617</a></div></div>
669
669
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
670
670
  </div><!-- fragment -->
@@ -712,8 +712,8 @@ Private Attributes</h2></td></tr>
712
712
  <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>
713
713
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_ad0b30ca8fc2939bb7360a3ff08727d58"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ad0b30ca8fc2939bb7360a3ff08727d58">SVF::SVFIRBuilder::getGepValVar</a></div><div class="ttdeci">NodeID getGepValVar(const Value *val, const LocationSet &amp;ls, const Type *baseType, u32_t fieldidx)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01570">SVFIRBuilder.cpp:1570</a></div></div>
714
714
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
715
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a9fdcddcdcf14a90cc80d42de0d5ad189"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a9fdcddcdcf14a90cc80d42de0d5ad189">SVF::SVFIRBuilder::addLoadEdge</a></div><div class="ttdeci">LoadStmt * addLoadEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00350">SVFIRBuilder.h:350</a></div></div>
716
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_ac5795471aff6ccb07a84ffe1277ff2d4"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ac5795471aff6ccb07a84ffe1277ff2d4">SVF::SVFIRBuilder::addStoreEdge</a></div><div class="ttdeci">StoreStmt * addStoreEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00357">SVFIRBuilder.h:357</a></div></div>
715
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a9fdcddcdcf14a90cc80d42de0d5ad189"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a9fdcddcdcf14a90cc80d42de0d5ad189">SVF::SVFIRBuilder::addLoadEdge</a></div><div class="ttdeci">LoadStmt * addLoadEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00352">SVFIRBuilder.h:352</a></div></div>
716
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_ac5795471aff6ccb07a84ffe1277ff2d4"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ac5795471aff6ccb07a84ffe1277ff2d4">SVF::SVFIRBuilder::addStoreEdge</a></div><div class="ttdeci">StoreStmt * addStoreEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00359">SVFIRBuilder.h:359</a></div></div>
717
717
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9e85d445e8b7b205134acd3874bba388"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVF::SVFUtil::isConstantData</a></div><div class="ttdeci">bool isConstantData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00392">LLVMUtil.h:392</a></div></div>
718
718
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
719
719
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_ac03c4203e4b32a68dd548af64764fe2c"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ac03c4203e4b32a68dd548af64764fe2c">SVF::SVFIRBuilder::getBaseTypeAndFlattenedFields</a></div><div class="ttdeci">const Type * getBaseTypeAndFlattenedFields(const Value *V, std::vector&lt; LocationSet &gt; &amp;fields)</div><div class="ttdoc">Get the base type and max offset. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01019">SVFIRBuilder.cpp:1019</a></div></div>
@@ -857,8 +857,8 @@ Private Attributes</h2></td></tr>
857
857
 
858
858
  <p>Add Gep edge. </p>
859
859
 
860
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00383">383</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
861
- <div class="fragment"><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; GepStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a9eeab593b2f161ad268d27a7031aedbe">addGepStmt</a>(src, dst, ls, constGep);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a9eeab593b2f161ad268d27a7031aedbe"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a9eeab593b2f161ad268d27a7031aedbe">SVF::SVFIR::addGepStmt</a></div><div class="ttdeci">GepStmt * addGepStmt(NodeID src, NodeID dst, const LocationSet &amp;ls, bool constGep)</div><div class="ttdoc">Add Gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00329">SVFIR.cpp:329</a></div></div>
860
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00385">385</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
861
+ <div class="fragment"><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; GepStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a9eeab593b2f161ad268d27a7031aedbe">addGepStmt</a>(src, dst, ls, constGep);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a9eeab593b2f161ad268d27a7031aedbe"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a9eeab593b2f161ad268d27a7031aedbe">SVF::SVFIR::addGepStmt</a></div><div class="ttdeci">GepStmt * addGepStmt(NodeID src, NodeID dst, const LocationSet &amp;ls, bool constGep)</div><div class="ttdoc">Add Gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00330">SVFIR.cpp:330</a></div></div>
862
862
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01617">SVFIRBuilder.cpp:1617</a></div></div>
863
863
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
864
864
  </div><!-- fragment -->
@@ -946,8 +946,8 @@ Private Attributes</h2></td></tr>
946
946
 
947
947
  <p>Add Load edge. </p>
948
948
 
949
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00350">350</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
950
- <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; LoadStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3837804b2622baf7e6991aa993286e9e">addLoadStmt</a>(src, dst);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a3837804b2622baf7e6991aa993286e9e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3837804b2622baf7e6991aa993286e9e">SVF::SVFIR::addLoadStmt</a></div><div class="ttdeci">LoadStmt * addLoadStmt(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00206">SVFIR.cpp:206</a></div></div>
949
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00352">352</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
950
+ <div class="fragment"><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; LoadStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3837804b2622baf7e6991aa993286e9e">addLoadStmt</a>(src, dst);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a3837804b2622baf7e6991aa993286e9e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3837804b2622baf7e6991aa993286e9e">SVF::SVFIR::addLoadStmt</a></div><div class="ttdeci">LoadStmt * addLoadStmt(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00207">SVFIR.cpp:207</a></div></div>
951
951
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01617">SVFIRBuilder.cpp:1617</a></div></div>
952
952
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
953
953
  </div><!-- fragment -->
@@ -995,8 +995,8 @@ Private Attributes</h2></td></tr>
995
995
 
996
996
  <p>Add Offset(Gep) edge. </p>
997
997
 
998
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00390">390</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
999
- <div class="fragment"><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; GepStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a460011093c6426b98236c8381b1df0a0">addNormalGepStmt</a>(src, dst, ls);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a460011093c6426b98236c8381b1df0a0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a460011093c6426b98236c8381b1df0a0">SVF::SVFIR::addNormalGepStmt</a></div><div class="ttdeci">GepStmt * addNormalGepStmt(NodeID src, NodeID dst, const LocationSet &amp;ls)</div><div class="ttdoc">Add Offset(Gep) edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00348">SVFIR.cpp:348</a></div></div>
998
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00392">392</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
999
+ <div class="fragment"><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; GepStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a460011093c6426b98236c8381b1df0a0">addNormalGepStmt</a>(src, dst, ls);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a460011093c6426b98236c8381b1df0a0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a460011093c6426b98236c8381b1df0a0">SVF::SVFIR::addNormalGepStmt</a></div><div class="ttdeci">GepStmt * addNormalGepStmt(NodeID src, NodeID dst, const LocationSet &amp;ls)</div><div class="ttdoc">Add Offset(Gep) edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00349">SVFIR.cpp:349</a></div></div>
1000
1000
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01617">SVFIRBuilder.cpp:1617</a></div></div>
1001
1001
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
1002
1002
  </div><!-- fragment -->
@@ -1084,9 +1084,10 @@ Private Attributes</h2></td></tr>
1084
1084
  </div><div class="memdoc">
1085
1085
 
1086
1086
  <p>Add Copy edge. </p>
1087
+ <p>If we already added this phi node, then skip this adding </p>
1087
1088
 
1088
1089
  <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00309">309</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
1089
- <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; PhiStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abb272e6fff36a29fe84c9d8695f7d630">addPhiStmt</a>(res,opnd,pred);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_abb272e6fff36a29fe84c9d8695f7d630"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abb272e6fff36a29fe84c9d8695f7d630">SVF::SVFIR::addPhiStmt</a></div><div class="ttdeci">PhiStmt * addPhiStmt(NodeID res, NodeID opnd, const ICFGNode *pred)</div><div class="ttdoc">Add phi node information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00087">SVFIR.cpp:87</a></div></div>
1090
+ <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; PhiStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abb272e6fff36a29fe84c9d8695f7d630">addPhiStmt</a>(res,opnd,pred);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">if</span>(edge)</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_abb272e6fff36a29fe84c9d8695f7d630"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abb272e6fff36a29fe84c9d8695f7d630">SVF::SVFIR::addPhiStmt</a></div><div class="ttdeci">PhiStmt * addPhiStmt(NodeID res, NodeID opnd, const ICFGNode *pred)</div><div class="ttdoc">Add phi node information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00087">SVFIR.cpp:87</a></div></div>
1090
1091
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01617">SVFIRBuilder.cpp:1617</a></div></div>
1091
1092
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
1092
1093
  </div><!-- fragment -->
@@ -1140,9 +1141,9 @@ Private Attributes</h2></td></tr>
1140
1141
 
1141
1142
  <p>Add Return edge. </p>
1142
1143
 
1143
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00376">376</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
1144
- <div class="fragment"><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; RetPE *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a1791652f578b6ab8aacb4d6e7c7fd05f">addRetPE</a>(src, dst, cs, <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div><div class="ttc" id="util_8h_html_a43b6ea6be735bb828bc062c70cadeff8"><div class="ttname"><a href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a></div><div class="ttdeci">VOID_OR_INT exit()</div></div>
1145
- <div class="ttc" id="classSVF_1_1SVFIR_html_a1791652f578b6ab8aacb4d6e7c7fd05f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a1791652f578b6ab8aacb4d6e7c7fd05f">SVF::SVFIR::addRetPE</a></div><div class="ttdeci">RetPE * addRetPE(NodeID src, NodeID dst, const CallICFGNode *cs, const FunExitICFGNode *exit)</div><div class="ttdoc">Add Return edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00261">SVFIR.cpp:261</a></div></div>
1144
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00378">378</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
1145
+ <div class="fragment"><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; RetPE *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a1791652f578b6ab8aacb4d6e7c7fd05f">addRetPE</a>(src, dst, cs, <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div><div class="ttc" id="util_8h_html_a43b6ea6be735bb828bc062c70cadeff8"><div class="ttname"><a href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a></div><div class="ttdeci">VOID_OR_INT exit()</div></div>
1146
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a1791652f578b6ab8aacb4d6e7c7fd05f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a1791652f578b6ab8aacb4d6e7c7fd05f">SVF::SVFIR::addRetPE</a></div><div class="ttdeci">RetPE * addRetPE(NodeID src, NodeID dst, const CallICFGNode *cs, const FunExitICFGNode *exit)</div><div class="ttdoc">Add Return edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00262">SVFIR.cpp:262</a></div></div>
1146
1147
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01617">SVFIRBuilder.cpp:1617</a></div></div>
1147
1148
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
1148
1149
  </div><!-- fragment -->
@@ -1196,8 +1197,8 @@ Private Attributes</h2></td></tr>
1196
1197
 
1197
1198
  <p>Add <a class="el" href="classSVF_1_1SelectStmt.html">SelectStmt</a>. </p>
1198
1199
 
1199
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00316">316</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
1200
- <div class="fragment"><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; SelectStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#accbff738e77fd2256d4a6629c48d63f4">addSelectStmt</a>(res,op1,op2,cond);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_accbff738e77fd2256d4a6629c48d63f4"><div class="ttname"><a href="classSVF_1_1SVFIR.html#accbff738e77fd2256d4a6629c48d63f4">SVF::SVFIR::addSelectStmt</a></div><div class="ttdeci">SelectStmt * addSelectStmt(NodeID res, NodeID op1, NodeID op2, NodeID cond)</div><div class="ttdoc">Add SelectStmt. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00108">SVFIR.cpp:108</a></div></div>
1200
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00318">318</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
1201
+ <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; SelectStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#accbff738e77fd2256d4a6629c48d63f4">addSelectStmt</a>(res,op1,op2,cond);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_accbff738e77fd2256d4a6629c48d63f4"><div class="ttname"><a href="classSVF_1_1SVFIR.html#accbff738e77fd2256d4a6629c48d63f4">SVF::SVFIR::addSelectStmt</a></div><div class="ttdeci">SelectStmt * addSelectStmt(NodeID res, NodeID op1, NodeID op2, NodeID cond)</div><div class="ttdoc">Add SelectStmt. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00109">SVFIR.cpp:109</a></div></div>
1201
1202
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01617">SVFIRBuilder.cpp:1617</a></div></div>
1202
1203
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
1203
1204
  </div><!-- fragment -->
@@ -1239,11 +1240,11 @@ Private Attributes</h2></td></tr>
1239
1240
 
1240
1241
  <p>Add Store edge. </p>
1241
1242
 
1242
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00357">357</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
1243
- <div class="fragment"><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; IntraICFGNode* node;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast&lt;Instruction&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>))</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a2b3a5a9c3c4c623a6d45ab1eac3c6a8b">getIntraICFGNode</a>(inst);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; node = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; StoreStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af9804d78e4158d3c8961e1f84bbef91e">addStoreStmt</a>(src, dst, node);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; }</div><div class="ttc" id="classSVF_1_1ICFG_html_a2b3a5a9c3c4c623a6d45ab1eac3c6a8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a2b3a5a9c3c4c623a6d45ab1eac3c6a8b">SVF::ICFG::getIntraICFGNode</a></div><div class="ttdeci">IntraICFGNode * getIntraICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00233">ICFG.cpp:233</a></div></div>
1243
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00359">359</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
1244
+ <div class="fragment"><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; IntraICFGNode* node;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast&lt;Instruction&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>))</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a2b3a5a9c3c4c623a6d45ab1eac3c6a8b">getIntraICFGNode</a>(inst);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; node = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; StoreStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af9804d78e4158d3c8961e1f84bbef91e">addStoreStmt</a>(src, dst, node);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div><div class="ttc" id="classSVF_1_1ICFG_html_a2b3a5a9c3c4c623a6d45ab1eac3c6a8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a2b3a5a9c3c4c623a6d45ab1eac3c6a8b">SVF::ICFG::getIntraICFGNode</a></div><div class="ttdeci">IntraICFGNode * getIntraICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00233">ICFG.cpp:233</a></div></div>
1244
1245
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
1245
1246
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a5afb07f2cf8d76f8db334250e0c96cc0"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">SVF::SVFIRBuilder::curVal</a></div><div class="ttdeci">const Value * curVal</div><div class="ttdoc">Current Value during SVFIR construction when visiting the module. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00051">SVFIRBuilder.h:51</a></div></div>
1246
- <div class="ttc" id="classSVF_1_1SVFIR_html_af9804d78e4158d3c8961e1f84bbef91e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af9804d78e4158d3c8961e1f84bbef91e">SVF::SVFIR::addStoreStmt</a></div><div class="ttdeci">StoreStmt * addStoreStmt(NodeID src, NodeID dst, const IntraICFGNode *val)</div><div class="ttdoc">Add Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00225">SVFIR.cpp:225</a></div></div>
1247
+ <div class="ttc" id="classSVF_1_1SVFIR_html_af9804d78e4158d3c8961e1f84bbef91e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af9804d78e4158d3c8961e1f84bbef91e">SVF::SVFIR::addStoreStmt</a></div><div class="ttdeci">StoreStmt * addStoreStmt(NodeID src, NodeID dst, const IntraICFGNode *val)</div><div class="ttdoc">Add Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00226">SVFIR.cpp:226</a></div></div>
1247
1248
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01617">SVFIRBuilder.cpp:1617</a></div></div>
1248
1249
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
1249
1250
  <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>
@@ -1298,8 +1299,8 @@ Private Attributes</h2></td></tr>
1298
1299
 
1299
1300
  <p>Add Thread fork edge for parameter passing. </p>
1300
1301
 
1301
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00404">404</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
1302
- <div class="fragment"><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; TDForkPE *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a916d893cb852bbbd933e3e5349d5154b">addThreadForkPE</a>(src, dst, cs, <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a916d893cb852bbbd933e3e5349d5154b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a916d893cb852bbbd933e3e5349d5154b">SVF::SVFIR::addThreadForkPE</a></div><div class="ttdeci">TDForkPE * addThreadForkPE(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Thread fork edge for parameter passing. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00290">SVFIR.cpp:290</a></div></div>
1302
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00406">406</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
1303
+ <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; TDForkPE *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a916d893cb852bbbd933e3e5349d5154b">addThreadForkPE</a>(src, dst, cs, <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a916d893cb852bbbd933e3e5349d5154b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a916d893cb852bbbd933e3e5349d5154b">SVF::SVFIR::addThreadForkPE</a></div><div class="ttdeci">TDForkPE * addThreadForkPE(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Thread fork edge for parameter passing. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00291">SVFIR.cpp:291</a></div></div>
1303
1304
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01617">SVFIRBuilder.cpp:1617</a></div></div>
1304
1305
  <div class="ttc" id="cuddInt_8c_html_a936a27e51e66afb57c2b3a12d78a238e"><div class="ttname"><a href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a></div><div class="ttdeci">static int * entry</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l08422">cuddInt.c:8422</a></div></div>
1305
1306
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
@@ -1354,9 +1355,9 @@ Private Attributes</h2></td></tr>
1354
1355
 
1355
1356
  <p>Add Thread join edge for parameter passing. </p>
1356
1357
 
1357
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00411">411</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
1358
- <div class="fragment"><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; TDJoinPE *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a64d14e7ee334c85b02414d68877faab2">addThreadJoinPE</a>(src, dst, cs, <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; }</div><div class="ttc" id="util_8h_html_a43b6ea6be735bb828bc062c70cadeff8"><div class="ttname"><a href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a></div><div class="ttdeci">VOID_OR_INT exit()</div></div>
1359
- <div class="ttc" id="classSVF_1_1SVFIR_html_a64d14e7ee334c85b02414d68877faab2"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a64d14e7ee334c85b02414d68877faab2">SVF::SVFIR::addThreadJoinPE</a></div><div class="ttdeci">TDJoinPE * addThreadJoinPE(NodeID src, NodeID dst, const CallICFGNode *cs, const FunExitICFGNode *exit)</div><div class="ttdoc">Add Thread join edge for parameter passing. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00308">SVFIR.cpp:308</a></div></div>
1358
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00413">413</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
1359
+ <div class="fragment"><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; TDJoinPE *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a64d14e7ee334c85b02414d68877faab2">addThreadJoinPE</a>(src, dst, cs, <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; }</div><div class="ttc" id="util_8h_html_a43b6ea6be735bb828bc062c70cadeff8"><div class="ttname"><a href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a></div><div class="ttdeci">VOID_OR_INT exit()</div></div>
1360
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a64d14e7ee334c85b02414d68877faab2"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a64d14e7ee334c85b02414d68877faab2">SVF::SVFIR::addThreadJoinPE</a></div><div class="ttdeci">TDJoinPE * addThreadJoinPE(NodeID src, NodeID dst, const CallICFGNode *cs, const FunExitICFGNode *exit)</div><div class="ttdoc">Add Thread join edge for parameter passing. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00309">SVFIR.cpp:309</a></div></div>
1360
1361
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01617">SVFIRBuilder.cpp:1617</a></div></div>
1361
1362
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
1362
1363
  </div><!-- fragment -->
@@ -1404,8 +1405,8 @@ Private Attributes</h2></td></tr>
1404
1405
 
1405
1406
  <p>Add Unary edge. </p>
1406
1407
 
1407
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00337">337</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
1408
- <div class="fragment"><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; UnaryOPStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a8abc436992aa3b6b636084ff5f9a8ef2">addUnaryOPStmt</a>(src, dst, opcode);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a8abc436992aa3b6b636084ff5f9a8ef2"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a8abc436992aa3b6b636084ff5f9a8ef2">SVF::SVFIR::addUnaryOPStmt</a></div><div class="ttdeci">UnaryOPStmt * addUnaryOPStmt(NodeID src, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Unary edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00170">SVFIR.cpp:170</a></div></div>
1408
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00339">339</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
1409
+ <div class="fragment"><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; UnaryOPStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a8abc436992aa3b6b636084ff5f9a8ef2">addUnaryOPStmt</a>(src, dst, opcode);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a8abc436992aa3b6b636084ff5f9a8ef2"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a8abc436992aa3b6b636084ff5f9a8ef2">SVF::SVFIR::addUnaryOPStmt</a></div><div class="ttdeci">UnaryOPStmt * addUnaryOPStmt(NodeID src, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Unary edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00171">SVFIR.cpp:171</a></div></div>
1409
1410
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01617">SVFIRBuilder.cpp:1617</a></div></div>
1410
1411
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
1411
1412
  </div><!-- fragment -->
@@ -1453,8 +1454,8 @@ Private Attributes</h2></td></tr>
1453
1454
 
1454
1455
  <p>Add Variant(Gep) edge. </p>
1455
1456
 
1456
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00397">397</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
1457
- <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; GepStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a996574dbe5d5d79b1dc24cf5dc4145de">addVariantGepStmt</a>(src, dst, ls);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a996574dbe5d5d79b1dc24cf5dc4145de"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a996574dbe5d5d79b1dc24cf5dc4145de">SVF::SVFIR::addVariantGepStmt</a></div><div class="ttdeci">GepStmt * addVariantGepStmt(NodeID src, NodeID dst, const LocationSet &amp;ls)</div><div class="ttdoc">Add Variant(Gep) edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00368">SVFIR.cpp:368</a></div></div>
1457
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8h_source.html#l00399">399</a> of file <a class="el" href="SVFIRBuilder_8h_source.html">SVFIRBuilder.h</a>.</p>
1458
+ <div class="fragment"><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; GepStmt *edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a996574dbe5d5d79b1dc24cf5dc4145de">addVariantGepStmt</a>(src, dst, ls);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">setCurrentBBAndValueForPAGEdge</a>(edge);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a996574dbe5d5d79b1dc24cf5dc4145de"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a996574dbe5d5d79b1dc24cf5dc4145de">SVF::SVFIR::addVariantGepStmt</a></div><div class="ttdeci">GepStmt * addVariantGepStmt(NodeID src, NodeID dst, const LocationSet &amp;ls)</div><div class="ttdoc">Add Variant(Gep) edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00369">SVFIR.cpp:369</a></div></div>
1458
1459
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01617">SVFIRBuilder.cpp:1617</a></div></div>
1459
1460
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
1460
1461
  </div><!-- fragment -->
@@ -1494,17 +1495,18 @@ Private Attributes</h2></td></tr>
1494
1495
  <p>To be noted, we do not record arguments which are in declared function without body TODO: what about external functions with <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> imported by commandline? </p>
1495
1496
 
1496
1497
  <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00047">47</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
1497
- <div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// We read SVFIR from a user-defined txt instead of parsing SVFIR from LLVM IR</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>())</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="classSVF_1_1PAGBuilderFromFile.html">PAGBuilderFromFile</a> fileBuilder(<a class="code" href="classSVF_1_1SVFModule.html#a54c2bc2cb7cda0d74f4cadc676461b60">SVFModule::pagFileName</a>());</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> fileBuilder.build();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// If the SVFIR has been built before, then we return the unique SVFIR of the program</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a0a18bca50f7cd3a1882754f19303d257">getNodeNumAfterPAGBuild</a>() &gt; 1)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#aa67bbd366b93fb1ec7a540c83566c977">svfMod</a> = svfModule;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#af4b18e8e1fdfb117cb5dd1a81cea4b71">initialiseNodes</a>();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4c6cd51def26ebd8e839df9fdc4b64b8">visitGlobal</a>(svfModule);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVFModule::iterator</a> fit = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), efit = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; fit != efit; ++fit)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp; fun = **fit;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(&amp;fun))</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span>(fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;doesNotReturn() == <span class="keyword">false</span> &amp;&amp; fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;getReturnType()-&gt;isVoidTy() == <span class="keyword">false</span>)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a53774463f34bb8b528b179b72b48fd69">addFunRet</a>(&amp;fun,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a96010999a4e5013beb1c37ef753ff910">getReturnNode</a>(&amp;fun)));</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">for</span> (Function::arg_iterator I = fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;arg_begin(), E = fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;arg_end();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; I != E; ++I) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(&amp;*I,&amp;fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;getEntryBlock());</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> argValNodeId = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(&amp;*I);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// if this is the function does not have caller (e.g. main)</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="comment">// or a dead function, shall we create a black hole address edge for it?</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">// it is (1) too conservative, and (2) make FormalParmVFGNode defined at blackhole address PAGEdge.</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// if(SVFUtil::ArgInNoCallerFunction(&amp;*I)) {</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="comment">// if(I-&gt;getType()-&gt;isPointerTy())</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="comment">// addBlackHoleAddrEdge(argValNodeId);</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">//}</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ac27b9eedd489f13175c010a32203abae">addFunArgs</a>(&amp;fun,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(argValNodeId));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">for</span> (Function::iterator bit = fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;begin(), ebit = fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;end();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; bit != ebit; ++bit)</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; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>&amp; bb = *bit;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">for</span> (BasicBlock::iterator it = bb.begin(), eit = bb.end();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&amp; inst = *it;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(&amp;inst,&amp;bb);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; visit(inst);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a09baa8c7246853c3faaed85b38f0da60">sanityCheck</a>();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af6a2c401d5c7582a4a958b1fe40838e5">initialiseCandidatePointers</a>();</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_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a5fe12445ed0528183775747dec356db0">setNodeNumAfterPAGBuild</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">getTotalNodeNum</a>());</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">// dump SVFIR</span></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_1Options.html#a3a20311c732fb391332ae0ee1cb450a0">Options::PAGDotGraph</a>)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">dump</a>(<span class="stringliteral">&quot;svfir_initial&quot;</span>);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="comment">// print to command line of the SVFIR graph</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a98df022c5da54ea30b3f0ce008d3ca80">Options::PAGPrint</a>)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841">print</a>();</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="comment">// dump ICFG</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#aea29a835c54fab800117e57de00e0b1e">Options::DumpICFG</a>)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a999956500bbd605326531480546db9ba">dump</a>(<span class="stringliteral">&quot;icfg_initial&quot;</span>);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a8c8d16036008f87c7811586047599858"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">SVF::GenericGraph::getTotalNodeNum</a></div><div class="ttdeci">u32_t getTotalNodeNum() const</div><div class="ttdoc">Get total number of node/edge. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00414">GenericGraph.h:414</a></div></div>
1498
+ <div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// We read SVFIR from a user-defined txt instead of parsing SVFIR from LLVM IR</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>())</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="classSVF_1_1PAGBuilderFromFile.html">PAGBuilderFromFile</a> fileBuilder(<a class="code" href="classSVF_1_1SVFModule.html#a54c2bc2cb7cda0d74f4cadc676461b60">SVFModule::pagFileName</a>());</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> fileBuilder.build();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// If the SVFIR has been built before, then we return the unique SVFIR of the program</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a0a18bca50f7cd3a1882754f19303d257">getNodeNumAfterPAGBuild</a>() &gt; 1)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#aa67bbd366b93fb1ec7a540c83566c977">svfMod</a> = svfModule;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#af4b18e8e1fdfb117cb5dd1a81cea4b71">initialiseNodes</a>();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4c6cd51def26ebd8e839df9fdc4b64b8">visitGlobal</a>(svfModule);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVFModule::iterator</a> fit = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), efit = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; fit != efit; ++fit)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp; fun = **fit;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span>(!fun.<a class="code" href="classSVF_1_1SVFFunction.html#ab672f0255ec8e42d5e414bc8c72b7c76">isDeclaration</a>())</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span>(fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;doesNotReturn() == <span class="keyword">false</span> &amp;&amp; fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;getReturnType()-&gt;isVoidTy() == <span class="keyword">false</span>)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a53774463f34bb8b528b179b72b48fd69">addFunRet</a>(&amp;fun,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a96010999a4e5013beb1c37ef753ff910">getReturnNode</a>(&amp;fun)));</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">for</span> (Function::arg_iterator I = fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;arg_begin(), E = fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;arg_end();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; I != E; ++I) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(&amp;*I,&amp;fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;getEntryBlock());</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> argValNodeId = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(&amp;*I);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// if this is the function does not have caller (e.g. main)</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="comment">// or a dead function, shall we create a black hole address edge for it?</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">// it is (1) too conservative, and (2) make FormalParmVFGNode defined at blackhole address PAGEdge.</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// if(SVFUtil::ArgInNoCallerFunction(&amp;*I)) {</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="comment">// if(I-&gt;getType()-&gt;isPointerTy())</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="comment">// addBlackHoleAddrEdge(argValNodeId);</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">//}</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ac27b9eedd489f13175c010a32203abae">addFunArgs</a>(&amp;fun,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(argValNodeId));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">for</span> (Function::iterator bit = fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;begin(), ebit = fun.<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;end();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; bit != ebit; ++bit)</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; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>&amp; bb = *bit;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">for</span> (BasicBlock::iterator it = bb.begin(), eit = bb.end();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&amp; inst = *it;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(&amp;inst,&amp;bb);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; visit(inst);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a09baa8c7246853c3faaed85b38f0da60">sanityCheck</a>();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af6a2c401d5c7582a4a958b1fe40838e5">initialiseCandidatePointers</a>();</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_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a5fe12445ed0528183775747dec356db0">setNodeNumAfterPAGBuild</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">getTotalNodeNum</a>());</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">// dump SVFIR</span></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_1Options.html#a3a20311c732fb391332ae0ee1cb450a0">Options::PAGDotGraph</a>)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">dump</a>(<span class="stringliteral">&quot;svfir_initial&quot;</span>);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="comment">// print to command line of the SVFIR graph</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a98df022c5da54ea30b3f0ce008d3ca80">Options::PAGPrint</a>)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841">print</a>();</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="comment">// dump ICFG</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#aea29a835c54fab800117e57de00e0b1e">Options::DumpICFG</a>)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a999956500bbd605326531480546db9ba">dump</a>(<span class="stringliteral">&quot;icfg_initial&quot;</span>);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a8c8d16036008f87c7811586047599858"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">SVF::GenericGraph::getTotalNodeNum</a></div><div class="ttdeci">u32_t getTotalNodeNum() const</div><div class="ttdoc">Get total number of node/edge. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00414">GenericGraph.h:414</a></div></div>
1498
1499
  <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
1499
1500
  <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#l00018">MTAResultValidator.h:18</a></div></div>
1500
1501
  <div class="ttc" id="classSVF_1_1SVFModule_html_a5486697889c6cca4f9f426650defc255"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">SVF::SVFModule::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00147">SVFModule.h:147</a></div></div>
1501
1502
  <div class="ttc" id="classSVF_1_1IRGraph_html_a1cb32461439c4dc8d044c2bfadb11307"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">SVF::IRGraph::dump</a></div><div class="ttdeci">void dump(std::string name)</div><div class="ttdoc">Dump SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00101">IRGraph.cpp:101</a></div></div>
1503
+ <div class="ttc" id="classSVF_1_1SVFFunction_html_ab672f0255ec8e42d5e414bc8c72b7c76"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ab672f0255ec8e42d5e414bc8c72b7c76">SVF::SVFFunction::isDeclaration</a></div><div class="ttdeci">bool isDeclaration() const</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00255">BasicTypes.h:255</a></div></div>
1502
1504
  <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="BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
1503
1505
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_af4b18e8e1fdfb117cb5dd1a81cea4b71"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#af4b18e8e1fdfb117cb5dd1a81cea4b71">SVF::SVFIRBuilder::initialiseNodes</a></div><div class="ttdeci">void initialiseNodes()</div><div class="ttdoc">Initialize nodes and edges. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00141">SVFIRBuilder.cpp:141</a></div></div>
1504
1506
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a09baa8c7246853c3faaed85b38f0da60"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a09baa8c7246853c3faaed85b38f0da60">SVF::SVFIRBuilder::sanityCheck</a></div><div class="ttdeci">void sanityCheck()</div><div class="ttdoc">Sanity check for SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01544">SVFIRBuilder.cpp:1544</a></div></div>
1505
1507
  <div class="ttc" id="classSVF_1_1Options_html_a3a20311c732fb391332ae0ee1cb450a0"><div class="ttname"><a href="classSVF_1_1Options.html#a3a20311c732fb391332ae0ee1cb450a0">SVF::Options::PAGDotGraph</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PAGDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00133">Options.h:133</a></div></div>
1506
1508
  <div class="ttc" id="classSVF_1_1SVFIR_html_ac27b9eedd489f13175c010a32203abae"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac27b9eedd489f13175c010a32203abae">SVF::SVFIR::addFunArgs</a></div><div class="ttdeci">void addFunArgs(const SVFFunction *fun, const SVFVar *arg)</div><div class="ttdoc">Get/set method for function/callsite arguments and returns. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00494">SVFIR.h:494</a></div></div>
1507
- <div class="ttc" id="classSVF_1_1SVFIR_html_af6a2c401d5c7582a4a958b1fe40838e5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af6a2c401d5c7582a4a958b1fe40838e5">SVF::SVFIR::initialiseCandidatePointers</a></div><div class="ttdeci">void initialiseCandidatePointers()</div><div class="ttdoc">Initialize candidate pointers. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00659">SVFIR.cpp:659</a></div></div>
1509
+ <div class="ttc" id="classSVF_1_1SVFIR_html_af6a2c401d5c7582a4a958b1fe40838e5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af6a2c401d5c7582a4a958b1fe40838e5">SVF::SVFIR::initialiseCandidatePointers</a></div><div class="ttdeci">void initialiseCandidatePointers()</div><div class="ttdoc">Initialize candidate pointers. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00660">SVFIR.cpp:660</a></div></div>
1508
1510
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a15105737c91d01ba9daf2161fad220ef"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">SVF::SVFIRBuilder::setCurrentLocation</a></div><div class="ttdeci">void setCurrentLocation(const Value *val, const BasicBlock *bb)</div><div class="ttdoc">Set current basic block in order to keep track of control flow information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00245">SVFIRBuilder.h:245</a></div></div>
1509
1511
  <div class="ttc" id="classSVF_1_1SVFIR_html_a53774463f34bb8b528b179b72b48fd69"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a53774463f34bb8b528b179b72b48fd69">SVF::SVFIR::addFunRet</a></div><div class="ttdeci">void addFunRet(const SVFFunction *fun, const SVFVar *ret)</div><div class="ttdoc">Add function returns. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00501">SVFIR.h:501</a></div></div>
1510
1512
  <div class="ttc" id="classSVF_1_1IRGraph_html_abffddd41cc308b9b3bd5ad4a7f8f1624"><div class="ttname"><a href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00120">IRGraph.h:120</a></div></div>
@@ -1512,7 +1514,7 @@ Private Attributes</h2></td></tr>
1512
1514
  <div class="ttc" id="classSVF_1_1SVFModule_html_a54c2bc2cb7cda0d74f4cadc676461b60"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a54c2bc2cb7cda0d74f4cadc676461b60">SVF::SVFModule::pagFileName</a></div><div class="ttdeci">static std::string pagFileName()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00088">SVFModule.h:88</a></div></div>
1513
1515
  <div class="ttc" id="classSVF_1_1PAGBuilderFromFile_html"><div class="ttname"><a href="classSVF_1_1PAGBuilderFromFile.html">SVF::PAGBuilderFromFile</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGBuilderFromFile_8h_source.html#l00041">PAGBuilderFromFile.h:41</a></div></div>
1514
1516
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
1515
- <div class="ttc" id="classSVF_1_1SVFIR_html_a236b4fefd16e9c793c5bd6d576290841"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841">SVF::SVFIR::print</a></div><div class="ttdeci">void print()</div><div class="ttdoc">Print SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00574">SVFIR.cpp:574</a></div></div>
1517
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a236b4fefd16e9c793c5bd6d576290841"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841">SVF::SVFIR::print</a></div><div class="ttdeci">void print()</div><div class="ttdoc">Print SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00575">SVFIR.cpp:575</a></div></div>
1516
1518
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aa67bbd366b93fb1ec7a540c83566c977"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aa67bbd366b93fb1ec7a540c83566c977">SVF::SVFIRBuilder::svfMod</a></div><div class="ttdeci">SVFModule * svfMod</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00049">SVFIRBuilder.h:49</a></div></div>
1517
1519
  <div class="ttc" id="classSVF_1_1ICFG_html_a999956500bbd605326531480546db9ba"><div class="ttname"><a href="classSVF_1_1ICFG.html#a999956500bbd605326531480546db9ba">SVF::ICFG::dump</a></div><div class="ttdeci">void dump(const std::string &amp;file, bool simple=false)</div><div class="ttdoc">Dump graph into dot file. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00410">ICFG.cpp:410</a></div></div>
1518
1520
  <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="BasicTypes_8h_source.html#l00249">BasicTypes.h:249</a></div></div>
@@ -1527,7 +1529,6 @@ Private Attributes</h2></td></tr>
1527
1529
  <div class="ttc" id="classSVF_1_1IRGraph_html_a96010999a4e5013beb1c37ef753ff910"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a96010999a4e5013beb1c37ef753ff910">SVF::IRGraph::getReturnNode</a></div><div class="ttdeci">NodeID getReturnNode(const SVFFunction *func) const</div><div class="ttdoc">GetReturnNode - Return the unique node representing the return value of a function. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00135">IRGraph.h:135</a></div></div>
1528
1530
  <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#l00387">GenericGraph.h:387</a></div></div>
1529
1531
  <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>
1530
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00063">LLVMUtil.h:63</a></div></div>
1531
1532
  </div><!-- fragment -->
1532
1533
  </div>
1533
1534
  </div>
@@ -1617,7 +1618,7 @@ Private Attributes</h2></td></tr>
1617
1618
  <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>
1618
1619
  <div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00108">BasicTypes.h:108</a></div></div>
1619
1620
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
1620
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a5c7cc40f0a9c89a8b9c21c65215dda29"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5c7cc40f0a9c89a8b9c21c65215dda29">SVF::SVFIRBuilder::getFields</a></div><div class="ttdeci">u32_t getFields(std::vector&lt; LocationSet &gt; &amp;fields, const Type *T, u32_t msz)</div><div class="ttdoc">Replace fields with flatten fields of T if the number of its fields is larger than msz...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01696">SVFIRBuilder.cpp:1696</a></div></div>
1621
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a5c7cc40f0a9c89a8b9c21c65215dda29"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5c7cc40f0a9c89a8b9c21c65215dda29">SVF::SVFIRBuilder::getFields</a></div><div class="ttdeci">u32_t getFields(std::vector&lt; LocationSet &gt; &amp;fields, const Type *T, u32_t msz)</div><div class="ttdoc">Replace fields with flatten fields of T if the number of its fields is larger than msz...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01708">SVFIRBuilder.cpp:1708</a></div></div>
1621
1622
  <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00072">LocationSet.h:72</a></div></div>
1622
1623
  <div class="ttc" id="namespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00131">BasicTypes.h:131</a></div></div>
1623
1624
  <div class="ttc" id="namespaceSVF_html_afc1b50355821e7299df03b026e36f1df"><div class="ttname"><a href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">SVF::User</a></div><div class="ttdeci">llvm::User User</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00086">BasicTypes.h:86</a></div></div>
@@ -1716,8 +1717,8 @@ Private Attributes</h2></td></tr>
1716
1717
  <p>Replace fields with flatten fields of T if the number of its fields is larger than msz. </p>
1717
1718
  <p>Replace fields with T's flatten fields. </p>
1718
1719
 
1719
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01696">1696</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
1720
- <div class="fragment"><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160;{</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;PointerType&gt;(T))</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; T = T-&gt;getContainedType(0);</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; <span class="keyword">const</span> std::vector&lt;FlattenedFieldInfo&gt;&amp; stVec = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a9ca564bdc1f40a2ccd30d98e0e4075b0">getFlattenedFieldInfoVec</a>(T);</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> sz = stVec.size();</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; <span class="keywordflow">if</span> (msz &lt; sz)</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; {</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; fields.clear();</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; <span class="keywordflow">for</span>(std::vector&lt;FlattenedFieldInfo&gt;::const_iterator it = stVec.begin(), eit = stVec.end(); it!=eit; ++it)</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; fields.push_back(<a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(*it));</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; }</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; <span class="keywordflow">return</span> sz;</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
1720
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01708">1708</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
1721
+ <div class="fragment"><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;{</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;PointerType&gt;(T))</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160;</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; T = T-&gt;getContainedType(0);</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; <span class="keyword">const</span> std::vector&lt;FlattenedFieldInfo&gt;&amp; stVec = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a9ca564bdc1f40a2ccd30d98e0e4075b0">getFlattenedFieldInfoVec</a>(T);</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> sz = stVec.size();</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; <span class="keywordflow">if</span> (msz &lt; sz)</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; {</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; fields.clear();</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; <span class="keywordflow">for</span>(std::vector&lt;FlattenedFieldInfo&gt;::const_iterator it = stVec.begin(), eit = stVec.end(); it!=eit; ++it)</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; fields.push_back(<a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(*it));</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; }</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; <span class="keywordflow">return</span> sz;</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
1721
1722
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00101">SymbolTableInfo.cpp:101</a></div></div>
1722
1723
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a9ca564bdc1f40a2ccd30d98e0e4075b0"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a9ca564bdc1f40a2ccd30d98e0e4075b0">SVF::SymbolTableInfo::getFlattenedFieldInfoVec</a></div><div class="ttdeci">const std::vector&lt; FlattenedFieldInfo &gt; &amp; getFlattenedFieldInfoVec(const Type *T)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00400">SymbolTableInfo.cpp:400</a></div></div>
1723
1724
  <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00072">LocationSet.h:72</a></div></div>
@@ -1770,14 +1771,14 @@ Private Attributes</h2></td></tr>
1770
1771
  <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#l00018">MTAResultValidator.h:18</a></div></div>
1771
1772
  <div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
1772
1773
  <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>
1773
- <div class="ttc" id="classSVF_1_1SVFIR_html_a5298f34143ec3a2e6bb74ebad668cbbc"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">SVF::SVFIR::getBaseValVar</a></div><div class="ttdeci">NodeID getBaseValVar(NodeID nodeId)</div><div class="ttdoc">Base and Offset methods for Value and Object node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00521">SVFIR.cpp:521</a></div></div>
1774
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a5298f34143ec3a2e6bb74ebad668cbbc"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">SVF::SVFIR::getBaseValVar</a></div><div class="ttdeci">NodeID getBaseValVar(NodeID nodeId)</div><div class="ttdoc">Base and Offset methods for Value and Object node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00522">SVFIR.cpp:522</a></div></div>
1774
1775
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a15105737c91d01ba9daf2161fad220ef"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">SVF::SVFIRBuilder::setCurrentLocation</a></div><div class="ttdeci">void setCurrentLocation(const Value *val, const BasicBlock *bb)</div><div class="ttdoc">Set current basic block in order to keep track of control flow information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00245">SVFIRBuilder.h:245</a></div></div>
1775
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a45ab73a812809b3c725daf11b5da6141"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a45ab73a812809b3c725daf11b5da6141">SVF::SVFIRBuilder::addGepEdge</a></div><div class="ttdeci">GepStmt * addGepEdge(NodeID src, NodeID dst, const LocationSet &amp;ls, bool constGep)</div><div class="ttdoc">Add Gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00383">SVFIRBuilder.h:383</a></div></div>
1776
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a45ab73a812809b3c725daf11b5da6141"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a45ab73a812809b3c725daf11b5da6141">SVF::SVFIRBuilder::addGepEdge</a></div><div class="ttdeci">GepStmt * addGepEdge(NodeID src, NodeID dst, const LocationSet &amp;ls, bool constGep)</div><div class="ttdoc">Add Gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00385">SVFIRBuilder.h:385</a></div></div>
1776
1777
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00101">SymbolTableInfo.cpp:101</a></div></div>
1777
1778
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a9ca564bdc1f40a2ccd30d98e0e4075b0"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a9ca564bdc1f40a2ccd30d98e0e4075b0">SVF::SymbolTableInfo::getFlattenedFieldInfoVec</a></div><div class="ttdeci">const std::vector&lt; FlattenedFieldInfo &gt; &amp; getFlattenedFieldInfoVec(const Type *T)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00400">SymbolTableInfo.cpp:400</a></div></div>
1778
1779
  <div class="ttc" id="classSVF_1_1SVFIR_html_a811c5eaeef1e52cc2d6f56ec5a76bb02"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a811c5eaeef1e52cc2d6f56ec5a76bb02">SVF::SVFIR::getGepValVar</a></div><div class="ttdeci">NodeID getGepValVar(const Value *curInst, NodeID base, const LocationSet &amp;ls) const</div><div class="ttdoc">Due to constaint expression, curInst is used to distinguish different instructions (e...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00295">SVFIR.h:295</a></div></div>
1779
1780
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a5afb07f2cf8d76f8db334250e0c96cc0"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">SVF::SVFIRBuilder::curVal</a></div><div class="ttdeci">const Value * curVal</div><div class="ttdoc">Current Value during SVFIR construction when visiting the module. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00051">SVFIRBuilder.h:51</a></div></div>
1780
- <div class="ttc" id="classSVF_1_1SVFIR_html_a9a702ceb8ba3851daef444f1ece3a2f8"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a9a702ceb8ba3851daef444f1ece3a2f8">SVF::SVFIR::addGepValNode</a></div><div class="ttdeci">NodeID addGepValNode(const Value *curInst, const Value *val, const LocationSet &amp;ls, NodeID i, const Type *type, u32_t fieldidx)</div><div class="ttdoc">Add a temp field value node, this method can only invoked by getGepValVar. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00390">SVFIR.cpp:390</a></div></div>
1781
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a9a702ceb8ba3851daef444f1ece3a2f8"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a9a702ceb8ba3851daef444f1ece3a2f8">SVF::SVFIR::addGepValNode</a></div><div class="ttdeci">NodeID addGepValNode(const Value *curInst, const Value *val, const LocationSet &amp;ls, NodeID i, const Type *type, u32_t fieldidx)</div><div class="ttdoc">Add a temp field value node, this method can only invoked by getGepValVar. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00391">SVFIR.cpp:391</a></div></div>
1781
1782
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a2bd3ca30fc9669d9a0327544bdb4557b"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">SVF::NodeIDAllocator::get</a></div><div class="ttdeci">static NodeIDAllocator * get(void)</div><div class="ttdoc">Return (singleton) allocator. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00025">NodeIDAllocator.cpp:25</a></div></div>
1782
1783
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
1783
1784
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
@@ -2012,7 +2013,7 @@ Private Attributes</h2></td></tr>
2012
2013
  <p>FIXME: this assertion should be placed for correct checking except bug program like 188.ammp, 300.twolf </p>
2013
2014
 
2014
2015
  <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00950">950</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
2015
- <div class="fragment"><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160;{</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(F);</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>,</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle direct call &quot;</span> &lt;&lt; *cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>() &lt;&lt; <span class="stringliteral">&quot; callee &quot;</span> &lt;&lt; *F &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="comment">//Only handle the ret.val. if it&#39;s used as a ptr.</span></div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstrec = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="comment">//Does it actually return a ptr?</span></div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="keywordflow">if</span> (!cs.<a class="code" href="classSVF_1_1CallSite.html#a9b7d53a345875e4e6c72eb23ac6475de">getType</a>()-&gt;isVoidTy())</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; {</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcret = <a class="code" href="classSVF_1_1SVFIRBuilder.html#aff99c8de4acf4eeaf01803dadf459b92">getReturnNode</a>(F);</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callICFGNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* exitICFGNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(F);</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#aff15a202dfa9419cec787d9acf6c35c2">addRetEdge</a>(srcret, dstrec,callICFGNode, exitICFGNode);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; }</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="comment">//Iterators for the actual and formal parameters</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <a class="code" href="classSVF_1_1CallSite.html#ac1cdfe5e54026960a23142e26b3150ff">CallSite::arg_iterator</a> itA = cs.<a class="code" href="classSVF_1_1CallSite.html#aabc0054b7f4e06b7ca0b6072746984e6">arg_begin</a>(), ieA = cs.<a class="code" href="classSVF_1_1CallSite.html#a46e8ffe430bb2711abaafc9d7864909e">arg_end</a>();</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; Function::const_arg_iterator itF = F-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;arg_begin(), ieF = F-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;arg_end();</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="comment">//Go through the fixed parameters.</span></div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot; args:&quot;</span>);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="keywordflow">for</span> (; itF != ieF; ++itA, ++itF)</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; {</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="comment">//Some programs (e.g. Linux kernel) leave unneeded parameters empty.</span></div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <span class="keywordflow">if</span> (itA == ieA)</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; {</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot; !! not enough args\n&quot;</span>);</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; }</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *AA = *itA, *FA = &amp;*itF; <span class="comment">//current actual/formal arg</span></div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process actual parm &quot;</span> &lt;&lt; *AA &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstFA = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(FA);</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcAA = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(AA);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a> = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(F);</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#aec94aaebd392aa4facdbdc6bfef74bde">addCallEdge</a>(srcAA, dstFA, icfgNode, entry);</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; }</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <span class="comment">//Any remaining actual args must be varargs.</span></div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="keywordflow">if</span> (F-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;isVarArg())</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; {</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vaF = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a3fe99644b2bf5f0f9b2b21a56a400ad4">getVarargNode</a>(F);</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n varargs:&quot;</span>);</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <span class="keywordflow">for</span> (; itA != ieA; ++itA)</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; {</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *AA = *itA;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnAA = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(AA);</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entry = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(F);</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#aec94aaebd392aa4facdbdc6bfef74bde">addCallEdge</a>(vnAA,vaF, icfgNode,entry);</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; }</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; }</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keywordflow">if</span>(itA != ieA)</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; {</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;too many args to non-vararg func.&quot;</span>);</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;(&quot;</span> + <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>()) + <span class="stringliteral">&quot;)&quot;</span>);</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; }</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aec94aaebd392aa4facdbdc6bfef74bde"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aec94aaebd392aa4facdbdc6bfef74bde">SVF::SVFIRBuilder::addCallEdge</a></div><div class="ttdeci">CallPE * addCallEdge(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Call edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00369">SVFIRBuilder.h:369</a></div></div>
2016
+ <div class="fragment"><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160;{</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(F);</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>,</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle direct call &quot;</span> &lt;&lt; *cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>() &lt;&lt; <span class="stringliteral">&quot; callee &quot;</span> &lt;&lt; *F &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="comment">//Only handle the ret.val. if it&#39;s used as a ptr.</span></div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstrec = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="comment">//Does it actually return a ptr?</span></div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="keywordflow">if</span> (!cs.<a class="code" href="classSVF_1_1CallSite.html#a9b7d53a345875e4e6c72eb23ac6475de">getType</a>()-&gt;isVoidTy())</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; {</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcret = <a class="code" href="classSVF_1_1SVFIRBuilder.html#aff99c8de4acf4eeaf01803dadf459b92">getReturnNode</a>(F);</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callICFGNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* exitICFGNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(F);</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#aff15a202dfa9419cec787d9acf6c35c2">addRetEdge</a>(srcret, dstrec,callICFGNode, exitICFGNode);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; }</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="comment">//Iterators for the actual and formal parameters</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <a class="code" href="classSVF_1_1CallSite.html#ac1cdfe5e54026960a23142e26b3150ff">CallSite::arg_iterator</a> itA = cs.<a class="code" href="classSVF_1_1CallSite.html#aabc0054b7f4e06b7ca0b6072746984e6">arg_begin</a>(), ieA = cs.<a class="code" href="classSVF_1_1CallSite.html#a46e8ffe430bb2711abaafc9d7864909e">arg_end</a>();</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; Function::const_arg_iterator itF = F-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;arg_begin(), ieF = F-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;arg_end();</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="comment">//Go through the fixed parameters.</span></div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot; args:&quot;</span>);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="keywordflow">for</span> (; itF != ieF; ++itA, ++itF)</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; {</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="comment">//Some programs (e.g. Linux kernel) leave unneeded parameters empty.</span></div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <span class="keywordflow">if</span> (itA == ieA)</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; {</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot; !! not enough args\n&quot;</span>);</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; }</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *AA = *itA, *FA = &amp;*itF; <span class="comment">//current actual/formal arg</span></div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process actual parm &quot;</span> &lt;&lt; *AA &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstFA = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(FA);</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcAA = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(AA);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a> = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(F);</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#aec94aaebd392aa4facdbdc6bfef74bde">addCallEdge</a>(srcAA, dstFA, icfgNode, entry);</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; }</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <span class="comment">//Any remaining actual args must be varargs.</span></div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="keywordflow">if</span> (F-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;isVarArg())</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; {</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vaF = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a3fe99644b2bf5f0f9b2b21a56a400ad4">getVarargNode</a>(F);</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n varargs:&quot;</span>);</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <span class="keywordflow">for</span> (; itA != ieA; ++itA)</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; {</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *AA = *itA;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnAA = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(AA);</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entry = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(F);</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#aec94aaebd392aa4facdbdc6bfef74bde">addCallEdge</a>(vnAA,vaF, icfgNode,entry);</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; }</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; }</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keywordflow">if</span>(itA != ieA)</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; {</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;too many args to non-vararg func.&quot;</span>);</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;(&quot;</span> + <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>()) + <span class="stringliteral">&quot;)&quot;</span>);</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; }</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aec94aaebd392aa4facdbdc6bfef74bde"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aec94aaebd392aa4facdbdc6bfef74bde">SVF::SVFIRBuilder::addCallEdge</a></div><div class="ttdeci">CallPE * addCallEdge(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Call edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00371">SVFIRBuilder.h:371</a></div></div>
2016
2017
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00085">SVFIRBuilder.h:85</a></div></div>
2017
2018
  <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#l00018">MTAResultValidator.h:18</a></div></div>
2018
2019
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aff99c8de4acf4eeaf01803dadf459b92"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aff99c8de4acf4eeaf01803dadf459b92">SVF::SVFIRBuilder::getReturnNode</a></div><div class="ttdeci">NodeID getReturnNode(const SVFFunction *func)</div><div class="ttdoc">getReturnNode - Return the node representing the unique return value of a function. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00101">SVFIRBuilder.h:101</a></div></div>
@@ -2026,7 +2027,7 @@ Private Attributes</h2></td></tr>
2026
2027
  <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#l00209">ICFG.cpp:209</a></div></div>
2027
2028
  <div class="ttc" id="classSVF_1_1FunEntryICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunEntryICFGNode.html">SVF::FunEntryICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00251">ICFGNode.h:251</a></div></div>
2028
2029
  <div class="ttc" id="classSVF_1_1CallSite_html_aabc0054b7f4e06b7ca0b6072746984e6"><div class="ttname"><a href="classSVF_1_1CallSite.html#aabc0054b7f4e06b7ca0b6072746984e6">SVF::CallSite::arg_begin</a></div><div class="ttdeci">User::const_op_iterator arg_begin() const</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00314">BasicTypes.h:314</a></div></div>
2029
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aff15a202dfa9419cec787d9acf6c35c2"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aff15a202dfa9419cec787d9acf6c35c2">SVF::SVFIRBuilder::addRetEdge</a></div><div class="ttdeci">RetPE * addRetEdge(NodeID src, NodeID dst, const CallICFGNode *cs, const FunExitICFGNode *exit)</div><div class="ttdoc">Add Return edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00376">SVFIRBuilder.h:376</a></div></div>
2030
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aff15a202dfa9419cec787d9acf6c35c2"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aff15a202dfa9419cec787d9acf6c35c2">SVF::SVFIRBuilder::addRetEdge</a></div><div class="ttdeci">RetPE * addRetEdge(NodeID src, NodeID dst, const CallICFGNode *cs, const FunExitICFGNode *exit)</div><div class="ttdoc">Add Return edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00378">SVFIRBuilder.h:378</a></div></div>
2030
2031
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_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>
2031
2032
  <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#l00364">ICFGNode.h:364</a></div></div>
2032
2033
  <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="BasicTypes_8h_source.html#l00249">BasicTypes.h:249</a></div></div>
@@ -2108,9 +2109,9 @@ Private Attributes</h2></td></tr>
2108
2109
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a142e650415cb81011eb59dadd3cb0637"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">SVF::SVFUtil::getDefFunForMultipleModule</a></div><div class="ttdeci">const SVFFunction * getDefFunForMultipleModule(const Function *fun)</div><div class="ttdoc">Get the definition of a function across multiple modules. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00256">SVFUtil.h:256</a></div></div>
2109
2110
  <div class="ttc" id="namespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
2110
2111
  <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>
2111
- <div class="ttc" id="classSVF_1_1SVFIR_html_a8b36d077c30fb2830a253ded82413c2d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a8b36d077c30fb2830a253ded82413c2d">SVF::SVFIR::getLocationSetFromBaseNode</a></div><div class="ttdeci">LocationSet getLocationSetFromBaseNode(NodeID nodeId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00545">SVFIR.cpp:545</a></div></div>
2112
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a8b36d077c30fb2830a253ded82413c2d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a8b36d077c30fb2830a253ded82413c2d">SVF::SVFIR::getLocationSetFromBaseNode</a></div><div class="ttdeci">LocationSet getLocationSetFromBaseNode(NodeID nodeId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00546">SVFIR.cpp:546</a></div></div>
2112
2113
  <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="BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
2113
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a013560b7d7d173e1558ae6dd404d1bba"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a013560b7d7d173e1558ae6dd404d1bba">SVF::SVFIRBuilder::addThreadForkEdge</a></div><div class="ttdeci">TDForkPE * addThreadForkEdge(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Thread fork edge for parameter passing. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00404">SVFIRBuilder.h:404</a></div></div>
2114
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a013560b7d7d173e1558ae6dd404d1bba"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a013560b7d7d173e1558ae6dd404d1bba">SVF::SVFIRBuilder::addThreadForkEdge</a></div><div class="ttdeci">TDForkPE * addThreadForkEdge(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Thread fork edge for parameter passing. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00406">SVFIRBuilder.h:406</a></div></div>
2114
2115
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_ad0b30ca8fc2939bb7360a3ff08727d58"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ad0b30ca8fc2939bb7360a3ff08727d58">SVF::SVFIRBuilder::getGepValVar</a></div><div class="ttdeci">NodeID getGepValVar(const Value *val, const LocationSet &amp;ls, const Type *baseType, u32_t fieldidx)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01570">SVFIRBuilder.cpp:1570</a></div></div>
2115
2116
  <div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00310">BasicTypes.h:310</a></div></div>
2116
2117
  <div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094aed5f4c75cc5016c61f441abf06a2bf21"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094aed5f4c75cc5016c61f441abf06a2bf21">SVF::ExtAPI::EFT_STD_LIST_HOOK</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00083">ExtAPI.h:83</a></div></div>
@@ -2125,7 +2126,7 @@ Private Attributes</h2></td></tr>
2125
2126
  <div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a94f514e925fdb422632840ca44343af0"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a94f514e925fdb422632840ca44343af0">SVF::ExtAPI::EFT_STAT</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00057">ExtAPI.h:57</a></div></div>
2126
2127
  <div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a8782293305260b1500a09b473439d3b0"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a8782293305260b1500a09b473439d3b0">SVF::ExtAPI::EFT_NOSTRUCT_ALLOC</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00056">ExtAPI.h:56</a></div></div>
2127
2128
  <div class="ttc" id="classSVF_1_1IRGraph_html_abffddd41cc308b9b3bd5ad4a7f8f1624"><div class="ttname"><a href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00120">IRGraph.h:120</a></div></div>
2128
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a9fdcddcdcf14a90cc80d42de0d5ad189"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a9fdcddcdcf14a90cc80d42de0d5ad189">SVF::SVFIRBuilder::addLoadEdge</a></div><div class="ttdeci">LoadStmt * addLoadEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00350">SVFIRBuilder.h:350</a></div></div>
2129
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a9fdcddcdcf14a90cc80d42de0d5ad189"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a9fdcddcdcf14a90cc80d42de0d5ad189">SVF::SVFIRBuilder::addLoadEdge</a></div><div class="ttdeci">LoadStmt * addLoadEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00352">SVFIRBuilder.h:352</a></div></div>
2129
2130
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a61ed4bb80d88b0f8dbc02535c224fdfb"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a61ed4bb80d88b0f8dbc02535c224fdfb">SVF::SVFUtil::isHeapAllocOrStaticExtCall</a></div><div class="ttdeci">bool isHeapAllocOrStaticExtCall(const CallSite cs)</div><div class="ttdoc">Return true if the call is a static global call. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00208">LLVMUtil.h:208</a></div></div>
2130
2131
  <div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a87c4ba17ac3567a0673d6516995e06ef"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a87c4ba17ac3567a0673d6516995e06ef">SVF::ExtAPI::EFT_NOOP</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00052">ExtAPI.h:52</a></div></div>
2131
2132
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28fbb7cc51eb7e25d88f43e3eb1f30fb"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28fbb7cc51eb7e25d88f43e3eb1f30fb">SVF::SVFUtil::isHareParForCall</a></div><div class="ttdeci">bool isHareParForCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00270">LLVMUtil.h:270</a></div></div>
@@ -2155,7 +2156,7 @@ Private Attributes</h2></td></tr>
2155
2156
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00101">SymbolTableInfo.cpp:101</a></div></div>
2156
2157
  <div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a9b98279d1926e4ebfb237a43536c7b73"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a9b98279d1926e4ebfb237a43536c7b73">SVF::ExtAPI::EFT_FREE</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00055">ExtAPI.h:55</a></div></div>
2157
2158
  <div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094ae8423cc29f4de0225e30de6982e6a3a4"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094ae8423cc29f4de0225e30de6982e6a3a4">SVF::ExtAPI::EFT_L_A0__A2R_A0</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00074">ExtAPI.h:74</a></div></div>
2158
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_ac5795471aff6ccb07a84ffe1277ff2d4"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ac5795471aff6ccb07a84ffe1277ff2d4">SVF::SVFIRBuilder::addStoreEdge</a></div><div class="ttdeci">StoreStmt * addStoreEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00357">SVFIRBuilder.h:357</a></div></div>
2159
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_ac5795471aff6ccb07a84ffe1277ff2d4"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ac5795471aff6ccb07a84ffe1277ff2d4">SVF::SVFIRBuilder::addStoreEdge</a></div><div class="ttdeci">StoreStmt * addStoreEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00359">SVFIRBuilder.h:359</a></div></div>
2159
2160
  <div class="ttc" id="namespaceSVF_html_ac4e93e1fec646ff222940a663843921b"><div class="ttname"><a href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">SVF::GetElementPtrInst</a></div><div class="ttdeci">llvm::GetElementPtrInst GetElementPtrInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00154">BasicTypes.h:154</a></div></div>
2160
2161
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a5c2abeb363081381c3dc939ab511e3f0"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a5c2abeb363081381c3dc939ab511e3f0">SVF::SVFUtil::isThreadForkCall</a></div><div class="ttdeci">bool isThreadForkCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00258">LLVMUtil.h:258</a></div></div>
2161
2162
  <div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a4353ad2b443e7f7ce2151869eed9c097"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a4353ad2b443e7f7ce2151869eed9c097">SVF::ExtAPI::EFT_A1R_NEW</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00077">ExtAPI.h:77</a></div></div>
@@ -2321,7 +2322,7 @@ Private Attributes</h2></td></tr>
2321
2322
  <div class="ttc" id="namespaceSVF_html_a2bf58575ac7d068e0f1a4cf953b9e6cb"><div class="ttname"><a href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">SVF::StructType</a></div><div class="ttdeci">llvm::StructType StructType</div><div class="ttdoc">LLVM types. </div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00106">BasicTypes.h:106</a></div></div>
2322
2323
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_aeef0f5c6486379043a7d47b0635f2667"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">SVF::cppUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00123">CPPUtil.cpp:123</a></div></div>
2323
2324
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00101">SymbolTableInfo.cpp:101</a></div></div>
2324
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_ac5795471aff6ccb07a84ffe1277ff2d4"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ac5795471aff6ccb07a84ffe1277ff2d4">SVF::SVFIRBuilder::addStoreEdge</a></div><div class="ttdeci">StoreStmt * addStoreEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00357">SVFIRBuilder.h:357</a></div></div>
2325
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_ac5795471aff6ccb07a84ffe1277ff2d4"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ac5795471aff6ccb07a84ffe1277ff2d4">SVF::SVFIRBuilder::addStoreEdge</a></div><div class="ttdeci">StoreStmt * addStoreEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00359">SVFIRBuilder.h:359</a></div></div>
2325
2326
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_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>
2326
2327
  <div class="ttc" id="classSVF_1_1IRGraph_html_ac5da3a0cbe040a45d719b6f6a23aed91"><div class="ttname"><a href="classSVF_1_1IRGraph.html#ac5da3a0cbe040a45d719b6f6a23aed91">SVF::IRGraph::getConstantNode</a></div><div class="ttdeci">NodeID getConstantNode() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00148">IRGraph.h:148</a></div></div>
2327
2328
  <div class="ttc" id="SVFBasicTypes_8h_html_a7a295e02c56a93cf9206dd9d3b18dd17"><div class="ttname"><a href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a></div><div class="ttdeci">#define DPAGBuild</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00156">SVFBasicTypes.h:156</a></div></div>
@@ -2423,9 +2424,9 @@ Private Attributes</h2></td></tr>
2423
2424
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a15105737c91d01ba9daf2161fad220ef"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">SVF::SVFIRBuilder::setCurrentLocation</a></div><div class="ttdeci">void setCurrentLocation(const Value *val, const BasicBlock *bb)</div><div class="ttdoc">Set current basic block in order to keep track of control flow information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00245">SVFIRBuilder.h:245</a></div></div>
2424
2425
  <div class="ttc" id="classSVF_1_1IRGraph_html_abffddd41cc308b9b3bd5ad4a7f8f1624"><div class="ttname"><a href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00120">IRGraph.h:120</a></div></div>
2425
2426
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4adb63c87a9489ab905d42230ac66299"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4adb63c87a9489ab905d42230ac66299">SVF::SVFUtil::isCmpConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCmpConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00584">LLVMUtil.h:584</a></div></div>
2426
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a45ab73a812809b3c725daf11b5da6141"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a45ab73a812809b3c725daf11b5da6141">SVF::SVFIRBuilder::addGepEdge</a></div><div class="ttdeci">GepStmt * addGepEdge(NodeID src, NodeID dst, const LocationSet &amp;ls, bool constGep)</div><div class="ttdoc">Add Gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00383">SVFIRBuilder.h:383</a></div></div>
2427
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a45ab73a812809b3c725daf11b5da6141"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a45ab73a812809b3c725daf11b5da6141">SVF::SVFIRBuilder::addGepEdge</a></div><div class="ttdeci">GepStmt * addGepEdge(NodeID src, NodeID dst, const LocationSet &amp;ls, bool constGep)</div><div class="ttdoc">Add Gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00385">SVFIRBuilder.h:385</a></div></div>
2427
2428
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a384b0986a6c4e99dfc4e1629b3598c3c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a384b0986a6c4e99dfc4e1629b3598c3c">SVF::SVFUtil::isGepConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isGepConstantExpr(const Value *val)</div><div class="ttdoc">Return corresponding constant expression, otherwise return nullptr. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00520">LLVMUtil.h:520</a></div></div>
2428
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a96d0878e2eaa0104a1b07fceb2b33c45"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a96d0878e2eaa0104a1b07fceb2b33c45">SVF::SVFIRBuilder::addSelectStmt</a></div><div class="ttdeci">SelectStmt * addSelectStmt(NodeID res, NodeID op1, NodeID op2, NodeID cond)</div><div class="ttdoc">Add SelectStmt. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00316">SVFIRBuilder.h:316</a></div></div>
2429
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a96d0878e2eaa0104a1b07fceb2b33c45"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a96d0878e2eaa0104a1b07fceb2b33c45">SVF::SVFIRBuilder::addSelectStmt</a></div><div class="ttdeci">SelectStmt * addSelectStmt(NodeID res, NodeID op1, NodeID op2, NodeID cond)</div><div class="ttdoc">Add SelectStmt. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00318">SVFIRBuilder.h:318</a></div></div>
2429
2430
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a87b75f04942124711d5ea1366e866890"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a87b75f04942124711d5ea1366e866890">SVF::SVFIRBuilder::computeGepOffset</a></div><div class="ttdeci">bool computeGepOffset(const User *V, LocationSet &amp;ls)</div><div class="ttdoc">Compute offset of a gep instruction or gep constant expression. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00257">SVFIRBuilder.cpp:257</a></div></div>
2430
2431
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a093b7ae4ad144fb5d028366b1814861a"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a093b7ae4ad144fb5d028366b1814861a">SVF::SVFUtil::isPtr2IntConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isPtr2IntConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00540">LLVMUtil.h:540</a></div></div>
2431
2432
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_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>
@@ -2492,7 +2493,10 @@ Private Attributes</h2></td></tr>
2492
2493
  <p>all external function connected to a indirect call, we will put SVFStmts in the FunctionEntryICFGNode </p>
2493
2494
 
2494
2495
  <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01617">1617</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
2495
- <div class="fragment"><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;{</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>())</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a> &amp;&amp; <span class="stringliteral">&quot;current Val is nullptr?&quot;</span>);</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#a852730edf374d18a3fb3985211ed7623">setBB</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aac1cbf0cb2b402b5fd0e2324c89c31b0">curBB</a>);</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#a24dddb4e346a6e569908e3efe8a6ecc0">setValue</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>);</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; <span class="comment">// backmap in valuToEdgeMap</span></div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#aefe3143b33cee00c3c2611fea577c1ac">mapValueToEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>, edge);</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#ae0b05ce161d62362642803158228e5d0">getGlobalICFGNode</a>();</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *curInst = SVFUtil::dyn_cast&lt;Instruction&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>))</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; {</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* srcFun = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getFunction();</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* dstFun = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getFunction();</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; <span class="keywordflow">if</span>(srcFun!=<span class="keyword">nullptr</span> &amp;&amp; !SVFUtil::isa&lt;RetPE&gt;(edge) &amp;&amp; !SVFUtil::isa&lt;Function&gt;(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getValue())) {</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(srcFun==curInst-&gt;getFunction() &amp;&amp; <span class="stringliteral">&quot;SrcNode of the PAGEdge not in the same function?&quot;</span>);</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; }</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; <span class="keywordflow">if</span>(dstFun!=<span class="keyword">nullptr</span> &amp;&amp; !SVFUtil::isa&lt;CallPE&gt;(edge) &amp;&amp; !SVFUtil::isa&lt;Function&gt;(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getValue())) {</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(dstFun==curInst-&gt;getFunction() &amp;&amp; <span class="stringliteral">&quot;DstNode of the PAGEdge not in the same function?&quot;</span>);</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; }</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; <span class="keywordflow">if</span> (!(SVFUtil::isa&lt;GepStmt&gt;(edge) &amp;&amp; SVFUtil::isa&lt;GepValVar&gt;(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>())))</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aac1cbf0cb2b402b5fd0e2324c89c31b0">curBB</a> &amp;&amp; <span class="stringliteral">&quot;instruction does not have a basic block??&quot;</span>);</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac7dcc6103dee3a0bbc2fd2e02716a154">ReturnInst</a>* retInst = SVFUtil::dyn_cast&lt;ReturnInst&gt;(curInst)){</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(retInst-&gt;getParent()-&gt;getParent());</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(fun);</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; }</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;RetPE&gt;(edge))</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(curInst);</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(curInst);</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; }</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; }</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* arg = SVFUtil::dyn_cast&lt;Argument&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>))</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; {</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aac1cbf0cb2b402b5fd0e2324c89c31b0">curBB</a> &amp;&amp; (&amp;<a class="code" href="classSVF_1_1SVFIRBuilder.html#aac1cbf0cb2b402b5fd0e2324c89c31b0">curBB</a>-&gt;getParent()-&gt;getEntryBlock() == <a class="code" href="classSVF_1_1SVFIRBuilder.html#aac1cbf0cb2b402b5fd0e2324c89c31b0">curBB</a>));</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(arg-&gt;getParent());</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(fun);</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; }</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantExpr&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>))</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; {</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFIRBuilder.html#aac1cbf0cb2b402b5fd0e2324c89c31b0">curBB</a>)</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a">addGlobalPAGEdge</a>(edge);</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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;<a class="code" href="classSVF_1_1SVFIRBuilder.html#aac1cbf0cb2b402b5fd0e2324c89c31b0">curBB</a>-&gt;front());</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; }</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;GlobalVariable&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>) ||</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; SVFUtil::isa&lt;Constant&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>) ||</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; SVFUtil::isa&lt;MetadataAsValue&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>))</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; {</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a">addGlobalPAGEdge</a>(edge);</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; }</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = SVFUtil::dyn_cast&lt;Function&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>)){</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* f = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; <span class="keywordflow">if</span>((&amp;fun-&gt;getEntryBlock() == <a class="code" href="classSVF_1_1SVFIRBuilder.html#aac1cbf0cb2b402b5fd0e2324c89c31b0">curBB</a>) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(f)){</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(f);</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; }</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a">addGlobalPAGEdge</a>(edge);</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; }</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; {</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what else value can we have?&quot;</span>);</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; }</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a6a84868ab4e2845e884fba08d82b40f6">addToSVFStmtList</a>(icfgNode,edge);</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; icfgNode-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a8a133398c691ab3639ceefbc57cd33be">addSVFStmt</a>(edge);</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_a6a84868ab4e2845e884fba08d82b40f6"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6a84868ab4e2845e884fba08d82b40f6">SVF::SVFIR::addToSVFStmtList</a></div><div class="ttdeci">void addToSVFStmtList(ICFGNode *inst, SVFStmt *edge)</div><div class="ttdoc">Add a SVFStmt into instruction map. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00191">SVFIR.h:191</a></div></div>
2496
+ <div class="fragment"><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;{</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>())</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a> &amp;&amp; <span class="stringliteral">&quot;current Val is nullptr?&quot;</span>);</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#a852730edf374d18a3fb3985211ed7623">setBB</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aac1cbf0cb2b402b5fd0e2324c89c31b0">curBB</a>);</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#a24dddb4e346a6e569908e3efe8a6ecc0">setValue</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>);</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; <span class="comment">// backmap in valuToEdgeMap</span></div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#aefe3143b33cee00c3c2611fea577c1ac">mapValueToEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>, edge);</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#ae0b05ce161d62362642803158228e5d0">getGlobalICFGNode</a>();</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *curInst = SVFUtil::dyn_cast&lt;Instruction&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>))</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; {</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* srcFun = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getFunction();</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* dstFun = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getFunction();</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; <span class="keywordflow">if</span>(srcFun!=<span class="keyword">nullptr</span> &amp;&amp; !SVFUtil::isa&lt;RetPE&gt;(edge) &amp;&amp; !SVFUtil::isa&lt;Function&gt;(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getValue())) {</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(srcFun==curInst-&gt;getFunction() &amp;&amp; <span class="stringliteral">&quot;SrcNode of the PAGEdge not in the same function?&quot;</span>);</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; }</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; <span class="keywordflow">if</span>(dstFun!=<span class="keyword">nullptr</span> &amp;&amp; !SVFUtil::isa&lt;CallPE&gt;(edge) &amp;&amp; !SVFUtil::isa&lt;Function&gt;(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getValue())) {</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(dstFun==curInst-&gt;getFunction() &amp;&amp; <span class="stringliteral">&quot;DstNode of the PAGEdge not in the same function?&quot;</span>);</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; }</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; <span class="keywordflow">if</span> (!(SVFUtil::isa&lt;GepStmt&gt;(edge) &amp;&amp; SVFUtil::isa&lt;GepValVar&gt;(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>())))</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aac1cbf0cb2b402b5fd0e2324c89c31b0">curBB</a> &amp;&amp; <span class="stringliteral">&quot;instruction does not have a basic block??&quot;</span>);</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac7dcc6103dee3a0bbc2fd2e02716a154">ReturnInst</a>* retInst = SVFUtil::dyn_cast&lt;ReturnInst&gt;(curInst)){</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(retInst-&gt;getParent()-&gt;getParent());</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(fun);</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; }</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;RetPE&gt;(edge))</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(curInst);</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(curInst);</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; }</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; }</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* arg = SVFUtil::dyn_cast&lt;Argument&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>))</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; {</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aac1cbf0cb2b402b5fd0e2324c89c31b0">curBB</a> &amp;&amp; (&amp;<a class="code" href="classSVF_1_1SVFIRBuilder.html#aac1cbf0cb2b402b5fd0e2324c89c31b0">curBB</a>-&gt;getParent()-&gt;getEntryBlock() == <a class="code" href="classSVF_1_1SVFIRBuilder.html#aac1cbf0cb2b402b5fd0e2324c89c31b0">curBB</a>));</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(arg-&gt;getParent());</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(fun);</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; }</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantExpr&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>))</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; {</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFIRBuilder.html#aac1cbf0cb2b402b5fd0e2324c89c31b0">curBB</a>)</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a">addGlobalPAGEdge</a>(edge);</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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;<a class="code" href="classSVF_1_1SVFIRBuilder.html#aac1cbf0cb2b402b5fd0e2324c89c31b0">curBB</a>-&gt;front());</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; }</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;GlobalVariable&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>) ||</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; SVFUtil::isa&lt;Constant&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>) ||</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; SVFUtil::isa&lt;MetadataAsValue&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>))</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; {</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a">addGlobalPAGEdge</a>(edge);</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; }</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = SVFUtil::dyn_cast&lt;Function&gt;(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">curVal</a>)){</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* f = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; <span class="keywordflow">if</span>((&amp;fun-&gt;getEntryBlock() == <a class="code" href="classSVF_1_1SVFIRBuilder.html#aac1cbf0cb2b402b5fd0e2324c89c31b0">curBB</a>) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(f)){</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(f);</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; }</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a">addGlobalPAGEdge</a>(edge);</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; }</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; {</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what else value can we have?&quot;</span>);</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; }</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a6a84868ab4e2845e884fba08d82b40f6">addToSVFStmtList</a>(icfgNode,edge);</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; icfgNode-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a8a133398c691ab3639ceefbc57cd33be">addSVFStmt</a>(edge);</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* callPE = SVFUtil::dyn_cast&lt;CallPE&gt;(edge)){</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callNode = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>*<span class="keyword">&gt;</span>(callPE-&gt;getCallSite());</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entryNode = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>*<span class="keyword">&gt;</span>(callPE-&gt;getFunEntryICFGNode());</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">hasInterICFGEdge</a>(callNode,entryNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429a3486c9d9a182f2ba5d986fe74439ec2e">ICFGEdge::CallCF</a>))</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; SVFUtil::cast&lt;CallCFGEdge&gt;(edge)-&gt;addCallPE(callPE);</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160; }</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* retPE = SVFUtil::dyn_cast&lt;RetPE&gt;(edge)){</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retNode = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>*<span class="keyword">&gt;</span>(retPE-&gt;getCallSite()-&gt;getRetICFGNode());</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* exitNode = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>*<span class="keyword">&gt;</span>(retPE-&gt;getFunExitICFGNode());</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">hasInterICFGEdge</a>(exitNode, retNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541">ICFGEdge::RetCF</a>))</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; SVFUtil::cast&lt;RetCFGEdge&gt;(edge)-&gt;addRetPE(retPE);</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; }</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;}</div><div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00044">ICFGEdge.h:44</a></div></div>
2497
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a6a84868ab4e2845e884fba08d82b40f6"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6a84868ab4e2845e884fba08d82b40f6">SVF::SVFIR::addToSVFStmtList</a></div><div class="ttdeci">void addToSVFStmtList(ICFGNode *inst, SVFStmt *edge)</div><div class="ttdoc">Add a SVFStmt into instruction map. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00191">SVFIR.h:191</a></div></div>
2498
+ <div class="ttc" id="classSVF_1_1RetPE_html"><div class="ttname"><a href="classSVF_1_1RetPE.html">SVF::RetPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00534">SVFStatements.h:534</a></div></div>
2499
+ <div class="ttc" id="classSVF_1_1ICFGEdge_html_a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541">SVF::ICFGEdge::RetCF</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00055">ICFGEdge.h:55</a></div></div>
2496
2500
  <div class="ttc" id="classSVF_1_1ICFGNode_html_a8a133398c691ab3639ceefbc57cd33be"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a8a133398c691ab3639ceefbc57cd33be">SVF::ICFGNode::addSVFStmt</a></div><div class="ttdeci">void addSVFStmt(const SVFStmt *edge)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00116">ICFGNode.h:116</a></div></div>
2497
2501
  <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>
2498
2502
  <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="BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
@@ -2501,20 +2505,27 @@ Private Attributes</h2></td></tr>
2501
2505
  <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#l00251">ICFG.cpp:251</a></div></div>
2502
2506
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aac1cbf0cb2b402b5fd0e2324c89c31b0"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aac1cbf0cb2b402b5fd0e2324c89c31b0">SVF::SVFIRBuilder::curBB</a></div><div class="ttdeci">const BasicBlock * curBB</div><div class="ttdoc">Current basic block during SVFIR construction when visiting the module. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00050">SVFIRBuilder.h:50</a></div></div>
2503
2507
  <div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
2508
+ <div class="ttc" id="classSVF_1_1RetICFGNode_html"><div class="ttname"><a href="classSVF_1_1RetICFGNode.html">SVF::RetICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00459">ICFGNode.h:459</a></div></div>
2509
+ <div class="ttc" id="classSVF_1_1CallPE_html"><div class="ttname"><a href="classSVF_1_1CallPE.html">SVF::CallPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00477">SVFStatements.h:477</a></div></div>
2504
2510
  <div class="ttc" id="namespaceSVF_html_ac7dcc6103dee3a0bbc2fd2e02716a154"><div class="ttname"><a href="namespaceSVF.html#ac7dcc6103dee3a0bbc2fd2e02716a154">SVF::ReturnInst</a></div><div class="ttdeci">llvm::ReturnInst ReturnInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00157">BasicTypes.h:157</a></div></div>
2511
+ <div class="ttc" id="classSVF_1_1FunEntryICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunEntryICFGNode.html">SVF::FunEntryICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00251">ICFGNode.h:251</a></div></div>
2512
+ <div class="ttc" id="classSVF_1_1ICFG_html_a86535e50d1feba706b19491d905baef1"><div class="ttname"><a href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">SVF::ICFG::hasInterICFGEdge</a></div><div class="ttdeci">ICFGEdge * hasInterICFGEdge(ICFGNode *src, ICFGNode *dst, ICFGEdge::ICFGEdgeK kind)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00280">ICFG.cpp:280</a></div></div>
2505
2513
  <div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
2506
2514
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
2507
2515
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
2508
2516
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a852730edf374d18a3fb3985211ed7623"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a852730edf374d18a3fb3985211ed7623">SVF::SVFStmt::setBB</a></div><div class="ttdeci">void setBB(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00119">SVFStatements.h:119</a></div></div>
2509
2517
  <div class="ttc" id="classSVF_1_1SVFIR_html_ae3d9b4acb63a7dbe316e87bad4e3987a"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a">SVF::SVFIR::addGlobalPAGEdge</a></div><div class="ttdeci">void addGlobalPAGEdge(const SVFStmt *edge)</div><div class="ttdoc">Add global PAGEdges (not in a procedure) </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00616">SVFIR.h:616</a></div></div>
2510
2518
  <div class="ttc" id="namespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdoc">LLVM Aliases and constants. </div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
2519
+ <div class="ttc" id="classSVF_1_1ICFGEdge_html_a395c34788e98950bc43e8cb44313e429a3486c9d9a182f2ba5d986fe74439ec2e"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429a3486c9d9a182f2ba5d986fe74439ec2e">SVF::ICFGEdge::CallCF</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00054">ICFGEdge.h:54</a></div></div>
2511
2520
  <div class="ttc" id="classSVF_1_1ICFG_html_ae0b05ce161d62362642803158228e5d0"><div class="ttname"><a href="classSVF_1_1ICFG.html#ae0b05ce161d62362642803158228e5d0">SVF::ICFG::getGlobalICFGNode</a></div><div class="ttdeci">GlobalICFGNode * getGlobalICFGNode() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00178">ICFG.h:178</a></div></div>
2512
2521
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a24dddb4e346a6e569908e3efe8a6ecc0"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a24dddb4e346a6e569908e3efe8a6ecc0">SVF::SVFStmt::setValue</a></div><div class="ttdeci">void setValue(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00111">SVFStatements.h:111</a></div></div>
2513
2522
  <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>
2514
2523
  <div class="ttc" id="classSVF_1_1GenericEdge_html_ab47ca533c415841ef75456cbad439589"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVF::GenericEdge::getSrcNode</a></div><div class="ttdeci">NodeType * getSrcNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00085">GenericGraph.h:85</a></div></div>
2515
2524
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a5afb07f2cf8d76f8db334250e0c96cc0"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5afb07f2cf8d76f8db334250e0c96cc0">SVF::SVFIRBuilder::curVal</a></div><div class="ttdeci">const Value * curVal</div><div class="ttdoc">Current Value during SVFIR construction when visiting the module. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00051">SVFIRBuilder.h:51</a></div></div>
2525
+ <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#l00364">ICFGNode.h:364</a></div></div>
2516
2526
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
2517
2527
  <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#l00242">ICFG.cpp:242</a></div></div>
2528
+ <div class="ttc" id="classSVF_1_1FunExitICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunExitICFGNode.html">SVF::FunExitICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00308">ICFGNode.h:308</a></div></div>
2518
2529
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
2519
2530
  <div class="ttc" id="classSVF_1_1SVFModule_html_a1357c876eccedd58b3abe68875b3a570"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVF::SVFModule::pagReadFromTXT</a></div><div class="ttdeci">static bool pagReadFromTXT()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00093">SVFModule.h:93</a></div></div>
2520
2531
  <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>
@@ -2583,8 +2594,8 @@ Private Attributes</h2></td></tr>
2583
2594
 
2584
2595
  <p>Update <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> given a call graph (creating new <a class="el" href="classSVF_1_1CallPE.html">CallPE</a> and <a class="el" href="classSVF_1_1RetPE.html">RetPE</a> for resolved indirect calls) </p>
2585
2596
 
2586
- <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01716">1716</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
2587
- <div class="fragment"><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; {</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; PTACallGraph::CallEdgeMap::const_iterator iter = callgraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().begin();</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; PTACallGraph::CallEdgeMap::const_iterator eiter = callgraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().end();</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; <span class="keywordflow">for</span> (; iter != eiter; iter++)</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; {</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlock = iter-&gt;first;</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>(callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>());</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#aa11226a2e4fa6a7b1d78006cc8ca0518">isIndirectCall</a>() &amp;&amp; <span class="stringliteral">&quot;this is not an indirect call?&quot;</span>);</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> &amp; functions = iter-&gt;second;</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; <span class="keywordflow">for</span> (PTACallGraph::FunctionSet::const_iterator func_iter = functions.begin(); func_iter != functions.end(); func_iter++)</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; {</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = *func_iter;</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(callee)){</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>(), &amp;callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;getEntryBlock());</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#aff08d65b1411d1db81f80b9d4228c65d">handleExtCall</a>(cs, callee);</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; }</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>(), callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()-&gt;getParent());</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#afd3125974393d68b4b8f5298ef699ab3">handleDirectCall</a>(cs, callee);</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; }</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; }</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; }</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; <span class="comment">// dump SVFIR</span></div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3a20311c732fb391332ae0ee1cb450a0">Options::PAGDotGraph</a>)</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">dump</a>(<span class="stringliteral">&quot;svfir_final&quot;</span>);</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;}</div><div class="ttc" id="classSVF_1_1IRGraph_html_a1cb32461439c4dc8d044c2bfadb11307"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">SVF::IRGraph::dump</a></div><div class="ttdeci">void dump(std::string name)</div><div class="ttdoc">Dump SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00101">IRGraph.cpp:101</a></div></div>
2597
+ <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01728">1728</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
2598
+ <div class="fragment"><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; {</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; PTACallGraph::CallEdgeMap::const_iterator iter = callgraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().begin();</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; PTACallGraph::CallEdgeMap::const_iterator eiter = callgraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().end();</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; <span class="keywordflow">for</span> (; iter != eiter; iter++)</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; {</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlock = iter-&gt;first;</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>(callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>());</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#aa11226a2e4fa6a7b1d78006cc8ca0518">isIndirectCall</a>() &amp;&amp; <span class="stringliteral">&quot;this is not an indirect call?&quot;</span>);</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> &amp; functions = iter-&gt;second;</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; <span class="keywordflow">for</span> (PTACallGraph::FunctionSet::const_iterator func_iter = functions.begin(); func_iter != functions.end(); func_iter++)</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; {</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = *func_iter;</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(callee)){</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>(), &amp;callee-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()-&gt;getEntryBlock());</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#aff08d65b1411d1db81f80b9d4228c65d">handleExtCall</a>(cs, callee);</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; }</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>(), callBlock-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()-&gt;getParent());</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#afd3125974393d68b4b8f5298ef699ab3">handleDirectCall</a>(cs, callee);</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; }</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; }</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160; }</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; <span class="comment">// dump SVFIR</span></div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3a20311c732fb391332ae0ee1cb450a0">Options::PAGDotGraph</a>)</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">dump</a>(<span class="stringliteral">&quot;svfir_final&quot;</span>);</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;}</div><div class="ttc" id="classSVF_1_1IRGraph_html_a1cb32461439c4dc8d044c2bfadb11307"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">SVF::IRGraph::dump</a></div><div class="ttdeci">void dump(std::string name)</div><div class="ttdoc">Dump SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00101">IRGraph.cpp:101</a></div></div>
2588
2599
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_ad49fa2a288945f6910deb11acdf6a42d"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">SVF::PTACallGraph::getIndCallMap</a></div><div class="ttdeci">CallEdgeMap &amp; getIndCallMap()</div><div class="ttdoc">Get callees from an indirect callsite. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00280">PTACallGraph.h:280</a></div></div>
2589
2600
  <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>
2590
2601
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a5f5a5ec7e707a21994d301cc07d32a5a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">SVF::PTACallGraph::FunctionSet</a></div><div class="ttdeci">Set&lt; const SVFFunction * &gt; FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00228">PTACallGraph.h:228</a></div></div>
@@ -2725,9 +2736,9 @@ Private Attributes</h2></td></tr>
2725
2736
  <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#l00018">MTAResultValidator.h:18</a></div></div>
2726
2737
  <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>
2727
2738
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
2728
- <div class="ttc" id="classSVF_1_1BinaryOPStmt_html"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html">SVF::BinaryOPStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00831">SVFStatements.h:831</a></div></div>
2739
+ <div class="ttc" id="classSVF_1_1BinaryOPStmt_html"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html">SVF::BinaryOPStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00822">SVFStatements.h:822</a></div></div>
2729
2740
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
2730
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a5832c14f0c8bf4d2f41921383c40340e"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5832c14f0c8bf4d2f41921383c40340e">SVF::SVFIRBuilder::addBinaryOPEdge</a></div><div class="ttdeci">BinaryOPStmt * addBinaryOPEdge(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00330">SVFIRBuilder.h:330</a></div></div>
2741
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a5832c14f0c8bf4d2f41921383c40340e"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5832c14f0c8bf4d2f41921383c40340e">SVF::SVFIRBuilder::addBinaryOPEdge</a></div><div class="ttdeci">BinaryOPStmt * addBinaryOPEdge(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00332">SVFIRBuilder.h:332</a></div></div>
2731
2742
  </div><!-- fragment -->
2732
2743
  </div>
2733
2744
  </div>
@@ -2749,19 +2760,19 @@ Private Attributes</h2></td></tr>
2749
2760
  <p>Branch and switch instructions are treated as UnaryOP br cmp label if.then, label if.else </p>
2750
2761
 
2751
2762
  <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00883">883</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
2752
- <div class="fragment"><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; {</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> brinst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond;</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">if</span> (inst.isConditional())</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getCondition());</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>();</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160;</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(inst.getNumSuccessors() &lt;= 2 &amp;&amp; <span class="stringliteral">&quot;if/else has more than two branches?&quot;</span>);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <a class="code" href="classSVF_1_1BranchStmt.html#ac486fb3a118e6153892b998b0ef46890">BranchStmt::SuccAndCondPairVec</a> successors;</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; inst.getNumSuccessors(); ++i)</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; {</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* succInst = &amp;inst.getSuccessor(i)-&gt;back();</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(succInst);</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; successors.push_back(std::make_pair(icfgNode, 1-i));</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; }</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> *brStmt = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a9a5334fc4133b2eeadb9b5104635cca2">addBranchStmt</a>(brinst, cond,successors);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00085">SVFIRBuilder.h:85</a></div></div>
2763
+ <div class="fragment"><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; {</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> brinst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond;</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">if</span> (inst.isConditional())</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getCondition());</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>();</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160;</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(inst.getNumSuccessors() &lt;= 2 &amp;&amp; <span class="stringliteral">&quot;if/else has more than two branches?&quot;</span>);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <a class="code" href="classSVF_1_1BranchStmt.html#ac486fb3a118e6153892b998b0ef46890">BranchStmt::SuccAndCondPairVec</a> successors;</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; inst.getNumSuccessors(); ++i)</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; {</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* succInst = &amp;inst.getSuccessor(i)-&gt;front();</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(succInst);</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; successors.push_back(std::make_pair(icfgNode, 1-i));</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; }</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> *brStmt = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a9a5334fc4133b2eeadb9b5104635cca2">addBranchStmt</a>(brinst, cond,successors);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00085">SVFIRBuilder.h:85</a></div></div>
2753
2764
  <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#l00018">MTAResultValidator.h:18</a></div></div>
2754
- <div class="ttc" id="classSVF_1_1BranchStmt_html_ac486fb3a118e6153892b998b0ef46890"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#ac486fb3a118e6153892b998b0ef46890">SVF::BranchStmt::SuccAndCondPairVec</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; const ICFGNode *, s64_t &gt; &gt; SuccAndCondPairVec</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00933">SVFStatements.h:933</a></div></div>
2765
+ <div class="ttc" id="classSVF_1_1BranchStmt_html_ac486fb3a118e6153892b998b0ef46890"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#ac486fb3a118e6153892b998b0ef46890">SVF::BranchStmt::SuccAndCondPairVec</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; const ICFGNode *, s64_t &gt; &gt; SuccAndCondPairVec</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00924">SVFStatements.h:924</a></div></div>
2755
2766
  <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>
2756
2767
  <div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
2757
2768
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
2758
2769
  <div class="ttc" id="classSVF_1_1IRGraph_html_a3de9a2a565c303f68a90c32dc59febd5"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">SVF::IRGraph::getNullPtr</a></div><div class="ttdeci">NodeID getNullPtr() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00156">IRGraph.h:156</a></div></div>
2759
2770
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
2760
- <div class="ttc" id="classSVF_1_1BranchStmt_html"><div class="ttname"><a href="classSVF_1_1BranchStmt.html">SVF::BranchStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00930">SVFStatements.h:930</a></div></div>
2771
+ <div class="ttc" id="classSVF_1_1BranchStmt_html"><div class="ttname"><a href="classSVF_1_1BranchStmt.html">SVF::BranchStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00921">SVFStatements.h:921</a></div></div>
2761
2772
  <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>
2762
2773
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
2763
2774
  <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>
2764
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a9a5334fc4133b2eeadb9b5104635cca2"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a9a5334fc4133b2eeadb9b5104635cca2">SVF::SVFIRBuilder::addBranchStmt</a></div><div class="ttdeci">BranchStmt * addBranchStmt(NodeID br, NodeID cond, const BranchStmt::SuccAndCondPairVec &amp;succs)</div><div class="ttdoc">Add Branch statement. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00344">SVFIRBuilder.h:344</a></div></div>
2775
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a9a5334fc4133b2eeadb9b5104635cca2"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a9a5334fc4133b2eeadb9b5104635cca2">SVF::SVFIRBuilder::addBranchStmt</a></div><div class="ttdeci">BranchStmt * addBranchStmt(NodeID br, NodeID cond, const BranchStmt::SuccAndCondPairVec &amp;succs)</div><div class="ttdoc">Add Branch statement. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00346">SVFIRBuilder.h:346</a></div></div>
2765
2776
  </div><!-- fragment -->
2766
2777
  </div>
2767
2778
  </div>
@@ -2921,8 +2932,8 @@ Private Attributes</h2></td></tr>
2921
2932
  <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#l00018">MTAResultValidator.h:18</a></div></div>
2922
2933
  <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>
2923
2934
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
2924
- <div class="ttc" id="classSVF_1_1CmpStmt_html"><div class="ttname"><a href="classSVF_1_1CmpStmt.html">SVF::CmpStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00785">SVFStatements.h:785</a></div></div>
2925
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a0a7183291291e3f91188607ead065c81"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a0a7183291291e3f91188607ead065c81">SVF::SVFIRBuilder::addCmpEdge</a></div><div class="ttdeci">CmpStmt * addCmpEdge(NodeID op1, NodeID op2, NodeID dst, u32_t predict)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00323">SVFIRBuilder.h:323</a></div></div>
2935
+ <div class="ttc" id="classSVF_1_1CmpStmt_html"><div class="ttname"><a href="classSVF_1_1CmpStmt.html">SVF::CmpStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00776">SVFStatements.h:776</a></div></div>
2936
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a0a7183291291e3f91188607ead065c81"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a0a7183291291e3f91188607ead065c81">SVF::SVFIRBuilder::addCmpEdge</a></div><div class="ttdeci">CmpStmt * addCmpEdge(NodeID op1, NodeID op2, NodeID dst, u32_t predict)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00325">SVFIRBuilder.h:325</a></div></div>
2926
2937
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
2927
2938
  </div><!-- fragment -->
2928
2939
  </div>
@@ -3055,7 +3066,7 @@ Private Attributes</h2></td></tr>
3055
3066
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00085">SVFIRBuilder.h:85</a></div></div>
3056
3067
  <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#l00018">MTAResultValidator.h:18</a></div></div>
3057
3068
  <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>
3058
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a45ab73a812809b3c725daf11b5da6141"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a45ab73a812809b3c725daf11b5da6141">SVF::SVFIRBuilder::addGepEdge</a></div><div class="ttdeci">GepStmt * addGepEdge(NodeID src, NodeID dst, const LocationSet &amp;ls, bool constGep)</div><div class="ttdoc">Add Gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00383">SVFIRBuilder.h:383</a></div></div>
3069
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a45ab73a812809b3c725daf11b5da6141"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a45ab73a812809b3c725daf11b5da6141">SVF::SVFIRBuilder::addGepEdge</a></div><div class="ttdeci">GepStmt * addGepEdge(NodeID src, NodeID dst, const LocationSet &amp;ls, bool constGep)</div><div class="ttdoc">Add Gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00385">SVFIRBuilder.h:385</a></div></div>
3059
3070
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a87b75f04942124711d5ea1366e866890"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a87b75f04942124711d5ea1366e866890">SVF::SVFIRBuilder::computeGepOffset</a></div><div class="ttdeci">bool computeGepOffset(const User *V, LocationSet &amp;ls)</div><div class="ttdoc">Compute offset of a gep instruction or gep constant expression. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00257">SVFIRBuilder.cpp:257</a></div></div>
3060
3071
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_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>
3061
3072
  <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00072">LocationSet.h:72</a></div></div>
@@ -3282,7 +3293,7 @@ Private Attributes</h2></td></tr>
3282
3293
  <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00642">642</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3283
3294
  <div class="fragment"><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; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process load &quot;</span> &lt;&lt; inst &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</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; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getPointerOperand());</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a9fdcddcdcf14a90cc80d42de0d5ad189">addLoadEdge</a>(src, dst);</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00085">SVFIRBuilder.h:85</a></div></div>
3284
3295
  <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#l00018">MTAResultValidator.h:18</a></div></div>
3285
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a9fdcddcdcf14a90cc80d42de0d5ad189"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a9fdcddcdcf14a90cc80d42de0d5ad189">SVF::SVFIRBuilder::addLoadEdge</a></div><div class="ttdeci">LoadStmt * addLoadEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00350">SVFIRBuilder.h:350</a></div></div>
3296
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a9fdcddcdcf14a90cc80d42de0d5ad189"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a9fdcddcdcf14a90cc80d42de0d5ad189">SVF::SVFIRBuilder::addLoadEdge</a></div><div class="ttdeci">LoadStmt * addLoadEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00352">SVFIRBuilder.h:352</a></div></div>
3286
3297
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_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>
3287
3298
  <div class="ttc" id="SVFBasicTypes_8h_html_a7a295e02c56a93cf9206dd9d3b18dd17"><div class="ttname"><a href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a></div><div class="ttdeci">#define DPAGBuild</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00156">SVFBasicTypes.h:156</a></div></div>
3288
3299
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00149">SVFBasicTypes.h:149</a></div></div>
@@ -3307,7 +3318,7 @@ Private Attributes</h2></td></tr>
3307
3318
  <p>Visit phi instructions </p>
3308
3319
 
3309
3320
  <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00620">620</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3310
- <div class="fragment"><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;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process phi &quot;</span> &lt;&lt; inst &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</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="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; inst.getNumIncomingValues(); ++i)</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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = inst.getIncomingValue(i);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* incomingInst = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&gt;(val);</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((incomingInst==<span class="keyword">nullptr</span>) || (incomingInst-&gt;getFunction() == inst.getFunction()));</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* predInst = &amp;inst.getIncomingBlock(i)-&gt;front();</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(predInst);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(val);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#aa26d69a4f6d6ecc93e91231c22c50dac">addPhiStmt</a>(dst,src,icfgNode);</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="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00085">SVFIRBuilder.h:85</a></div></div>
3321
+ <div class="fragment"><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;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process phi &quot;</span> &lt;&lt; inst &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</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="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; inst.getNumIncomingValues(); ++i)</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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = inst.getIncomingValue(i);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* incomingInst = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&gt;(val);</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((incomingInst==<span class="keyword">nullptr</span>) || (incomingInst-&gt;getFunction() == inst.getFunction()));</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* predInst = &amp;inst.getIncomingBlock(i)-&gt;back();</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(predInst);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(val);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#aa26d69a4f6d6ecc93e91231c22c50dac">addPhiStmt</a>(dst,src,icfgNode);</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="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00085">SVFIRBuilder.h:85</a></div></div>
3311
3322
  <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#l00018">MTAResultValidator.h:18</a></div></div>
3312
3323
  <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>
3313
3324
  <div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
@@ -3413,7 +3424,7 @@ Private Attributes</h2></td></tr>
3413
3424
  <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00768">768</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3414
3425
  <div class="fragment"><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160;{</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process select &quot;</span> &lt;&lt; inst &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src1 = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getTrueValue());</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src2 = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getFalseValue());</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getCondition());</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#a96d0878e2eaa0104a1b07fceb2b33c45">addSelectStmt</a>(dst,src1,src2, cond);</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00085">SVFIRBuilder.h:85</a></div></div>
3415
3426
  <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#l00018">MTAResultValidator.h:18</a></div></div>
3416
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a96d0878e2eaa0104a1b07fceb2b33c45"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a96d0878e2eaa0104a1b07fceb2b33c45">SVF::SVFIRBuilder::addSelectStmt</a></div><div class="ttdeci">SelectStmt * addSelectStmt(NodeID res, NodeID op1, NodeID op2, NodeID cond)</div><div class="ttdoc">Add SelectStmt. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00316">SVFIRBuilder.h:316</a></div></div>
3427
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a96d0878e2eaa0104a1b07fceb2b33c45"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a96d0878e2eaa0104a1b07fceb2b33c45">SVF::SVFIRBuilder::addSelectStmt</a></div><div class="ttdeci">SelectStmt * addSelectStmt(NodeID res, NodeID op1, NodeID op2, NodeID cond)</div><div class="ttdoc">Add SelectStmt. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00318">SVFIRBuilder.h:318</a></div></div>
3417
3428
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_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>
3418
3429
  <div class="ttc" id="SVFBasicTypes_8h_html_a7a295e02c56a93cf9206dd9d3b18dd17"><div class="ttname"><a href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a></div><div class="ttdeci">#define DPAGBuild</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00156">SVFBasicTypes.h:156</a></div></div>
3419
3430
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00149">SVFBasicTypes.h:149</a></div></div>
@@ -3471,7 +3482,7 @@ Private Attributes</h2></td></tr>
3471
3482
  <div class="fragment"><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;{</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="comment">// StoreInst itself should always not be a pointer type</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!SVFUtil::isa&lt;PointerType&gt;(inst.getType()));</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; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;process store &quot;</span> &lt;&lt; inst &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getPointerOperand());</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; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getValueOperand());</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html#ac5795471aff6ccb07a84ffe1277ff2d4">addStoreEdge</a>(src, dst);</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;}</div><div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00085">SVFIRBuilder.h:85</a></div></div>
3472
3483
  <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#l00018">MTAResultValidator.h:18</a></div></div>
3473
3484
  <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>
3474
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_ac5795471aff6ccb07a84ffe1277ff2d4"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ac5795471aff6ccb07a84ffe1277ff2d4">SVF::SVFIRBuilder::addStoreEdge</a></div><div class="ttdeci">StoreStmt * addStoreEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00357">SVFIRBuilder.h:357</a></div></div>
3485
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_ac5795471aff6ccb07a84ffe1277ff2d4"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ac5795471aff6ccb07a84ffe1277ff2d4">SVF::SVFIRBuilder::addStoreEdge</a></div><div class="ttdeci">StoreStmt * addStoreEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00359">SVFIRBuilder.h:359</a></div></div>
3475
3486
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_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>
3476
3487
  <div class="ttc" id="SVFBasicTypes_8h_html_a7a295e02c56a93cf9206dd9d3b18dd17"><div class="ttname"><a href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a></div><div class="ttdeci">#define DPAGBuild</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00156">SVFBasicTypes.h:156</a></div></div>
3477
3488
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00149">SVFBasicTypes.h:149</a></div></div>
@@ -3498,17 +3509,17 @@ Private Attributes</h2></td></tr>
3498
3509
  <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00903">903</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3499
3510
  <div class="fragment"><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; {</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> brinst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getCondition());</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160;</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <a class="code" href="classSVF_1_1BranchStmt.html#ac486fb3a118e6153892b998b0ef46890">BranchStmt::SuccAndCondPairVec</a> successors;</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; inst.getNumSuccessors(); ++i)</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; {</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* succInst = &amp;inst.getSuccessor(i)-&gt;front();</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* condVal = inst.findCaseDest(inst.getSuccessor(i));</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> val = condVal ? condVal-&gt;getSExtValue() : -1;</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">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>(succInst);</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; successors.push_back(std::make_pair(icfgNode,val));</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; }</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> *brStmt = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a9a5334fc4133b2eeadb9b5104635cca2">addBranchStmt</a>(brinst, cond,successors);</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00085">SVFIRBuilder.h:85</a></div></div>
3500
3511
  <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#l00018">MTAResultValidator.h:18</a></div></div>
3501
- <div class="ttc" id="classSVF_1_1BranchStmt_html_ac486fb3a118e6153892b998b0ef46890"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#ac486fb3a118e6153892b998b0ef46890">SVF::BranchStmt::SuccAndCondPairVec</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; const ICFGNode *, s64_t &gt; &gt; SuccAndCondPairVec</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00933">SVFStatements.h:933</a></div></div>
3512
+ <div class="ttc" id="classSVF_1_1BranchStmt_html_ac486fb3a118e6153892b998b0ef46890"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#ac486fb3a118e6153892b998b0ef46890">SVF::BranchStmt::SuccAndCondPairVec</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; const ICFGNode *, s64_t &gt; &gt; SuccAndCondPairVec</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00924">SVFStatements.h:924</a></div></div>
3502
3513
  <div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
3503
3514
  <div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
3504
3515
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
3505
3516
  <div class="ttc" id="namespaceSVF_html_abe09d99af006554a5c00803e9a89f9a6"><div class="ttname"><a href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">SVF::s64_t</a></div><div class="ttdeci">signed s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00078">SVFBasicTypes.h:78</a></div></div>
3506
3517
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
3507
- <div class="ttc" id="classSVF_1_1BranchStmt_html"><div class="ttname"><a href="classSVF_1_1BranchStmt.html">SVF::BranchStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00930">SVFStatements.h:930</a></div></div>
3518
+ <div class="ttc" id="classSVF_1_1BranchStmt_html"><div class="ttname"><a href="classSVF_1_1BranchStmt.html">SVF::BranchStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00921">SVFStatements.h:921</a></div></div>
3508
3519
  <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>
3509
3520
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a4ea94b0a8d6da904ff9a6c1b0341b9cb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">SVF::SVFIRBuilder::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00048">SVFIRBuilder.h:48</a></div></div>
3510
3521
  <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>
3511
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a9a5334fc4133b2eeadb9b5104635cca2"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a9a5334fc4133b2eeadb9b5104635cca2">SVF::SVFIRBuilder::addBranchStmt</a></div><div class="ttdeci">BranchStmt * addBranchStmt(NodeID br, NodeID cond, const BranchStmt::SuccAndCondPairVec &amp;succs)</div><div class="ttdoc">Add Branch statement. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00344">SVFIRBuilder.h:344</a></div></div>
3522
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a9a5334fc4133b2eeadb9b5104635cca2"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a9a5334fc4133b2eeadb9b5104635cca2">SVF::SVFIRBuilder::addBranchStmt</a></div><div class="ttdeci">BranchStmt * addBranchStmt(NodeID br, NodeID cond, const BranchStmt::SuccAndCondPairVec &amp;succs)</div><div class="ttdoc">Add Branch statement. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00346">SVFIRBuilder.h:346</a></div></div>
3512
3523
  </div><!-- fragment -->
3513
3524
  </div>
3514
3525
  </div>
@@ -3532,10 +3543,10 @@ Private Attributes</h2></td></tr>
3532
3543
  <p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00739">739</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
3533
3544
  <div class="fragment"><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;{</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&amp;inst);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(inst.getNumOperands() == 1 &amp;&amp; <span class="stringliteral">&quot;not one operand for Unary instruction?&quot;</span>);</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getOperand(0);</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(opnd);</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> opcode = inst.getOpcode();</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>* unaryPE = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6102431dd8a8d7b050d5773e499d0fbf">addUnaryOPEdge</a>(src, dst, opcode);</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIRBuilder_html_acc69fc638380f34164db649d9bf2a7d6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">SVF::SVFIRBuilder::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get different kinds of node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00085">SVFIRBuilder.h:85</a></div></div>
3534
3545
  <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#l00018">MTAResultValidator.h:18</a></div></div>
3535
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a6102431dd8a8d7b050d5773e499d0fbf"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a6102431dd8a8d7b050d5773e499d0fbf">SVF::SVFIRBuilder::addUnaryOPEdge</a></div><div class="ttdeci">UnaryOPStmt * addUnaryOPEdge(NodeID src, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Unary edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00337">SVFIRBuilder.h:337</a></div></div>
3546
+ <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a6102431dd8a8d7b050d5773e499d0fbf"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a6102431dd8a8d7b050d5773e499d0fbf">SVF::SVFIRBuilder::addUnaryOPEdge</a></div><div class="ttdeci">UnaryOPStmt * addUnaryOPEdge(NodeID src, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Unary edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00339">SVFIRBuilder.h:339</a></div></div>
3536
3547
  <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>
3537
3548
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
3538
- <div class="ttc" id="classSVF_1_1UnaryOPStmt_html"><div class="ttname"><a href="classSVF_1_1UnaryOPStmt.html">SVF::UnaryOPStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00876">SVFStatements.h:876</a></div></div>
3549
+ <div class="ttc" id="classSVF_1_1UnaryOPStmt_html"><div class="ttname"><a href="classSVF_1_1UnaryOPStmt.html">SVF::UnaryOPStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00867">SVFStatements.h:867</a></div></div>
3539
3550
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
3540
3551
  </div><!-- fragment -->
3541
3552
  </div>