svf-tools 1.0.366 → 1.0.370

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 (156) hide show
  1. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +6 -6
  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 +2 -2
  10. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +8 -6
  11. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +4 -4
  12. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +26 -24
  13. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +6 -5
  14. package/SVF-doxygen/html/html/ICFG_8h_source.html +3 -2
  15. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  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 +52 -48
  25. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +45 -41
  26. package/SVF-doxygen/html/html/SVFIR_8h_source.html +42 -40
  27. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  28. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +104 -98
  29. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/html/VFGNode_8h_source.html +6 -6
  32. package/SVF-doxygen/html/html/VFG_8cpp_source.html +14 -14
  33. package/SVF-doxygen/html/html/VFG_8h_source.html +10 -10
  34. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +1 -1
  35. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +3 -3
  36. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +42 -43
  37. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +15 -18
  38. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +31 -31
  39. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
  40. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +13 -13
  41. package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +24 -22
  42. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +91 -27
  43. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +42 -43
  44. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +16 -19
  45. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  46. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +8 -8
  47. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +2 -2
  48. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
  49. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +4 -4
  50. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  51. package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +1 -1
  52. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +10 -10
  53. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +21 -16
  54. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter-members.html +1 -1
  55. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +4 -4
  56. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge-members.html +27 -26
  57. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +120 -81
  58. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
  59. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
  60. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +45 -46
  61. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +25 -63
  62. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +9 -9
  63. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +47 -48
  64. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +34 -35
  65. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +2 -2
  66. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +14 -14
  67. package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +23 -21
  68. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +93 -27
  69. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +4 -4
  70. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +135 -110
  71. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +4 -4
  72. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +177 -139
  73. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  74. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt-members.html +44 -45
  75. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +21 -24
  76. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +42 -41
  77. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +28 -19
  78. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +42 -41
  79. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +27 -19
  80. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +1 -1
  81. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +20 -20
  82. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +16 -16
  83. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
  84. package/SVF-doxygen/html/html/functions_a.html +9 -9
  85. package/SVF-doxygen/html/html/functions_b.html +7 -12
  86. package/SVF-doxygen/html/html/functions_c.html +30 -23
  87. package/SVF-doxygen/html/html/functions_e.html +6 -2
  88. package/SVF-doxygen/html/html/functions_func.html +9 -9
  89. package/SVF-doxygen/html/html/functions_func_c.html +1 -1
  90. package/SVF-doxygen/html/html/functions_func_g.html +18 -20
  91. package/SVF-doxygen/html/html/functions_func_r.html +1 -1
  92. package/SVF-doxygen/html/html/functions_func_s.html +2 -2
  93. package/SVF-doxygen/html/html/functions_g.html +20 -22
  94. package/SVF-doxygen/html/html/functions_i.html +11 -13
  95. package/SVF-doxygen/html/html/functions_l.html +3 -3
  96. package/SVF-doxygen/html/html/functions_m.html +1 -1
  97. package/SVF-doxygen/html/html/functions_n.html +4 -4
  98. package/SVF-doxygen/html/html/functions_o.html +3 -3
  99. package/SVF-doxygen/html/html/functions_p.html +9 -9
  100. package/SVF-doxygen/html/html/functions_r.html +3 -5
  101. package/SVF-doxygen/html/html/functions_s.html +20 -22
  102. package/SVF-doxygen/html/html/functions_t.html +5 -5
  103. package/SVF-doxygen/html/html/functions_type_b.html +0 -3
  104. package/SVF-doxygen/html/html/functions_v.html +6 -6
  105. package/SVF-doxygen/html/html/functions_vars_b.html +2 -2
  106. package/SVF-doxygen/html/html/functions_vars_c.html +7 -0
  107. package/SVF-doxygen/html/html/functions_vars_e.html +4 -0
  108. package/SVF-doxygen/html/html/functions_vars_i.html +1 -3
  109. package/SVF-doxygen/html/html/functions_w.html +5 -9
  110. package/SVF-doxygen/html/html/search/all_1.js +9 -9
  111. package/SVF-doxygen/html/html/search/all_10.js +5 -5
  112. package/SVF-doxygen/html/html/search/all_12.js +3 -3
  113. package/SVF-doxygen/html/html/search/all_13.js +8 -8
  114. package/SVF-doxygen/html/html/search/all_14.js +6 -6
  115. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  116. package/SVF-doxygen/html/html/search/all_16.js +3 -3
  117. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  118. package/SVF-doxygen/html/html/search/all_2.js +2 -3
  119. package/SVF-doxygen/html/html/search/all_3.js +3 -2
  120. package/SVF-doxygen/html/html/search/all_5.js +2 -2
  121. package/SVF-doxygen/html/html/search/all_7.js +5 -7
  122. package/SVF-doxygen/html/html/search/all_9.js +2 -2
  123. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  124. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  125. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  126. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  127. package/SVF-doxygen/html/html/search/functions_0.js +9 -9
  128. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  129. package/SVF-doxygen/html/html/search/functions_11.js +2 -2
  130. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  131. package/SVF-doxygen/html/html/search/functions_6.js +5 -7
  132. package/SVF-doxygen/html/html/search/functions_f.js +1 -1
  133. package/SVF-doxygen/html/html/search/typedefs_1.js +0 -1
  134. package/SVF-doxygen/html/html/search/variables_14.js +2 -2
  135. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  136. package/SVF-doxygen/html/html/search/variables_2.js +1 -1
  137. package/SVF-doxygen/html/html/search/variables_3.js +2 -0
  138. package/SVF-doxygen/html/html/search/variables_5.js +2 -1
  139. package/SVF-doxygen/html/html/search/variables_9.js +1 -1
  140. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  141. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
  142. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
  143. package/include/Graphs/ICFG.h +1 -1
  144. package/include/Graphs/ICFGEdge.h +17 -14
  145. package/include/MemoryModel/SVFIR.h +4 -4
  146. package/include/MemoryModel/SVFStatements.h +26 -25
  147. package/include/SVF-FE/SVFIRBuilder.h +11 -9
  148. package/include/Util/ExtAPI.h +1 -1
  149. package/lib/Graphs/ICFG.cpp +4 -4
  150. package/lib/MemoryModel/PAGBuilderFromFile.cpp +2 -2
  151. package/lib/MemoryModel/SVFIR.cpp +10 -9
  152. package/lib/MemoryModel/SVFStatements.cpp +6 -6
  153. package/lib/SVF-FE/ICFGBuilder.cpp +8 -3
  154. package/lib/SVF-FE/SVFIRBuilder.cpp +14 -9
  155. package/lib/Util/ExtAPI.cpp +0 -1
  156. package/package.json +1 -1
@@ -551,12 +551,12 @@ Private Member Functions</h2></td></tr>
551
551
  <tr class="memitem:af9804d78e4158d3c8961e1f84bbef91e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR.html#af9804d78e4158d3c8961e1f84bbef91e">addStoreStmt</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, const <a class="el" href="classSVF_1_1IntraICFGNode.html">IntraICFGNode</a> *val)</td></tr>
552
552
  <tr class="memdesc:af9804d78e4158d3c8961e1f84bbef91e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add Store edge. <a href="#af9804d78e4158d3c8961e1f84bbef91e">More...</a><br /></td></tr>
553
553
  <tr class="separator:af9804d78e4158d3c8961e1f84bbef91e"><td class="memSeparator" colspan="2">&#160;</td></tr>
554
- <tr class="memitem:a2244c6180cede066186d9f7098bf9325"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1CallPE.html">CallPE</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR.html#a2244c6180cede066186d9f7098bf9325">addCallPE</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cs)</td></tr>
555
- <tr class="memdesc:a2244c6180cede066186d9f7098bf9325"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add Call edge. <a href="#a2244c6180cede066186d9f7098bf9325">More...</a><br /></td></tr>
556
- <tr class="separator:a2244c6180cede066186d9f7098bf9325"><td class="memSeparator" colspan="2">&#160;</td></tr>
557
- <tr class="memitem:af7edf234425e890d1cf3ff812000206d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1RetPE.html">RetPE</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR.html#af7edf234425e890d1cf3ff812000206d">addRetPE</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cs)</td></tr>
558
- <tr class="memdesc:af7edf234425e890d1cf3ff812000206d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add Return edge. <a href="#af7edf234425e890d1cf3ff812000206d">More...</a><br /></td></tr>
559
- <tr class="separator:af7edf234425e890d1cf3ff812000206d"><td class="memSeparator" colspan="2">&#160;</td></tr>
554
+ <tr class="memitem:a574bd5c9f11681c70db29c25f25a4cba"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1CallPE.html">CallPE</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR.html#a574bd5c9f11681c70db29c25f25a4cba">addCallPE</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cs, const <a class="el" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a> *<a class="el" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>)</td></tr>
555
+ <tr class="memdesc:a574bd5c9f11681c70db29c25f25a4cba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add Call edge. <a href="#a574bd5c9f11681c70db29c25f25a4cba">More...</a><br /></td></tr>
556
+ <tr class="separator:a574bd5c9f11681c70db29c25f25a4cba"><td class="memSeparator" colspan="2">&#160;</td></tr>
557
+ <tr class="memitem:a1791652f578b6ab8aacb4d6e7c7fd05f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1RetPE.html">RetPE</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR.html#a1791652f578b6ab8aacb4d6e7c7fd05f">addRetPE</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cs, const <a class="el" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a> *<a class="el" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>)</td></tr>
558
+ <tr class="memdesc:a1791652f578b6ab8aacb4d6e7c7fd05f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add Return edge. <a href="#a1791652f578b6ab8aacb4d6e7c7fd05f">More...</a><br /></td></tr>
559
+ <tr class="separator:a1791652f578b6ab8aacb4d6e7c7fd05f"><td class="memSeparator" colspan="2">&#160;</td></tr>
560
560
  <tr class="memitem:a9eeab593b2f161ad268d27a7031aedbe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR.html#a9eeab593b2f161ad268d27a7031aedbe">addGepStmt</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, const <a class="el" href="classSVF_1_1LocationSet.html">LocationSet</a> &amp;ls, bool constGep)</td></tr>
561
561
  <tr class="memdesc:a9eeab593b2f161ad268d27a7031aedbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add Gep edge. <a href="#a9eeab593b2f161ad268d27a7031aedbe">More...</a><br /></td></tr>
562
562
  <tr class="separator:a9eeab593b2f161ad268d27a7031aedbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -566,12 +566,12 @@ Private Member Functions</h2></td></tr>
566
566
  <tr class="memitem:a996574dbe5d5d79b1dc24cf5dc4145de"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR.html#a996574dbe5d5d79b1dc24cf5dc4145de">addVariantGepStmt</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, const <a class="el" href="classSVF_1_1LocationSet.html">LocationSet</a> &amp;ls)</td></tr>
567
567
  <tr class="memdesc:a996574dbe5d5d79b1dc24cf5dc4145de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add Variant(Gep) edge. <a href="#a996574dbe5d5d79b1dc24cf5dc4145de">More...</a><br /></td></tr>
568
568
  <tr class="separator:a996574dbe5d5d79b1dc24cf5dc4145de"><td class="memSeparator" colspan="2">&#160;</td></tr>
569
- <tr class="memitem:aa498f73f62e19f4f9f63e265938ce408"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1TDForkPE.html">TDForkPE</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR.html#aa498f73f62e19f4f9f63e265938ce408">addThreadForkPE</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cs)</td></tr>
570
- <tr class="memdesc:aa498f73f62e19f4f9f63e265938ce408"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add Thread fork edge for parameter passing. <a href="#aa498f73f62e19f4f9f63e265938ce408">More...</a><br /></td></tr>
571
- <tr class="separator:aa498f73f62e19f4f9f63e265938ce408"><td class="memSeparator" colspan="2">&#160;</td></tr>
572
- <tr class="memitem:ad50f150bb3bac77687b3d1210f21d2ed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR.html#ad50f150bb3bac77687b3d1210f21d2ed">addThreadJoinPE</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cs)</td></tr>
573
- <tr class="memdesc:ad50f150bb3bac77687b3d1210f21d2ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add Thread join edge for parameter passing. <a href="#ad50f150bb3bac77687b3d1210f21d2ed">More...</a><br /></td></tr>
574
- <tr class="separator:ad50f150bb3bac77687b3d1210f21d2ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
569
+ <tr class="memitem:a916d893cb852bbbd933e3e5349d5154b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1TDForkPE.html">TDForkPE</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR.html#a916d893cb852bbbd933e3e5349d5154b">addThreadForkPE</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cs, const <a class="el" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a> *<a class="el" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>)</td></tr>
570
+ <tr class="memdesc:a916d893cb852bbbd933e3e5349d5154b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add Thread fork edge for parameter passing. <a href="#a916d893cb852bbbd933e3e5349d5154b">More...</a><br /></td></tr>
571
+ <tr class="separator:a916d893cb852bbbd933e3e5349d5154b"><td class="memSeparator" colspan="2">&#160;</td></tr>
572
+ <tr class="memitem:a64d14e7ee334c85b02414d68877faab2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR.html#a64d14e7ee334c85b02414d68877faab2">addThreadJoinPE</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cs, const <a class="el" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a> *<a class="el" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>)</td></tr>
573
+ <tr class="memdesc:a64d14e7ee334c85b02414d68877faab2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add Thread join edge for parameter passing. <a href="#a64d14e7ee334c85b02414d68877faab2">More...</a><br /></td></tr>
574
+ <tr class="separator:a64d14e7ee334c85b02414d68877faab2"><td class="memSeparator" colspan="2">&#160;</td></tr>
575
575
  </table><table class="memberdecls">
576
576
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
577
577
  Private Attributes</h2></td></tr>
@@ -1076,7 +1076,7 @@ Additional Inherited Members</h2></td></tr>
1076
1076
  <p>Destructor. </p>
1077
1077
 
1078
1078
  <p class="definition">Definition at line <a class="el" href="SVFIR_8h_source.html#l00145">145</a> of file <a class="el" href="SVFIR_8h_source.html">SVFIR.h</a>.</p>
1079
- <div class="fragment"><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a6834558be6987c91a3732154482c9567">destroy</a>();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a6834558be6987c91a3732154482c9567"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6834558be6987c91a3732154482c9567">SVF::SVFIR::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Clean up memory. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00565">SVFIR.cpp:565</a></div></div>
1079
+ <div class="fragment"><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a6834558be6987c91a3732154482c9567">destroy</a>();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a6834558be6987c91a3732154482c9567"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6834558be6987c91a3732154482c9567">SVF::SVFIR::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Clean up memory. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00566">SVFIR.cpp:566</a></div></div>
1080
1080
  </div><!-- fragment -->
1081
1081
  </div>
1082
1082
  </div>
@@ -1179,13 +1179,13 @@ Additional Inherited Members</h2></td></tr>
1179
1179
  <p>Add Copy edge. </p>
1180
1180
  <p>Add Compare edge </p>
1181
1181
 
1182
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00150">150</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
1183
- <div class="fragment"><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;{</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* op1Node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(op1);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* op2Node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(op2);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">hasLabeledEdge</a>(op1Node, dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVFStmt::BinaryOp</a>, op2Node))</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;BinaryOPStmt&gt;(edge);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; std::vector&lt;SVFVar*&gt; opnds = {op1Node, op2Node};</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>* binaryOP = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>(dstNode, opnds, opcode);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(binaryOP);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(op1Node,dstNode, binaryOP);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">return</span> binaryOP;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
1182
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00151">151</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
1183
+ <div class="fragment"><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* op1Node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(op1);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* op2Node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(op2);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">hasLabeledEdge</a>(op1Node, dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVFStmt::BinaryOp</a>, op2Node))</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;BinaryOPStmt&gt;(edge);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; std::vector&lt;SVFVar*&gt; opnds = {op1Node, op2Node};</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>* binaryOP = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>(dstNode, opnds, opcode);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(binaryOP);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(op1Node,dstNode, binaryOP);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">return</span> binaryOP;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
1184
1184
  <div class="ttc" id="classSVF_1_1IRGraph_html_a192e584440eb141e0d35d8fed671bbe0"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">SVF::IRGraph::hasLabeledEdge</a></div><div class="ttdeci">SVFStmt * hasLabeledEdge(SVFVar *src, SVFVar *dst, SVFStmt::PEDGEK kind, const ICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00087">IRGraph.cpp:87</a></div></div>
1185
1185
  <div class="ttc" id="classSVF_1_1IRGraph_html_a722f32d0a0a3bafdd97fc74819d2621e"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">SVF::IRGraph::addEdge</a></div><div class="ttdeci">bool addEdge(SVFVar *src, SVFVar *dst, SVFStmt *edge)</div><div class="ttdoc">Add an edge into the graph. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00044">IRGraph.cpp:44</a></div></div>
1186
1186
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVF::SVFStmt::BinaryOp</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
1187
1187
  <div class="ttc" id="classSVF_1_1SVFIR_html_a292b5a477c1f87777730b591c271e523"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">SVF::SVFIR::addToStmt2TypeMap</a></div><div class="ttdeci">void addToStmt2TypeMap(SVFStmt *edge)</div><div class="ttdoc">Map a SVFStatement type to a set of corresponding SVF statements. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00482">SVFIR.h:482</a></div></div>
1188
- <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#l00821">SVFStatements.h:821</a></div></div>
1188
+ <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>
1189
1189
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::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>
1190
1190
  <div class="ttc" id="classSVF_1_1SVFStmt_html"><div class="ttname"><a href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00047">SVFStatements.h:47</a></div></div>
1191
1191
  </div><!-- fragment -->
@@ -1218,8 +1218,8 @@ Additional Inherited Members</h2></td></tr>
1218
1218
  <p>Set a pointer points-to black hole (e.g. int2ptr) </p>
1219
1219
  <p>Add blackhole/constant edge </p>
1220
1220
 
1221
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00279">279</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
1222
- <div class="fragment"><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;{</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ad2d3db3e407a53956a5a59cc24eb8d40">Options::HandBlackHole</a>)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a8436a7eede7b5ff5d9b80a0c951ea729">addAddrStmt</a>(<a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3ce34b9fcb651689bce44ab48fbcdff0">getBlackHoleNode</a>(), node);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa54b93ebf36944b548aaa74dbf8a144f">addCopyStmt</a>(<a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>(), node);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;}</div><div class="ttc" id="classSVF_1_1IRGraph_html_a3ce34b9fcb651689bce44ab48fbcdff0"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a3ce34b9fcb651689bce44ab48fbcdff0">SVF::IRGraph::getBlackHoleNode</a></div><div class="ttdeci">NodeID getBlackHoleNode() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00144">IRGraph.h:144</a></div></div>
1221
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00280">280</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
1222
+ <div class="fragment"><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;{</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ad2d3db3e407a53956a5a59cc24eb8d40">Options::HandBlackHole</a>)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a8436a7eede7b5ff5d9b80a0c951ea729">addAddrStmt</a>(<a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3ce34b9fcb651689bce44ab48fbcdff0">getBlackHoleNode</a>(), node);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa54b93ebf36944b548aaa74dbf8a144f">addCopyStmt</a>(<a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>(), node);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;}</div><div class="ttc" id="classSVF_1_1IRGraph_html_a3ce34b9fcb651689bce44ab48fbcdff0"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a3ce34b9fcb651689bce44ab48fbcdff0">SVF::IRGraph::getBlackHoleNode</a></div><div class="ttdeci">NodeID getBlackHoleNode() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00144">IRGraph.h:144</a></div></div>
1223
1223
  <div class="ttc" id="classSVF_1_1SVFIR_html_aaf86146b5e765d1f278b6d812bf913f5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">SVF::SVFIR::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">Singleton pattern here to enable instance of SVFIR can only be created once. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00087">SVFIR.h:87</a></div></div>
1224
1224
  <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>
1225
1225
  <div class="ttc" id="classSVF_1_1Options_html_ad2d3db3e407a53956a5a59cc24eb8d40"><div class="ttname"><a href="classSVF_1_1Options.html#ad2d3db3e407a53956a5a59cc24eb8d40">SVF::Options::HandBlackHole</a></div><div class="ttdeci">static llvm::cl::opt&lt; bool &gt; HandBlackHole</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00112">Options.h:112</a></div></div>
@@ -1329,11 +1329,11 @@ Additional Inherited Members</h2></td></tr>
1329
1329
 
1330
1330
  <p>Add <a class="el" href="classSVF_1_1BranchStmt.html">BranchStmt</a>. </p>
1331
1331
 
1332
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00188">188</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
1333
- <div class="fragment"><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;{</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* brNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(br);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* condNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(cond);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#abe0ab797a3da420e4d2f9136d64fb407">hasNonlabeledEdge</a>(condNode,brNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">SVFStmt::Branch</a>))</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;BranchStmt&gt;(edge);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>* branch = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>(brNode, condNode, succs);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(branch);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(condNode,brNode, branch);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">return</span> branch;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
1332
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00189">189</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
1333
+ <div class="fragment"><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;{</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* brNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(br);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* condNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(cond);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#abe0ab797a3da420e4d2f9136d64fb407">hasNonlabeledEdge</a>(condNode,brNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">SVFStmt::Branch</a>))</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;BranchStmt&gt;(edge);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>* branch = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>(brNode, condNode, succs);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(branch);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(condNode,brNode, branch);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">return</span> branch;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
1334
1334
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad52703e3ec09b6a4f565e5d82279b6a3">SVF::SVFStmt::Branch</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
1335
1335
  <div class="ttc" id="classSVF_1_1IRGraph_html_a722f32d0a0a3bafdd97fc74819d2621e"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">SVF::IRGraph::addEdge</a></div><div class="ttdeci">bool addEdge(SVFVar *src, SVFVar *dst, SVFStmt *edge)</div><div class="ttdoc">Add an edge into the graph. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00044">IRGraph.cpp:44</a></div></div>
1336
- <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#l00920">SVFStatements.h:920</a></div></div>
1336
+ <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>
1337
1337
  <div class="ttc" id="classSVF_1_1SVFIR_html_a292b5a477c1f87777730b591c271e523"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">SVF::SVFIR::addToStmt2TypeMap</a></div><div class="ttdeci">void addToStmt2TypeMap(SVFStmt *edge)</div><div class="ttdoc">Map a SVFStatement type to a set of corresponding SVF statements. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00482">SVFIR.h:482</a></div></div>
1338
1338
  <div class="ttc" id="classSVF_1_1IRGraph_html_abe0ab797a3da420e4d2f9136d64fb407"><div class="ttname"><a href="classSVF_1_1IRGraph.html#abe0ab797a3da420e4d2f9136d64fb407">SVF::IRGraph::hasNonlabeledEdge</a></div><div class="ttdeci">SVFStmt * hasNonlabeledEdge(SVFVar *src, SVFVar *dst, SVFStmt::PEDGEK kind)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00059">IRGraph.cpp:59</a></div></div>
1339
1339
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::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>
@@ -1341,8 +1341,8 @@ Additional Inherited Members</h2></td></tr>
1341
1341
  </div><!-- fragment -->
1342
1342
  </div>
1343
1343
  </div>
1344
- <a id="a2244c6180cede066186d9f7098bf9325"></a>
1345
- <h2 class="memtitle"><span class="permalink"><a href="#a2244c6180cede066186d9f7098bf9325">&#9670;&nbsp;</a></span>addCallPE()</h2>
1344
+ <a id="a574bd5c9f11681c70db29c25f25a4cba"></a>
1345
+ <h2 class="memtitle"><span class="permalink"><a href="#a574bd5c9f11681c70db29c25f25a4cba">&#9670;&nbsp;</a></span>addCallPE()</h2>
1346
1346
 
1347
1347
  <div class="memitem">
1348
1348
  <div class="memproto">
@@ -1366,7 +1366,13 @@ Additional Inherited Members</h2></td></tr>
1366
1366
  <td class="paramkey"></td>
1367
1367
  <td></td>
1368
1368
  <td class="paramtype">const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *&#160;</td>
1369
- <td class="paramname"><em>cs</em>&#160;</td>
1369
+ <td class="paramname"><em>cs</em>, </td>
1370
+ </tr>
1371
+ <tr>
1372
+ <td class="paramkey"></td>
1373
+ <td></td>
1374
+ <td class="paramtype">const <a class="el" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a> *&#160;</td>
1375
+ <td class="paramname"><em>entry</em>&#160;</td>
1370
1376
  </tr>
1371
1377
  <tr>
1372
1378
  <td></td>
@@ -1384,8 +1390,8 @@ Additional Inherited Members</h2></td></tr>
1384
1390
  <p>Add Call edge. </p>
1385
1391
  <p>Add Call edge </p>
1386
1392
 
1387
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00243">243</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
1388
- <div class="fragment"><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;{</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* srcNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a>, cs))</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CallPE&gt;(edge);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* callPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>(srcNode, dstNode, cs);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(callPE);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(srcNode,dstNode, callPE);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> callPE;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVF::SVFStmt::Call</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
1393
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00244">244</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
1394
+ <div class="fragment"><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;{</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* srcNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a>, cs))</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CallPE&gt;(edge);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* callPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>(srcNode, dstNode, cs,entry);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(callPE);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(srcNode,dstNode, callPE);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">return</span> callPE;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVF::SVFStmt::Call</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
1389
1395
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
1390
1396
  <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>
1391
1397
  <div class="ttc" id="classSVF_1_1IRGraph_html_a192e584440eb141e0d35d8fed671bbe0"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">SVF::IRGraph::hasLabeledEdge</a></div><div class="ttdeci">SVFStmt * hasLabeledEdge(SVFVar *src, SVFVar *dst, SVFStmt::PEDGEK kind, const ICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00087">IRGraph.cpp:87</a></div></div>
@@ -1558,12 +1564,12 @@ Additional Inherited Members</h2></td></tr>
1558
1564
  <p>Add Copy edge. </p>
1559
1565
  <p>Add Compare edge </p>
1560
1566
 
1561
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00129">129</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
1562
- <div class="fragment"><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; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* op1Node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(op1);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* op2Node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(op2);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">hasLabeledEdge</a>(op1Node, dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVFStmt::Cmp</a>, op2Node))</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CmpStmt&gt;(edge);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; std::vector&lt;SVFVar*&gt; opnds = {op1Node, op2Node};</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>* cmp = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>(dstNode, opnds, predicate);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(cmp);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(op1Node, dstNode, cmp);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">return</span> cmp;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVF::SVFStmt::Cmp</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
1567
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00130">130</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
1568
+ <div class="fragment"><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;{</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* op1Node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(op1);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* op2Node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(op2);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">hasLabeledEdge</a>(op1Node, dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVFStmt::Cmp</a>, op2Node))</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CmpStmt&gt;(edge);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; std::vector&lt;SVFVar*&gt; opnds = {op1Node, op2Node};</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>* cmp = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>(dstNode, opnds, predicate);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(cmp);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(op1Node, dstNode, cmp);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">return</span> cmp;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a610d6662d1814cffbf23db29e7e620c0">SVF::SVFStmt::Cmp</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
1563
1569
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
1564
1570
  <div class="ttc" id="classSVF_1_1IRGraph_html_a192e584440eb141e0d35d8fed671bbe0"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">SVF::IRGraph::hasLabeledEdge</a></div><div class="ttdeci">SVFStmt * hasLabeledEdge(SVFVar *src, SVFVar *dst, SVFStmt::PEDGEK kind, const ICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00087">IRGraph.cpp:87</a></div></div>
1565
1571
  <div class="ttc" id="classSVF_1_1IRGraph_html_a722f32d0a0a3bafdd97fc74819d2621e"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">SVF::IRGraph::addEdge</a></div><div class="ttdeci">bool addEdge(SVFVar *src, SVFVar *dst, SVFStmt *edge)</div><div class="ttdoc">Add an edge into the graph. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00044">IRGraph.cpp:44</a></div></div>
1566
- <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#l00775">SVFStatements.h:775</a></div></div>
1572
+ <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>
1567
1573
  <div class="ttc" id="classSVF_1_1SVFIR_html_a292b5a477c1f87777730b591c271e523"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">SVF::SVFIR::addToStmt2TypeMap</a></div><div class="ttdeci">void addToStmt2TypeMap(SVFStmt *edge)</div><div class="ttdoc">Map a SVFStatement type to a set of corresponding SVF statements. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00482">SVFIR.h:482</a></div></div>
1568
1574
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::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>
1569
1575
  <div class="ttc" id="classSVF_1_1SVFStmt_html"><div class="ttname"><a href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00047">SVFStatements.h:47</a></div></div>
@@ -1846,8 +1852,8 @@ Additional Inherited Members</h2></td></tr>
1846
1852
  <p>Add a field-insensitive node, this method can only invoked by getFIGepObjNode. </p>
1847
1853
  <p>Add a field-insensitive node, this method can only invoked by getFIGepObjNode </p>
1848
1854
 
1849
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00467">467</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
1850
- <div class="fragment"><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;{</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="comment">//assert(findPAGNode(i) == false &amp;&amp; &quot;this node should not be created before&quot;);</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>[base].set(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>());</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>(), obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>(), obj);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">addObjNode</a>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>(), node, obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>());</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_a3c014227661d8976714772205611c252"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">SVF::SVFIR::memToFieldsMap</a></div><div class="ttdeci">MemObjToFieldsMap memToFieldsMap</div><div class="ttdoc">Map a mem object id to all its fields. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00080">SVFIR.h:80</a></div></div>
1855
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00468">468</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
1856
+ <div class="fragment"><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;{</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="comment">//assert(findPAGNode(i) == false &amp;&amp; &quot;this node should not be created before&quot;);</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>[base].set(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>());</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>(), obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>(), obj);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">addObjNode</a>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>(), node, obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>());</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_a3c014227661d8976714772205611c252"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">SVF::SVFIR::memToFieldsMap</a></div><div class="ttdeci">MemObjToFieldsMap memToFieldsMap</div><div class="ttdoc">Map a mem object id to all its fields. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00080">SVFIR.h:80</a></div></div>
1851
1857
  <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>
1852
1858
  <div class="ttc" id="classSVF_1_1SVFIR_html_a83bc8ecf4c5d10af10af3c8c44b9882d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">SVF::SVFIR::addObjNode</a></div><div class="ttdeci">NodeID addObjNode(const Value *val, NodeID i)</div><div class="ttdoc">Add a memory obj node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00536">SVFIR.h:536</a></div></div>
1853
1859
  <div class="ttc" id="classSVF_1_1FIObjVar_html"><div class="ttname"><a href="classSVF_1_1FIObjVar.html">SVF::FIObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00541">SVFVariables.h:541</a></div></div>
@@ -1982,8 +1988,8 @@ Additional Inherited Members</h2></td></tr>
1982
1988
  <p>Add a field obj node, this method can only invoked by getGepObjVar. </p>
1983
1989
  <p>Add a field obj node, this method can only invoked by getGepObjVar </p>
1984
1990
 
1985
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00450">450</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
1986
- <div class="fragment"><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;{</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="comment">//assert(findPAGNode(i) == false &amp;&amp; &quot;this node should not be created before&quot;);</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0==<a class="code" href="classSVF_1_1SVFIR.html#a148b51118eeba8117e033fea84b56be8">GepObjVarMap</a>.count(std::make_pair(base, ls))</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; &amp;&amp; <span class="stringliteral">&quot;this node should not be created before&quot;</span>);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepId = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#abaff066537f06c4891c199ebfc9624e3">allocateGepObjectId</a>(base, ls.<a class="code" href="classSVF_1_1LocationSet.html#ab987c41ffdae931d941f89d03ed09146">accumulateConstantFieldIdx</a>(), <a class="code" href="classSVF_1_1StInfo.html#ad6e599717952f8ccc2771cd72254b6b2">StInfo::getMaxFieldLimit</a>());</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a148b51118eeba8117e033fea84b56be8">GepObjVarMap</a>[std::make_pair(base, ls)] = gepId;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a>(obj, gepId, ls);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>[base].set(gepId);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">addObjNode</a>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>(), node, gepId);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_a3c014227661d8976714772205611c252"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">SVF::SVFIR::memToFieldsMap</a></div><div class="ttdeci">MemObjToFieldsMap memToFieldsMap</div><div class="ttdoc">Map a mem object id to all its fields. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00080">SVFIR.h:80</a></div></div>
1991
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00451">451</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
1992
+ <div class="fragment"><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;{</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="comment">//assert(findPAGNode(i) == false &amp;&amp; &quot;this node should not be created before&quot;);</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0==<a class="code" href="classSVF_1_1SVFIR.html#a148b51118eeba8117e033fea84b56be8">GepObjVarMap</a>.count(std::make_pair(base, ls))</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; &amp;&amp; <span class="stringliteral">&quot;this node should not be created before&quot;</span>);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepId = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#abaff066537f06c4891c199ebfc9624e3">allocateGepObjectId</a>(base, ls.<a class="code" href="classSVF_1_1LocationSet.html#ab987c41ffdae931d941f89d03ed09146">accumulateConstantFieldIdx</a>(), <a class="code" href="classSVF_1_1StInfo.html#ad6e599717952f8ccc2771cd72254b6b2">StInfo::getMaxFieldLimit</a>());</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a148b51118eeba8117e033fea84b56be8">GepObjVarMap</a>[std::make_pair(base, ls)] = gepId;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a>(obj, gepId, ls);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>[base].set(gepId);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">addObjNode</a>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>(), node, gepId);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_a3c014227661d8976714772205611c252"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">SVF::SVFIR::memToFieldsMap</a></div><div class="ttdeci">MemObjToFieldsMap memToFieldsMap</div><div class="ttdoc">Map a mem object id to all its fields. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00080">SVFIR.h:80</a></div></div>
1987
1993
  <div class="ttc" id="classSVF_1_1LocationSet_html_ab987c41ffdae931d941f89d03ed09146"><div class="ttname"><a href="classSVF_1_1LocationSet.html#ab987c41ffdae931d941f89d03ed09146">SVF::LocationSet::accumulateConstantFieldIdx</a></div><div class="ttdeci">s64_t accumulateConstantFieldIdx() const</div><div class="ttdoc">Get methods. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00120">LocationSet.h:120</a></div></div>
1988
1994
  <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>
1989
1995
  <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>
@@ -2048,11 +2054,11 @@ Additional Inherited Members</h2></td></tr>
2048
2054
  <p>Add Offset(Gep) edge Find the base node id of src and connect base node to dst node Create gep offset: (offset + baseOff &lt;nested struct="" gep="" size&gt;=""&gt;) </p>
2049
2055
  <p>Since the offset from base to src is variant, the new gep edge being created is also a Variant <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> edge. </p>
2050
2056
 
2051
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00329">329</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2052
- <div class="fragment"><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;{</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">if</span> (!constGep || node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a71e4fd7a1271a17e971ed90044e6da24">hasIncomingVariantGepEdge</a>())</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a996574dbe5d5d79b1dc24cf5dc4145de">addVariantGepStmt</a>(src, dst, ls);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">else</span></div><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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a460011093c6426b98236c8381b1df0a0">addNormalGepStmt</a>(src, dst, ls);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
2053
- <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>
2057
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00330">330</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2058
+ <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;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span> (!constGep || node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a71e4fd7a1271a17e971ed90044e6da24">hasIncomingVariantGepEdge</a>())</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a996574dbe5d5d79b1dc24cf5dc4145de">addVariantGepStmt</a>(src, dst, ls);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a460011093c6426b98236c8381b1df0a0">addNormalGepStmt</a>(src, dst, ls);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
2059
+ <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>
2054
2060
  <div class="ttc" id="classSVF_1_1SVFVar_html_a71e4fd7a1271a17e971ed90044e6da24"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a71e4fd7a1271a17e971ed90044e6da24">SVF::SVFVar::hasIncomingVariantGepEdge</a></div><div class="ttdeci">bool hasIncomingVariantGepEdge() const</div><div class="ttdoc">Has incoming VariantGepEdges. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00242">SVFVariables.h:242</a></div></div>
2055
- <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>
2061
+ <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>
2056
2062
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::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>
2057
2063
  </div><!-- fragment -->
2058
2064
  </div>
@@ -2118,10 +2124,10 @@ Additional Inherited Members</h2></td></tr>
2118
2124
  <p>Add a temp field value node, this method can only invoked by getGepValVar. </p>
2119
2125
  <p>Add a temp field value node, this method can only invoked by getGepValVar due to constaint expression, curInst is used to distinguish different instructions (e.g., memorycpy) when creating <a class="el" href="classSVF_1_1GepValVar.html">GepValVar</a>. </p>
2120
2126
 
2121
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00390">390</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2122
- <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; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">getBaseValVar</a>(<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(gepVal));</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="comment">//assert(findPAGNode(i) == false &amp;&amp; &quot;this node should not be created before&quot;);</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0==<a class="code" href="classSVF_1_1SVFIR.html#ad7bbe1abea55ed03c9b6c81891c0bd67">GepValObjMap</a>[curInst].count(std::make_pair(base, ls))</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; &amp;&amp; <span class="stringliteral">&quot;this node should not be created before&quot;</span>);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#ad7bbe1abea55ed03c9b6c81891c0bd67">GepValObjMap</a>[curInst][std::make_pair(base, ls)] = i;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <a class="code" href="classSVF_1_1GepValVar.html">GepValVar</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GepValVar.html">GepValVar</a>(gepVal, i, ls, type, fieldidx);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a93bc14960cdd4eb345c64e9b79757ccf">addValNode</a>(gepVal, node, i);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;}</div><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>
2127
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00391">391</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2128
+ <div class="fragment"><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;{</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">getBaseValVar</a>(<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(gepVal));</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="comment">//assert(findPAGNode(i) == false &amp;&amp; &quot;this node should not be created before&quot;);</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0==<a class="code" href="classSVF_1_1SVFIR.html#ad7bbe1abea55ed03c9b6c81891c0bd67">GepValObjMap</a>[curInst].count(std::make_pair(base, ls))</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; &amp;&amp; <span class="stringliteral">&quot;this node should not be created before&quot;</span>);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#ad7bbe1abea55ed03c9b6c81891c0bd67">GepValObjMap</a>[curInst][std::make_pair(base, ls)] = i;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="classSVF_1_1GepValVar.html">GepValVar</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GepValVar.html">GepValVar</a>(gepVal, i, ls, type, fieldidx);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a93bc14960cdd4eb345c64e9b79757ccf">addValNode</a>(gepVal, node, i);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;}</div><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>
2123
2129
  <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>
2124
- <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>
2130
+ <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>
2125
2131
  <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>
2126
2132
  <div class="ttc" id="classSVF_1_1SVFIR_html_a93bc14960cdd4eb345c64e9b79757ccf"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a93bc14960cdd4eb345c64e9b79757ccf">SVF::SVFIR::addValNode</a></div><div class="ttdeci">NodeID addValNode(const Value *val, NodeID i)</div><div class="ttdoc">add node into SVFIR </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00530">SVFIR.h:530</a></div></div>
2127
2133
  <div class="ttc" id="classSVF_1_1GepValVar_html"><div class="ttname"><a href="classSVF_1_1GepValVar.html">SVF::GepValVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00392">SVFVariables.h:392</a></div></div>
@@ -2240,8 +2246,8 @@ Additional Inherited Members</h2></td></tr>
2240
2246
  <p>Add Load edge. </p>
2241
2247
  <p>Add Load edge </p>
2242
2248
 
2243
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00206">206</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2244
- <div class="fragment"><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;{</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* srcNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#abe0ab797a3da420e4d2f9136d64fb407">hasNonlabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>))</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;LoadStmt&gt;(edge);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* loadPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>(srcNode, dstNode);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(loadPE);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(srcNode,dstNode, loadPE);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">return</span> loadPE;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVF::SVFStmt::Load</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
2249
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00207">207</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2250
+ <div class="fragment"><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;{</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* srcNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#abe0ab797a3da420e4d2f9136d64fb407">hasNonlabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>))</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;LoadStmt&gt;(edge);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* loadPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>(srcNode, dstNode);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(loadPE);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(srcNode,dstNode, loadPE);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> loadPE;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVF::SVFStmt::Load</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
2245
2251
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
2246
2252
  <div class="ttc" id="classSVF_1_1IRGraph_html_a722f32d0a0a3bafdd97fc74819d2621e"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">SVF::IRGraph::addEdge</a></div><div class="ttdeci">bool addEdge(SVFVar *src, SVFVar *dst, SVFStmt *edge)</div><div class="ttdoc">Add an edge into the graph. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00044">IRGraph.cpp:44</a></div></div>
2247
2253
  <div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00373">SVFStatements.h:373</a></div></div>
@@ -2295,11 +2301,11 @@ Additional Inherited Members</h2></td></tr>
2295
2301
  <p>Add Offset(Gep) edge. </p>
2296
2302
  <p>Add normal (Gep) edge </p>
2297
2303
 
2298
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00348">348</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2299
- <div class="fragment"><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;{</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; baseLS = <a class="code" href="classSVF_1_1SVFIR.html#a8b36d077c30fb2830a253ded82413c2d">getLocationSetFromBaseNode</a>(src);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* baseNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">getBaseValVar</a>(src));</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#abe0ab797a3da420e4d2f9136d64fb407">hasNonlabeledEdge</a>(baseNode, dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>))</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;GepStmt&gt;(edge);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gepPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>(baseNode, dstNode, baseLS+ls);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(gepPE);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(baseNode, dstNode, gepPE);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">return</span> gepPE;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVF::SVFStmt::Gep</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
2304
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00349">349</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2305
+ <div class="fragment"><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;{</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; baseLS = <a class="code" href="classSVF_1_1SVFIR.html#a8b36d077c30fb2830a253ded82413c2d">getLocationSetFromBaseNode</a>(src);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* baseNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">getBaseValVar</a>(src));</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#abe0ab797a3da420e4d2f9136d64fb407">hasNonlabeledEdge</a>(baseNode, dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>))</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;GepStmt&gt;(edge);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gepPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>(baseNode, dstNode, baseLS+ls);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(gepPE);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(baseNode, dstNode, gepPE);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">return</span> gepPE;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVF::SVFStmt::Gep</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
2300
2306
  <div class="ttc" id="classSVF_1_1GepStmt_html"><div class="ttname"><a href="classSVF_1_1GepStmt.html">SVF::GepStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00409">SVFStatements.h:409</a></div></div>
2301
- <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>
2302
- <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>
2307
+ <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>
2308
+ <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>
2303
2309
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
2304
2310
  <div class="ttc" id="classSVF_1_1IRGraph_html_a722f32d0a0a3bafdd97fc74819d2621e"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">SVF::IRGraph::addEdge</a></div><div class="ttdeci">bool addEdge(SVFVar *src, SVFVar *dst, SVFStmt *edge)</div><div class="ttdoc">Add an edge into the graph. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00044">IRGraph.cpp:44</a></div></div>
2305
2311
  <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>
@@ -2349,7 +2355,7 @@ Additional Inherited Members</h2></td></tr>
2349
2355
  <p class="definition">Definition at line <a class="el" href="SVFIR_8h_source.html#l00536">536</a> of file <a class="el" href="SVFIR_8h_source.html">SVFIR.h</a>.</p>
2350
2356
  <div class="fragment"><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keyword">const</span> MemObj* mem = <a class="code" href="classSVF_1_1IRGraph.html#a4f5792216c6f38c32dac5074862ffc50">getMemObj</a>(val);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(((mem-&gt;getId() == i)) &amp;&amp; <span class="stringliteral">&quot;not same object id?&quot;</span>);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a06465449e58e14bfb1c3eee2c97d3242">addFIObjNode</a>(mem);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
2351
2357
  <div class="ttc" id="classSVF_1_1IRGraph_html_a4f5792216c6f38c32dac5074862ffc50"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a4f5792216c6f38c32dac5074862ffc50">SVF::IRGraph::getMemObj</a></div><div class="ttdeci">const MemObj * getMemObj(const Value *val) const</div><div class="ttdoc">get MemObj according to LLVM value </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00089">IRGraph.h:89</a></div></div>
2352
- <div class="ttc" id="classSVF_1_1SVFIR_html_a06465449e58e14bfb1c3eee2c97d3242"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a06465449e58e14bfb1c3eee2c97d3242">SVF::SVFIR::addFIObjNode</a></div><div class="ttdeci">NodeID addFIObjNode(const MemObj *obj)</div><div class="ttdoc">Add a field-insensitive node, this method can only invoked by getFIGepObjNode. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00467">SVFIR.cpp:467</a></div></div>
2358
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a06465449e58e14bfb1c3eee2c97d3242"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a06465449e58e14bfb1c3eee2c97d3242">SVF::SVFIR::addFIObjNode</a></div><div class="ttdeci">NodeID addFIObjNode(const MemObj *obj)</div><div class="ttdoc">Add a field-insensitive node, this method can only invoked by getFIGepObjNode. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00468">SVFIR.cpp:468</a></div></div>
2353
2359
  </div><!-- fragment -->
2354
2360
  </div>
2355
2361
  </div>
@@ -2444,12 +2450,13 @@ Additional Inherited Members</h2></td></tr>
2444
2450
 
2445
2451
  <p>Add phi node information. </p>
2446
2452
  <p>Add Phi statement </p>
2453
+ <p>return null if we already added this <a class="el" href="classSVF_1_1PhiStmt.html">PhiStmt</a> </p>
2447
2454
 
2448
2455
  <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00087">87</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2449
- <div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* opNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(opnd);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* resNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(res);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; PHINodeMap::iterator it = <a class="code" href="classSVF_1_1SVFIR.html#a41abf665421dbfaef508b1eba0c91fb9">phiNodeMap</a>.find(resNode);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span>(it == <a class="code" href="classSVF_1_1SVFIR.html#a41abf665421dbfaef508b1eba0c91fb9">phiNodeMap</a>.end()){</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>* phi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>(resNode, {opNode}, {pred});</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(phi);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(opNode, resNode, phi);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a41abf665421dbfaef508b1eba0c91fb9">phiNodeMap</a>[resNode] = phi;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> phi;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; it-&gt;second-&gt;<a class="code" href="classSVF_1_1PhiStmt.html#ac3541a25f83ce8465d7b35010ba50b37">addOpVar</a>(opNode,pred);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</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;}</div><div class="ttc" id="classSVF_1_1PhiStmt_html_ac3541a25f83ce8465d7b35010ba50b37"><div class="ttname"><a href="classSVF_1_1PhiStmt.html#ac3541a25f83ce8465d7b35010ba50b37">SVF::PhiStmt::addOpVar</a></div><div class="ttdeci">void addOpVar(SVFVar *op, const ICFGNode *inode)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00704">SVFStatements.h:704</a></div></div>
2456
+ <div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* opNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(opnd);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* resNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(res);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; PHINodeMap::iterator it = <a class="code" href="classSVF_1_1SVFIR.html#a41abf665421dbfaef508b1eba0c91fb9">phiNodeMap</a>.find(resNode);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span>(it == <a class="code" href="classSVF_1_1SVFIR.html#a41abf665421dbfaef508b1eba0c91fb9">phiNodeMap</a>.end()){</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>* phi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>(resNode, {opNode}, {pred});</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(phi);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(opNode, resNode, phi);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a41abf665421dbfaef508b1eba0c91fb9">phiNodeMap</a>[resNode] = phi;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> phi;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; it-&gt;second-&gt;<a class="code" href="classSVF_1_1PhiStmt.html#ac3541a25f83ce8465d7b35010ba50b37">addOpVar</a>(opNode,pred);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;}</div><div class="ttc" id="classSVF_1_1PhiStmt_html_ac3541a25f83ce8465d7b35010ba50b37"><div class="ttname"><a href="classSVF_1_1PhiStmt.html#ac3541a25f83ce8465d7b35010ba50b37">SVF::PhiStmt::addOpVar</a></div><div class="ttdeci">void addOpVar(SVFVar *op, const ICFGNode *inode)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00705">SVFStatements.h:705</a></div></div>
2450
2457
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
2451
2458
  <div class="ttc" id="classSVF_1_1IRGraph_html_a722f32d0a0a3bafdd97fc74819d2621e"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">SVF::IRGraph::addEdge</a></div><div class="ttdeci">bool addEdge(SVFVar *src, SVFVar *dst, SVFStmt *edge)</div><div class="ttdoc">Add an edge into the graph. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00044">IRGraph.cpp:44</a></div></div>
2452
- <div class="ttc" id="classSVF_1_1PhiStmt_html"><div class="ttname"><a href="classSVF_1_1PhiStmt.html">SVF::PhiStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00667">SVFStatements.h:667</a></div></div>
2459
+ <div class="ttc" id="classSVF_1_1PhiStmt_html"><div class="ttname"><a href="classSVF_1_1PhiStmt.html">SVF::PhiStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00668">SVFStatements.h:668</a></div></div>
2453
2460
  <div class="ttc" id="classSVF_1_1SVFIR_html_a292b5a477c1f87777730b591c271e523"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">SVF::SVFIR::addToStmt2TypeMap</a></div><div class="ttdeci">void addToStmt2TypeMap(SVFStmt *edge)</div><div class="ttdoc">Map a SVFStatement type to a set of corresponding SVF statements. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00482">SVFIR.h:482</a></div></div>
2454
2461
  <div class="ttc" id="classSVF_1_1SVFIR_html_a41abf665421dbfaef508b1eba0c91fb9"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a41abf665421dbfaef508b1eba0c91fb9">SVF::SVFIR::phiNodeMap</a></div><div class="ttdeci">PHINodeMap phiNodeMap</div><div class="ttdoc">A set of phi copy edges. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00082">SVFIR.h:82</a></div></div>
2455
2462
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::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>
@@ -2544,8 +2551,8 @@ Additional Inherited Members</h2></td></tr>
2544
2551
  </div><!-- fragment -->
2545
2552
  </div>
2546
2553
  </div>
2547
- <a id="af7edf234425e890d1cf3ff812000206d"></a>
2548
- <h2 class="memtitle"><span class="permalink"><a href="#af7edf234425e890d1cf3ff812000206d">&#9670;&nbsp;</a></span>addRetPE()</h2>
2554
+ <a id="a1791652f578b6ab8aacb4d6e7c7fd05f"></a>
2555
+ <h2 class="memtitle"><span class="permalink"><a href="#a1791652f578b6ab8aacb4d6e7c7fd05f">&#9670;&nbsp;</a></span>addRetPE()</h2>
2549
2556
 
2550
2557
  <div class="memitem">
2551
2558
  <div class="memproto">
@@ -2569,7 +2576,13 @@ Additional Inherited Members</h2></td></tr>
2569
2576
  <td class="paramkey"></td>
2570
2577
  <td></td>
2571
2578
  <td class="paramtype">const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *&#160;</td>
2572
- <td class="paramname"><em>cs</em>&#160;</td>
2579
+ <td class="paramname"><em>cs</em>, </td>
2580
+ </tr>
2581
+ <tr>
2582
+ <td class="paramkey"></td>
2583
+ <td></td>
2584
+ <td class="paramtype">const <a class="el" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a> *&#160;</td>
2585
+ <td class="paramname"><em>exit</em>&#160;</td>
2573
2586
  </tr>
2574
2587
  <tr>
2575
2588
  <td></td>
@@ -2587,8 +2600,8 @@ Additional Inherited Members</h2></td></tr>
2587
2600
  <p>Add Return edge. </p>
2588
2601
  <p>Add Return edge </p>
2589
2602
 
2590
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00261">261</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2591
- <div class="fragment"><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;{</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* srcNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a>, cs))</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;RetPE&gt;(edge);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* retPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>(srcNode, dstNode, cs);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(retPE);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(srcNode,dstNode, retPE);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span> retPE;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;}</div><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#l00529">SVFStatements.h:529</a></div></div>
2603
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00262">262</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2604
+ <div class="fragment"><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;{</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* srcNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a>, cs))</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;RetPE&gt;(edge);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* retPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>(srcNode, dstNode, cs, exit);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(retPE);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(srcNode,dstNode, retPE);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">return</span> retPE;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;}</div><div class="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>
2592
2605
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
2593
2606
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVF::SVFStmt::Ret</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
2594
2607
  <div class="ttc" id="classSVF_1_1IRGraph_html_a192e584440eb141e0d35d8fed671bbe0"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">SVF::IRGraph::hasLabeledEdge</a></div><div class="ttdeci">SVFStmt * hasLabeledEdge(SVFVar *src, SVFVar *dst, SVFStmt::PEDGEK kind, const ICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00087">IRGraph.cpp:87</a></div></div>
@@ -2648,13 +2661,13 @@ Additional Inherited Members</h2></td></tr>
2648
2661
  <p>Add <a class="el" href="classSVF_1_1SelectStmt.html">SelectStmt</a>. </p>
2649
2662
  <p>Add Phi statement </p>
2650
2663
 
2651
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00108">108</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2652
- <div class="fragment"><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="classSVF_1_1SVFVar.html">SVFVar</a>* op1Node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(op1);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* op2Node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(op2);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(res);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* condNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(cond);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">hasLabeledEdge</a>(op1Node, dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVFStmt::Select</a>, op2Node))</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;SelectStmt&gt;(edge);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; std::vector&lt;SVFVar*&gt; opnds = {op1Node, op2Node};</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>* select = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>(dstNode, opnds, condNode);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(select);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(op1Node, dstNode, select);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> select;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
2664
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00109">109</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2665
+ <div class="fragment"><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;{</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* op1Node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(op1);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* op2Node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(op2);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(res);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* condNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(cond);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">hasLabeledEdge</a>(op1Node, dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVFStmt::Select</a>, op2Node))</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;SelectStmt&gt;(edge);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">else</span></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; std::vector&lt;SVFVar*&gt; opnds = {op1Node, op2Node};</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>* select = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>(dstNode, opnds, condNode);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(select);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(op1Node, dstNode, select);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> select;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
2653
2666
  <div class="ttc" id="classSVF_1_1IRGraph_html_a192e584440eb141e0d35d8fed671bbe0"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">SVF::IRGraph::hasLabeledEdge</a></div><div class="ttdeci">SVFStmt * hasLabeledEdge(SVFVar *src, SVFVar *dst, SVFStmt::PEDGEK kind, const ICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00087">IRGraph.cpp:87</a></div></div>
2654
2667
  <div class="ttc" id="classSVF_1_1IRGraph_html_a722f32d0a0a3bafdd97fc74819d2621e"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">SVF::IRGraph::addEdge</a></div><div class="ttdeci">bool addEdge(SVFVar *src, SVFVar *dst, SVFStmt *edge)</div><div class="ttdoc">Add an edge into the graph. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00044">IRGraph.cpp:44</a></div></div>
2655
2668
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVF::SVFStmt::Select</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
2656
2669
  <div class="ttc" id="classSVF_1_1SVFIR_html_a292b5a477c1f87777730b591c271e523"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">SVF::SVFIR::addToStmt2TypeMap</a></div><div class="ttdeci">void addToStmt2TypeMap(SVFStmt *edge)</div><div class="ttdoc">Map a SVFStatement type to a set of corresponding SVF statements. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00482">SVFIR.h:482</a></div></div>
2657
- <div class="ttc" id="classSVF_1_1SelectStmt_html"><div class="ttname"><a href="classSVF_1_1SelectStmt.html">SVF::SelectStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00725">SVFStatements.h:725</a></div></div>
2670
+ <div class="ttc" id="classSVF_1_1SelectStmt_html"><div class="ttname"><a href="classSVF_1_1SelectStmt.html">SVF::SelectStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00726">SVFStatements.h:726</a></div></div>
2658
2671
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::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>
2659
2672
  <div class="ttc" id="classSVF_1_1SVFStmt_html"><div class="ttname"><a href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00047">SVFStatements.h:47</a></div></div>
2660
2673
  </div><!-- fragment -->
@@ -2703,8 +2716,8 @@ Additional Inherited Members</h2></td></tr>
2703
2716
  <p>Add Store edge. </p>
2704
2717
  <p>Add Store edge Note that two store instructions may share the same Store <a class="el" href="classSVF_1_1SVFStmt.html">SVFStmt</a> </p>
2705
2718
 
2706
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00225">225</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2707
- <div class="fragment"><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;{</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* srcNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>, curVal))</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;StoreStmt&gt;(edge);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* storePE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>(srcNode, dstNode, curVal);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(storePE);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(srcNode,dstNode, storePE);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> storePE;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
2719
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00226">226</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2720
+ <div class="fragment"><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;{</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* srcNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>, curVal))</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;StoreStmt&gt;(edge);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* storePE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>(srcNode, dstNode, curVal);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(storePE);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(srcNode,dstNode, storePE);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> storePE;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
2708
2721
  <div class="ttc" id="classSVF_1_1IRGraph_html_a192e584440eb141e0d35d8fed671bbe0"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">SVF::IRGraph::hasLabeledEdge</a></div><div class="ttdeci">SVFStmt * hasLabeledEdge(SVFVar *src, SVFVar *dst, SVFStmt::PEDGEK kind, const ICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00087">IRGraph.cpp:87</a></div></div>
2709
2722
  <div class="ttc" id="classSVF_1_1IRGraph_html_a722f32d0a0a3bafdd97fc74819d2621e"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">SVF::IRGraph::addEdge</a></div><div class="ttdeci">bool addEdge(SVFVar *src, SVFVar *dst, SVFStmt *edge)</div><div class="ttdoc">Add an edge into the graph. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00044">IRGraph.cpp:44</a></div></div>
2710
2723
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVF::SVFStmt::Store</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
@@ -2715,8 +2728,8 @@ Additional Inherited Members</h2></td></tr>
2715
2728
  </div><!-- fragment -->
2716
2729
  </div>
2717
2730
  </div>
2718
- <a id="aa498f73f62e19f4f9f63e265938ce408"></a>
2719
- <h2 class="memtitle"><span class="permalink"><a href="#aa498f73f62e19f4f9f63e265938ce408">&#9670;&nbsp;</a></span>addThreadForkPE()</h2>
2731
+ <a id="a916d893cb852bbbd933e3e5349d5154b"></a>
2732
+ <h2 class="memtitle"><span class="permalink"><a href="#a916d893cb852bbbd933e3e5349d5154b">&#9670;&nbsp;</a></span>addThreadForkPE()</h2>
2720
2733
 
2721
2734
  <div class="memitem">
2722
2735
  <div class="memproto">
@@ -2740,7 +2753,13 @@ Additional Inherited Members</h2></td></tr>
2740
2753
  <td class="paramkey"></td>
2741
2754
  <td></td>
2742
2755
  <td class="paramtype">const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *&#160;</td>
2743
- <td class="paramname"><em>cs</em>&#160;</td>
2756
+ <td class="paramname"><em>cs</em>, </td>
2757
+ </tr>
2758
+ <tr>
2759
+ <td class="paramkey"></td>
2760
+ <td></td>
2761
+ <td class="paramtype">const <a class="el" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a> *&#160;</td>
2762
+ <td class="paramname"><em>entry</em>&#160;</td>
2744
2763
  </tr>
2745
2764
  <tr>
2746
2765
  <td></td>
@@ -2758,11 +2777,11 @@ Additional Inherited Members</h2></td></tr>
2758
2777
  <p>Add Thread fork edge for parameter passing. </p>
2759
2778
  <p>Add Thread fork edge for parameter passing from a spawner to its spawnees </p>
2760
2779
 
2761
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00290">290</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2762
- <div class="fragment"><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;{</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* srcNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>, cs))</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;TDForkPE&gt;(edge);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>* forkPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>(srcNode, dstNode, cs);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(forkPE);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(srcNode,dstNode, forkPE);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">return</span> forkPE;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
2780
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00291">291</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2781
+ <div class="fragment"><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;{</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* srcNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>, cs))</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;TDForkPE&gt;(edge);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>* forkPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>(srcNode, dstNode, cs, entry);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(forkPE);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(srcNode,dstNode, forkPE);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">return</span> forkPE;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
2763
2782
  <div class="ttc" id="classSVF_1_1IRGraph_html_a192e584440eb141e0d35d8fed671bbe0"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">SVF::IRGraph::hasLabeledEdge</a></div><div class="ttdeci">SVFStmt * hasLabeledEdge(SVFVar *src, SVFVar *dst, SVFStmt::PEDGEK kind, const ICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00087">IRGraph.cpp:87</a></div></div>
2764
2783
  <div class="ttc" id="classSVF_1_1IRGraph_html_a722f32d0a0a3bafdd97fc74819d2621e"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">SVF::IRGraph::addEdge</a></div><div class="ttdeci">bool addEdge(SVFVar *src, SVFVar *dst, SVFStmt *edge)</div><div class="ttdoc">Add an edge into the graph. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00044">IRGraph.cpp:44</a></div></div>
2765
- <div class="ttc" id="classSVF_1_1TDForkPE_html"><div class="ttname"><a href="classSVF_1_1TDForkPE.html">SVF::TDForkPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01000">SVFStatements.h:1000</a></div></div>
2784
+ <div class="ttc" id="classSVF_1_1TDForkPE_html"><div class="ttname"><a href="classSVF_1_1TDForkPE.html">SVF::TDForkPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01001">SVFStatements.h:1001</a></div></div>
2766
2785
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVF::SVFStmt::ThreadFork</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
2767
2786
  <div class="ttc" id="classSVF_1_1SVFIR_html_a292b5a477c1f87777730b591c271e523"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">SVF::SVFIR::addToStmt2TypeMap</a></div><div class="ttdeci">void addToStmt2TypeMap(SVFStmt *edge)</div><div class="ttdoc">Map a SVFStatement type to a set of corresponding SVF statements. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00482">SVFIR.h:482</a></div></div>
2768
2787
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::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>
@@ -2770,8 +2789,8 @@ Additional Inherited Members</h2></td></tr>
2770
2789
  </div><!-- fragment -->
2771
2790
  </div>
2772
2791
  </div>
2773
- <a id="ad50f150bb3bac77687b3d1210f21d2ed"></a>
2774
- <h2 class="memtitle"><span class="permalink"><a href="#ad50f150bb3bac77687b3d1210f21d2ed">&#9670;&nbsp;</a></span>addThreadJoinPE()</h2>
2792
+ <a id="a64d14e7ee334c85b02414d68877faab2"></a>
2793
+ <h2 class="memtitle"><span class="permalink"><a href="#a64d14e7ee334c85b02414d68877faab2">&#9670;&nbsp;</a></span>addThreadJoinPE()</h2>
2775
2794
 
2776
2795
  <div class="memitem">
2777
2796
  <div class="memproto">
@@ -2795,7 +2814,13 @@ Additional Inherited Members</h2></td></tr>
2795
2814
  <td class="paramkey"></td>
2796
2815
  <td></td>
2797
2816
  <td class="paramtype">const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *&#160;</td>
2798
- <td class="paramname"><em>cs</em>&#160;</td>
2817
+ <td class="paramname"><em>cs</em>, </td>
2818
+ </tr>
2819
+ <tr>
2820
+ <td class="paramkey"></td>
2821
+ <td></td>
2822
+ <td class="paramtype">const <a class="el" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a> *&#160;</td>
2823
+ <td class="paramname"><em>exit</em>&#160;</td>
2799
2824
  </tr>
2800
2825
  <tr>
2801
2826
  <td></td>
@@ -2813,9 +2838,9 @@ Additional Inherited Members</h2></td></tr>
2813
2838
  <p>Add Thread join edge for parameter passing. </p>
2814
2839
  <p>Add Thread fork edge for parameter passing from a spawnee back to its spawners </p>
2815
2840
 
2816
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00308">308</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2817
- <div class="fragment"><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;{</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* srcNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>, cs))</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;TDJoinPE&gt;(edge);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>* joinPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>(srcNode, dstNode, cs);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(joinPE);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(srcNode,dstNode, joinPE);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> joinPE;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
2818
- <div class="ttc" id="classSVF_1_1TDJoinPE_html"><div class="ttname"><a href="classSVF_1_1TDJoinPE.html">SVF::TDJoinPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01038">SVFStatements.h:1038</a></div></div>
2841
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00309">309</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2842
+ <div class="fragment"><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;{</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* srcNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>, cs))</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;TDJoinPE&gt;(edge);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>* joinPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>(srcNode, dstNode, cs, exit);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(joinPE);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(srcNode,dstNode, joinPE);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> joinPE;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
2843
+ <div class="ttc" id="classSVF_1_1TDJoinPE_html"><div class="ttname"><a href="classSVF_1_1TDJoinPE.html">SVF::TDJoinPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01039">SVFStatements.h:1039</a></div></div>
2819
2844
  <div class="ttc" id="classSVF_1_1IRGraph_html_a192e584440eb141e0d35d8fed671bbe0"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">SVF::IRGraph::hasLabeledEdge</a></div><div class="ttdeci">SVFStmt * hasLabeledEdge(SVFVar *src, SVFVar *dst, SVFStmt::PEDGEK kind, const ICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00087">IRGraph.cpp:87</a></div></div>
2820
2845
  <div class="ttc" id="classSVF_1_1IRGraph_html_a722f32d0a0a3bafdd97fc74819d2621e"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">SVF::IRGraph::addEdge</a></div><div class="ttdeci">bool addEdge(SVFVar *src, SVFVar *dst, SVFStmt *edge)</div><div class="ttdoc">Add an edge into the graph. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00044">IRGraph.cpp:44</a></div></div>
2821
2846
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVF::SVFStmt::ThreadJoin</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
@@ -2944,10 +2969,10 @@ Additional Inherited Members</h2></td></tr>
2944
2969
  <p>Add Unary edge. </p>
2945
2970
  <p>Add Unary edge </p>
2946
2971
 
2947
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00170">170</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2948
- <div class="fragment"><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;{</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* srcNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#abe0ab797a3da420e4d2f9136d64fb407">hasNonlabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">SVFStmt::UnaryOp</a>))</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;UnaryOPStmt&gt;(edge);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>* unaryOP = <span class="keyword">new</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>(srcNode, dstNode, opcode);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(unaryOP);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(srcNode,dstNode, unaryOP);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span> unaryOP;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">SVF::SVFStmt::UnaryOp</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
2972
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00171">171</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
2973
+ <div class="fragment"><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;{</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* srcNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#abe0ab797a3da420e4d2f9136d64fb407">hasNonlabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">SVFStmt::UnaryOp</a>))</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;UnaryOPStmt&gt;(edge);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>* unaryOP = <span class="keyword">new</span> <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>(srcNode, dstNode, opcode);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(unaryOP);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(srcNode,dstNode, unaryOP);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> unaryOP;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">SVF::SVFStmt::UnaryOp</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
2949
2974
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
2950
- <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#l00866">SVFStatements.h:866</a></div></div>
2975
+ <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>
2951
2976
  <div class="ttc" id="classSVF_1_1IRGraph_html_a722f32d0a0a3bafdd97fc74819d2621e"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">SVF::IRGraph::addEdge</a></div><div class="ttdeci">bool addEdge(SVFVar *src, SVFVar *dst, SVFStmt *edge)</div><div class="ttdoc">Add an edge into the graph. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00044">IRGraph.cpp:44</a></div></div>
2952
2977
  <div class="ttc" id="classSVF_1_1SVFIR_html_a292b5a477c1f87777730b591c271e523"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">SVF::SVFIR::addToStmt2TypeMap</a></div><div class="ttdeci">void addToStmt2TypeMap(SVFStmt *edge)</div><div class="ttdoc">Map a SVFStatement type to a set of corresponding SVF statements. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00482">SVFIR.h:482</a></div></div>
2953
2978
  <div class="ttc" id="classSVF_1_1IRGraph_html_abe0ab797a3da420e4d2f9136d64fb407"><div class="ttname"><a href="classSVF_1_1IRGraph.html#abe0ab797a3da420e4d2f9136d64fb407">SVF::IRGraph::hasNonlabeledEdge</a></div><div class="ttdeci">SVFStmt * hasNonlabeledEdge(SVFVar *src, SVFVar *dst, SVFStmt::PEDGEK kind)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00059">IRGraph.cpp:59</a></div></div>
@@ -3178,11 +3203,11 @@ Additional Inherited Members</h2></td></tr>
3178
3203
  <p>Add Variant(Gep) edge. </p>
3179
3204
  <p>Add variant(Gep) edge Find the base node id of src and connect base node to dst node </p>
3180
3205
 
3181
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00368">368</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
3182
- <div class="fragment"><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;{</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; baseLS = <a class="code" href="classSVF_1_1SVFIR.html#a8b36d077c30fb2830a253ded82413c2d">getLocationSetFromBaseNode</a>(src);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* baseNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">getBaseValVar</a>(src));</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#abe0ab797a3da420e4d2f9136d64fb407">hasNonlabeledEdge</a>(baseNode, dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>))</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;GepStmt&gt;(edge);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gepPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>(baseNode, dstNode,baseLS+ls, <span class="keyword">true</span>);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(gepPE);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(baseNode, dstNode, gepPE);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">return</span> gepPE;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVF::SVFStmt::Gep</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
3206
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00369">369</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
3207
+ <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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; baseLS = <a class="code" href="classSVF_1_1SVFIR.html#a8b36d077c30fb2830a253ded82413c2d">getLocationSetFromBaseNode</a>(src);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* baseNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">getBaseValVar</a>(src));</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dstNode = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge = <a class="code" href="classSVF_1_1IRGraph.html#abe0ab797a3da420e4d2f9136d64fb407">hasNonlabeledEdge</a>(baseNode, dstNode, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>))</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;GepStmt&gt;(edge);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">else</span></div><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; <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gepPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>(baseNode, dstNode,baseLS+ls, <span class="keyword">true</span>);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(gepPE);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">addEdge</a>(baseNode, dstNode, gepPE);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">return</span> gepPE;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVF::SVFStmt::Gep</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
3183
3208
  <div class="ttc" id="classSVF_1_1GepStmt_html"><div class="ttname"><a href="classSVF_1_1GepStmt.html">SVF::GepStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00409">SVFStatements.h:409</a></div></div>
3184
- <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>
3185
- <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>
3209
+ <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>
3210
+ <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>
3186
3211
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
3187
3212
  <div class="ttc" id="classSVF_1_1IRGraph_html_a722f32d0a0a3bafdd97fc74819d2621e"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">SVF::IRGraph::addEdge</a></div><div class="ttdeci">bool addEdge(SVFVar *src, SVFVar *dst, SVFStmt *edge)</div><div class="ttdoc">Add an edge into the graph. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00044">IRGraph.cpp:44</a></div></div>
3188
3213
  <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>
@@ -3248,8 +3273,8 @@ Additional Inherited Members</h2></td></tr>
3248
3273
  <p>Clean up memory. </p>
3249
3274
  <p>Clean up memory </p>
3250
3275
 
3251
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00565">565</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
3252
- <div class="fragment"><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;{</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51">icfg</a>;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51">icfg</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_abe8aa0d325b35dd59ce4a7f302760e51"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51">SVF::SVFIR::icfg</a></div><div class="ttdeci">ICFG * icfg</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00093">SVFIR.h:93</a></div></div>
3276
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00566">566</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
3277
+ <div class="fragment"><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;{</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51">icfg</a>;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51">icfg</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_abe8aa0d325b35dd59ce4a7f302760e51"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51">SVF::SVFIR::icfg</a></div><div class="ttdeci">ICFG * icfg</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00093">SVFIR.h:93</a></div></div>
3253
3278
  </div><!-- fragment -->
3254
3279
  </div>
3255
3280
  </div>
@@ -3301,8 +3326,8 @@ Additional Inherited Members</h2></td></tr>
3301
3326
  <p>Get all fields of an object. </p>
3302
3327
  <p>Get all fields object nodes of an object </p>
3303
3328
 
3304
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00479">479</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
3305
- <div class="fragment"><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;{</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>[base];</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_a3c014227661d8976714772205611c252"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">SVF::SVFIR::memToFieldsMap</a></div><div class="ttdeci">MemObjToFieldsMap memToFieldsMap</div><div class="ttdoc">Map a mem object id to all its fields. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00080">SVFIR.h:80</a></div></div>
3329
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00480">480</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
3330
+ <div class="fragment"><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;{</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>[base];</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_a3c014227661d8976714772205611c252"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">SVF::SVFIR::memToFieldsMap</a></div><div class="ttdeci">MemObjToFieldsMap memToFieldsMap</div><div class="ttdoc">Map a mem object id to all its fields. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00080">SVFIR.h:80</a></div></div>
3306
3331
  <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>
3307
3332
  <div class="ttc" id="classSVF_1_1MemObj_html_a3ab6f65ffbf6442daac4d3f70f2d3cb1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">SVF::MemObj::getId</a></div><div class="ttdeci">SymID getId() const</div><div class="ttdoc">Get the memory object id. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00445">SymbolTableInfo.h:445</a></div></div>
3308
3333
  </div><!-- fragment -->
@@ -3325,13 +3350,13 @@ Additional Inherited Members</h2></td></tr>
3325
3350
  </div><div class="memdoc">
3326
3351
  <p>Get all fields object nodes of an object </p>
3327
3352
 
3328
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00488">488</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
3329
- <div class="fragment"><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;{</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;ObjVar&gt;(node) &amp;&amp; <span class="stringliteral">&quot;need an object node&quot;</span>);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>* obj = SVFUtil::cast&lt;ObjVar&gt;(node);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(obj-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>());</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_aaf86146b5e765d1f278b6d812bf913f5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">SVF::SVFIR::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">Singleton pattern here to enable instance of SVFIR can only be created once. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00087">SVFIR.h:87</a></div></div>
3353
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00489">489</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
3354
+ <div class="fragment"><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;{</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;ObjVar&gt;(node) &amp;&amp; <span class="stringliteral">&quot;need an object node&quot;</span>);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>* obj = SVFUtil::cast&lt;ObjVar&gt;(node);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(obj-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>());</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_aaf86146b5e765d1f278b6d812bf913f5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">SVF::SVFIR::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">Singleton pattern here to enable instance of SVFIR can only be created once. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00087">SVFIR.h:87</a></div></div>
3330
3355
  <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>
3331
3356
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
3332
3357
  <div class="ttc" id="classSVF_1_1ObjVar_html"><div class="ttname"><a href="classSVF_1_1ObjVar.html">SVF::ObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00325">SVFVariables.h:325</a></div></div>
3333
3358
  <div class="ttc" id="classSVF_1_1ObjVar_html_a6a4feb73b54e602407e35eeb09f55930"><div class="ttname"><a href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">SVF::ObjVar::getMemObj</a></div><div class="ttdeci">const MemObj * getMemObj() const</div><div class="ttdoc">Return memory object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00365">SVFVariables.h:365</a></div></div>
3334
- <div class="ttc" id="classSVF_1_1SVFIR_html_a7276e82b4648ed0e1b3d1b8b37b24089"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVF::SVFIR::getAllFieldsObjVars</a></div><div class="ttdeci">NodeBS &amp; getAllFieldsObjVars(const MemObj *obj)</div><div class="ttdoc">Get all fields of an object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00479">SVFIR.cpp:479</a></div></div>
3359
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a7276e82b4648ed0e1b3d1b8b37b24089"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVF::SVFIR::getAllFieldsObjVars</a></div><div class="ttdeci">NodeBS &amp; getAllFieldsObjVars(const MemObj *obj)</div><div class="ttdoc">Get all fields of an object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00480">SVFIR.cpp:480</a></div></div>
3335
3360
  <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>
3336
3361
  </div><!-- fragment -->
3337
3362
  </div>
@@ -3447,8 +3472,8 @@ Additional Inherited Members</h2></td></tr>
3447
3472
  <p>Get a base pointer node given a field pointer</p>
3448
3473
  <p>Get a base pointer given a pointer Return the source node of its connected gep edge if this pointer has Otherwise return the node id itself </p>
3449
3474
 
3450
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00521">521</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
3451
- <div class="fragment"><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;{</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(nodeId);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">hasIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>))</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; geps = node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">getIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((geps.size()==1) &amp;&amp; <span class="stringliteral">&quot;one node can only be connected by at most one gep edge!&quot;</span>);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">SVFVar::iterator</a> it = geps.begin();</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;GepStmt&gt;(*it) &amp;&amp; <span class="stringliteral">&quot;not a gep edge??&quot;</span>);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">return</span> (*it)-&gt;getSrcID();</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">return</span> nodeId;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVF::SVFStmt::Gep</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
3475
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00522">522</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
3476
+ <div class="fragment"><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;{</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(nodeId);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">hasIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>))</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; geps = node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">getIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((geps.size()==1) &amp;&amp; <span class="stringliteral">&quot;one node can only be connected by at most one gep edge!&quot;</span>);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">SVFVar::iterator</a> it = geps.begin();</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;GepStmt&gt;(*it) &amp;&amp; <span class="stringliteral">&quot;not a gep edge??&quot;</span>);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">return</span> (*it)-&gt;getSrcID();</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; }</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">return</span> nodeId;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVF::SVFStmt::Gep</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
3452
3477
  <div class="ttc" id="classSVF_1_1SVFVar_html_a747b2c92c81d32fcd357e80d2d8fe7cc"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">SVF::SVFVar::hasIncomingEdges</a></div><div class="ttdeci">bool hasIncomingEdges(SVFStmt::PEDGEK kind) const</div><div class="ttdoc">Has incoming SVFIR statements (edges) </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00174">SVFVariables.h:174</a></div></div>
3453
3478
  <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>
3454
3479
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a8cd7b6c6fd8b030b1421d95a086359f4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVF::SVFStmt::SVFStmtSetTy</a></div><div class="ttdeci">GenericNode&lt; SVFVar, SVFStmt &gt;::GEdgeSetTy SVFStmtSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00177">SVFStatements.h:177</a></div></div>
@@ -3658,13 +3683,13 @@ Additional Inherited Members</h2></td></tr>
3658
3683
  </div><div class="memdoc">
3659
3684
  <p>Get all fields object nodes of an object If this object is collapsed into one field insensitive object Then only return this field insensitive object </p>
3660
3685
 
3661
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00501">501</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
3662
- <div class="fragment"><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;{</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;ObjVar&gt;(node) &amp;&amp; <span class="stringliteral">&quot;need an object node&quot;</span>);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = SVFUtil::cast&lt;ObjVar&gt;(node)-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a4f5792216c6f38c32dac5074862ffc50">getMemObj</a>();</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">if</span>(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>())</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> bs;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; bs.set(<a class="code" href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">getFIObjVar</a>(mem));</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordflow">return</span> bs;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; }</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(mem);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;}</div><div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00415">SymbolTableInfo.h:415</a></div></div>
3686
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00502">502</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
3687
+ <div class="fragment"><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;{</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;ObjVar&gt;(node) &amp;&amp; <span class="stringliteral">&quot;need an object node&quot;</span>);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = SVFUtil::cast&lt;ObjVar&gt;(node)-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a4f5792216c6f38c32dac5074862ffc50">getMemObj</a>();</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">if</span>(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>())</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> bs;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; bs.set(<a class="code" href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">getFIObjVar</a>(mem));</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">return</span> bs;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(mem);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;}</div><div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00415">SymbolTableInfo.h:415</a></div></div>
3663
3688
  <div class="ttc" id="classSVF_1_1SVFIR_html_aaf86146b5e765d1f278b6d812bf913f5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">SVF::SVFIR::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">Singleton pattern here to enable instance of SVFIR can only be created once. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00087">SVFIR.h:87</a></div></div>
3664
3689
  <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>
3665
3690
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
3666
3691
  <div class="ttc" id="classSVF_1_1IRGraph_html_a4f5792216c6f38c32dac5074862ffc50"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a4f5792216c6f38c32dac5074862ffc50">SVF::IRGraph::getMemObj</a></div><div class="ttdeci">const MemObj * getMemObj(const Value *val) const</div><div class="ttdoc">get MemObj according to LLVM value </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00089">IRGraph.h:89</a></div></div>
3667
- <div class="ttc" id="classSVF_1_1SVFIR_html_a7276e82b4648ed0e1b3d1b8b37b24089"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVF::SVFIR::getAllFieldsObjVars</a></div><div class="ttdeci">NodeBS &amp; getAllFieldsObjVars(const MemObj *obj)</div><div class="ttdoc">Get all fields of an object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00479">SVFIR.cpp:479</a></div></div>
3692
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a7276e82b4648ed0e1b3d1b8b37b24089"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVF::SVFIR::getAllFieldsObjVars</a></div><div class="ttdeci">NodeBS &amp; getAllFieldsObjVars(const MemObj *obj)</div><div class="ttdoc">Get all fields of an object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00480">SVFIR.cpp:480</a></div></div>
3668
3693
  <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00719">SymbolTableInfo.cpp:719</a></div></div>
3669
3694
  <div class="ttc" id="classSVF_1_1SVFIR_html_a2878e202045b7f2c817185e8bf95d354"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">SVF::SVFIR::getFIObjVar</a></div><div class="ttdeci">NodeID getFIObjVar(const MemObj *obj) const</div><div class="ttdoc">Get a field-insensitive obj SVFIR node according to a mem obj. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00377">SVFIR.h:377</a></div></div>
3670
3695
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00086">SVFBasicTypes.h:86</a></div></div>
@@ -3978,11 +4003,11 @@ Additional Inherited Members</h2></td></tr>
3978
4003
  <p>Get a field obj <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> node according to base mem obj and offset To support flexible field sensitive analysis with regard to MaxFieldOffset offset = offset % obj-&gt;getMaxFieldOffsetLimit() to create limited number of mem objects maximum number of field object creation is obj-&gt;getMaxFieldOffsetLimit() </p>
3979
4004
  <p>if this obj is field-insensitive, just return the field-insensitive node. </p>
3980
4005
 
3981
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00426">426</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
3982
- <div class="fragment"><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;{</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">if</span> (obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>())</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">getFIObjVar</a>(obj);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> newLS = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a480a7565dcb5d9a94f4b0ffb44b127ee">getModulusOffset</a>(obj,ls);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="comment">// Base and first field are the same memory location.</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8dc477d83a142a62b63207f6f240f224">Options::FirstFieldEqBase</a> &amp;&amp; newLS.<a class="code" href="classSVF_1_1LocationSet.html#ab987c41ffdae931d941f89d03ed09146">accumulateConstantFieldIdx</a>() == 0) <span class="keywordflow">return</span> base;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; NodeLocationSetMap::iterator iter = <a class="code" href="classSVF_1_1SVFIR.html#a148b51118eeba8117e033fea84b56be8">GepObjVarMap</a>.find(std::make_pair(base, newLS));</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1SVFIR.html#a148b51118eeba8117e033fea84b56be8">GepObjVarMap</a>.end())</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a1ac1e7752e98abff7054f4caa709260d">addGepObjNode</a>(obj, newLS);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">return</span> iter-&gt;second;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;}</div><div class="ttc" id="classSVF_1_1LocationSet_html_ab987c41ffdae931d941f89d03ed09146"><div class="ttname"><a href="classSVF_1_1LocationSet.html#ab987c41ffdae931d941f89d03ed09146">SVF::LocationSet::accumulateConstantFieldIdx</a></div><div class="ttdeci">s64_t accumulateConstantFieldIdx() const</div><div class="ttdoc">Get methods. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00120">LocationSet.h:120</a></div></div>
4006
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00427">427</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
4007
+ <div class="fragment"><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;{</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">if</span> (obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>())</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">getFIObjVar</a>(obj);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> newLS = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a480a7565dcb5d9a94f4b0ffb44b127ee">getModulusOffset</a>(obj,ls);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="comment">// Base and first field are the same memory location.</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8dc477d83a142a62b63207f6f240f224">Options::FirstFieldEqBase</a> &amp;&amp; newLS.<a class="code" href="classSVF_1_1LocationSet.html#ab987c41ffdae931d941f89d03ed09146">accumulateConstantFieldIdx</a>() == 0) <span class="keywordflow">return</span> base;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; NodeLocationSetMap::iterator iter = <a class="code" href="classSVF_1_1SVFIR.html#a148b51118eeba8117e033fea84b56be8">GepObjVarMap</a>.find(std::make_pair(base, newLS));</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1SVFIR.html#a148b51118eeba8117e033fea84b56be8">GepObjVarMap</a>.end())</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a1ac1e7752e98abff7054f4caa709260d">addGepObjNode</a>(obj, newLS);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">return</span> iter-&gt;second;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;}</div><div class="ttc" id="classSVF_1_1LocationSet_html_ab987c41ffdae931d941f89d03ed09146"><div class="ttname"><a href="classSVF_1_1LocationSet.html#ab987c41ffdae931d941f89d03ed09146">SVF::LocationSet::accumulateConstantFieldIdx</a></div><div class="ttdeci">s64_t accumulateConstantFieldIdx() const</div><div class="ttdoc">Get methods. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00120">LocationSet.h:120</a></div></div>
3983
4008
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a480a7565dcb5d9a94f4b0ffb44b127ee"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a480a7565dcb5d9a94f4b0ffb44b127ee">SVF::SymbolTableInfo::getModulusOffset</a></div><div class="ttdeci">virtual LocationSet getModulusOffset(const MemObj *obj, const LocationSet &amp;ls)</div><div class="ttdoc">Given an offset from a Gep Instruction, return it modulus offset by considering memory layout...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00242">SymbolTableInfo.cpp:242</a></div></div>
3984
4009
  <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>
3985
- <div class="ttc" id="classSVF_1_1SVFIR_html_a1ac1e7752e98abff7054f4caa709260d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a1ac1e7752e98abff7054f4caa709260d">SVF::SVFIR::addGepObjNode</a></div><div class="ttdeci">NodeID addGepObjNode(const MemObj *obj, const LocationSet &amp;ls)</div><div class="ttdoc">Add a field obj node, this method can only invoked by getGepObjVar. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00450">SVFIR.cpp:450</a></div></div>
4010
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a1ac1e7752e98abff7054f4caa709260d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a1ac1e7752e98abff7054f4caa709260d">SVF::SVFIR::addGepObjNode</a></div><div class="ttdeci">NodeID addGepObjNode(const MemObj *obj, const LocationSet &amp;ls)</div><div class="ttdoc">Add a field obj node, this method can only invoked by getGepObjVar. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00451">SVFIR.cpp:451</a></div></div>
3986
4011
  <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>
3987
4012
  <div class="ttc" id="classSVF_1_1SVFIR_html_a148b51118eeba8117e033fea84b56be8"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a148b51118eeba8117e033fea84b56be8">SVF::SVFIR::GepObjVarMap</a></div><div class="ttdeci">NodeLocationSetMap GepObjVarMap</div><div class="ttdoc">Map a pair&lt;base,off&gt; to a gep obj node id. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00079">SVFIR.h:79</a></div></div>
3988
4013
  <div class="ttc" id="classSVF_1_1Options_html_a8dc477d83a142a62b63207f6f240f224"><div class="ttname"><a href="classSVF_1_1Options.html#a8dc477d83a142a62b63207f6f240f224">SVF::Options::FirstFieldEqBase</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; FirstFieldEqBase</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00113">Options.h:113</a></div></div>
@@ -4022,15 +4047,15 @@ Additional Inherited Members</h2></td></tr>
4022
4047
  <p>Get a field obj <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> node according to a mem obj and a given offset. </p>
4023
4048
  <p>Given an object node, find its field object node </p>
4024
4049
 
4025
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00404">404</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
4026
- <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; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a>* gepNode = SVFUtil::dyn_cast&lt;GepObjVar&gt;(node))</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</a>(gepNode-&gt;getMemObj(), gepNode-&gt;getLocationSet() + ls);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a>* baseNode = SVFUtil::dyn_cast&lt;FIObjVar&gt;(node))</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</a>(baseNode-&gt;getMemObj(), ls);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DummyObjVar.html">DummyObjVar</a>* baseNode = SVFUtil::dyn_cast&lt;DummyObjVar&gt;(node))</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</a>(baseNode-&gt;getMemObj(), ls);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;new gep obj node kind?&quot;</span>);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">return</span> id;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; }</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_aaf86146b5e765d1f278b6d812bf913f5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">SVF::SVFIR::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">Singleton pattern here to enable instance of SVFIR can only be created once. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00087">SVFIR.h:87</a></div></div>
4050
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00405">405</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
4051
+ <div class="fragment"><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;{</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a>* gepNode = SVFUtil::dyn_cast&lt;GepObjVar&gt;(node))</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</a>(gepNode-&gt;getMemObj(), gepNode-&gt;getLocationSet() + ls);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a>* baseNode = SVFUtil::dyn_cast&lt;FIObjVar&gt;(node))</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</a>(baseNode-&gt;getMemObj(), ls);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DummyObjVar.html">DummyObjVar</a>* baseNode = SVFUtil::dyn_cast&lt;DummyObjVar&gt;(node))</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</a>(baseNode-&gt;getMemObj(), ls);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; {</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;new gep obj node kind?&quot;</span>);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">return</span> id;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_aaf86146b5e765d1f278b6d812bf913f5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">SVF::SVFIR::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">Singleton pattern here to enable instance of SVFIR can only be created once. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00087">SVFIR.h:87</a></div></div>
4027
4052
  <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>
4028
4053
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
4029
4054
  <div class="ttc" id="classSVF_1_1DummyObjVar_html"><div class="ttname"><a href="classSVF_1_1DummyObjVar.html">SVF::DummyObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00719">SVFVariables.h:719</a></div></div>
4030
4055
  <div class="ttc" id="classSVF_1_1GepObjVar_html"><div class="ttname"><a href="classSVF_1_1GepObjVar.html">SVF::GepObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00459">SVFVariables.h:459</a></div></div>
4031
4056
  <div class="ttc" id="classSVF_1_1FIObjVar_html"><div class="ttname"><a href="classSVF_1_1FIObjVar.html">SVF::FIObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00541">SVFVariables.h:541</a></div></div>
4032
4057
  <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>
4033
- <div class="ttc" id="classSVF_1_1SVFIR_html_a20c0c65af266ac876cb722aee6e87101"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">SVF::SVFIR::getGepObjVar</a></div><div class="ttdeci">NodeID getGepObjVar(const MemObj *obj, const LocationSet &amp;ls)</div><div class="ttdoc">Get a field SVFIR Object node according to base mem obj and offset. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00426">SVFIR.cpp:426</a></div></div>
4058
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a20c0c65af266ac876cb722aee6e87101"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">SVF::SVFIR::getGepObjVar</a></div><div class="ttdeci">NodeID getGepObjVar(const MemObj *obj, const LocationSet &amp;ls)</div><div class="ttdoc">Get a field SVFIR Object node according to base mem obj and offset. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00427">SVFIR.cpp:427</a></div></div>
4034
4059
  </div><!-- fragment -->
4035
4060
  </div>
4036
4061
  </div>
@@ -4314,8 +4339,8 @@ Additional Inherited Members</h2></td></tr>
4314
4339
  <p>Get a base <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> given a pointer Return the source node of its connected normal gep edge Otherwise return the node id itself s64_t offset : gep offset </p>
4315
4340
  <p>if this node is already a base node </p>
4316
4341
 
4317
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00545">545</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
4318
- <div class="fragment"><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;{</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(nodeId);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; geps = node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">getIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">if</span>(geps.empty())</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(0);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(geps.size()==1 &amp;&amp; <span class="stringliteral">&quot;one node can only be connected by at most one gep edge!&quot;</span>);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">SVFVar::iterator</a> it = geps.begin();</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gepEdge = SVFUtil::cast&lt;GepStmt&gt;(*it);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">if</span>(gepEdge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(0);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">return</span> gepEdge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#abec33091e0dac0cdd5b95b6d7b0db3d8">getLocationSet</a>();</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVF::SVFStmt::Gep</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
4342
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00546">546</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
4343
+ <div class="fragment"><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;{</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(nodeId);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; geps = node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">getIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">if</span>(geps.empty())</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(0);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(geps.size()==1 &amp;&amp; <span class="stringliteral">&quot;one node can only be connected by at most one gep edge!&quot;</span>);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">SVFVar::iterator</a> it = geps.begin();</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gepEdge = SVFUtil::cast&lt;GepStmt&gt;(*it);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">if</span>(gepEdge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(0);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">return</span> gepEdge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#abec33091e0dac0cdd5b95b6d7b0db3d8">getLocationSet</a>();</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVF::SVFStmt::Gep</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
4319
4344
  <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>
4320
4345
  <div class="ttc" id="classSVF_1_1GepStmt_html"><div class="ttname"><a href="classSVF_1_1GepStmt.html">SVF::GepStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00409">SVFStatements.h:409</a></div></div>
4321
4346
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a8cd7b6c6fd8b030b1421d95a086359f4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVF::SVFStmt::SVFStmtSetTy</a></div><div class="ttdeci">GenericNode&lt; SVFVar, SVFStmt &gt;::GEdgeSetTy SVFStmtSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00177">SVFStatements.h:177</a></div></div>
@@ -4633,8 +4658,8 @@ Additional Inherited Members</h2></td></tr>
4633
4658
  <p><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> build configurations. </p>
4634
4659
  <p>Whether to handle blackhole edge </p>
4635
4660
 
4636
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00700">700</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
4637
- <div class="fragment"><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;{</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <a class="code" href="classSVF_1_1Options.html#ad2d3db3e407a53956a5a59cc24eb8d40">Options::HandBlackHole</a> = b;</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;}</div><div class="ttc" id="classSVF_1_1Options_html_ad2d3db3e407a53956a5a59cc24eb8d40"><div class="ttname"><a href="classSVF_1_1Options.html#ad2d3db3e407a53956a5a59cc24eb8d40">SVF::Options::HandBlackHole</a></div><div class="ttdeci">static llvm::cl::opt&lt; bool &gt; HandBlackHole</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00112">Options.h:112</a></div></div>
4661
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00701">701</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
4662
+ <div class="fragment"><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;{</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <a class="code" href="classSVF_1_1Options.html#ad2d3db3e407a53956a5a59cc24eb8d40">Options::HandBlackHole</a> = b;</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;}</div><div class="ttc" id="classSVF_1_1Options_html_ad2d3db3e407a53956a5a59cc24eb8d40"><div class="ttname"><a href="classSVF_1_1Options.html#ad2d3db3e407a53956a5a59cc24eb8d40">SVF::Options::HandBlackHole</a></div><div class="ttdeci">static llvm::cl::opt&lt; bool &gt; HandBlackHole</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00112">Options.h:112</a></div></div>
4638
4663
  </div><!-- fragment -->
4639
4664
  </div>
4640
4665
  </div>
@@ -4777,13 +4802,13 @@ Additional Inherited Members</h2></td></tr>
4777
4802
 
4778
4803
  <p>Initialize candidate pointers. </p>
4779
4804
 
4780
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00659">659</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
4781
- <div class="fragment"><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;{</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="comment">// collect candidate pointers for demand-driven analysis</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">iterator</a> nIter = <a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); nIter != <a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++nIter)</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; {</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = nIter-&gt;first;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="comment">// do not compute points-to for isolated node</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">isValidPointer</a>(nodeId) == <span class="keyword">false</span>)</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#abd9f622b55839d6796ca2576f2323498">candidatePointers</a>.insert(nodeId);</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; }</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
4805
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00660">660</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
4806
+ <div class="fragment"><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;{</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="comment">// collect candidate pointers for demand-driven analysis</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">iterator</a> nIter = <a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); nIter != <a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++nIter)</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> nodeId = nIter-&gt;first;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="comment">// do not compute points-to for isolated node</span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">isValidPointer</a>(nodeId) == <span class="keyword">false</span>)</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#abd9f622b55839d6796ca2576f2323498">candidatePointers</a>.insert(nodeId);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; }</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
4782
4807
  <div class="ttc" id="classSVF_1_1SVFIR_html_abd9f622b55839d6796ca2576f2323498"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abd9f622b55839d6796ca2576f2323498">SVF::SVFIR::candidatePointers</a></div><div class="ttdeci">OrderedNodeSet candidatePointers</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00092">SVFIR.h:92</a></div></div>
4783
4808
  <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>
4784
4809
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
4785
4810
  <div class="ttc" id="classSVF_1_1GenericGraph_html_ac213302cf5c7cdf3b66f7b18649d0fbc"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::iterator</a></div><div class="ttdeci">IDToNodeMapTy::iterator iterator</div><div class="ttdoc">Node Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00338">GenericGraph.h:338</a></div></div>
4786
- <div class="ttc" id="classSVF_1_1SVFIR_html_addc84dae75be8e8b9deccdb4360736d3"><div class="ttname"><a href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">SVF::SVFIR::isValidPointer</a></div><div class="ttdeci">bool isValidPointer(NodeID nodeId) const</div><div class="ttdoc">Whether a node is a valid pointer. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00675">SVFIR.cpp:675</a></div></div>
4811
+ <div class="ttc" id="classSVF_1_1SVFIR_html_addc84dae75be8e8b9deccdb4360736d3"><div class="ttname"><a href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">SVF::SVFIR::isValidPointer</a></div><div class="ttdeci">bool isValidPointer(NodeID nodeId) const</div><div class="ttdoc">Whether a node is a valid pointer. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00676">SVFIR.cpp:676</a></div></div>
4787
4812
  </div><!-- fragment -->
4788
4813
  </div>
4789
4814
  </div>
@@ -5074,8 +5099,8 @@ Additional Inherited Members</h2></td></tr>
5074
5099
 
5075
5100
  <p>Whether a node is a valid pointer. </p>
5076
5101
 
5077
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00675">675</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
5078
- <div class="fragment"><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;{</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(nodeId);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">if</span> ((node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().empty() &amp;&amp; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().empty()))</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>();</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_aaf86146b5e765d1f278b6d812bf913f5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">SVF::SVFIR::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">Singleton pattern here to enable instance of SVFIR can only be created once. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00087">SVFIR.h:87</a></div></div>
5102
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00676">676</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
5103
+ <div class="fragment"><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;{</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(nodeId);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">if</span> ((node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().empty() &amp;&amp; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().empty()))</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>();</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_aaf86146b5e765d1f278b6d812bf913f5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">SVF::SVFIR::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">Singleton pattern here to enable instance of SVFIR can only be created once. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00087">SVFIR.h:87</a></div></div>
5079
5104
  <div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00182">GenericGraph.h:182</a></div></div>
5080
5105
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
5081
5106
  <div class="ttc" id="classSVF_1_1SVFVar_html_a3b61042079a6c9dc395f38925c6a1271"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">SVF::SVFVar::isPointer</a></div><div class="ttdeci">virtual bool isPointer() const</div><div class="ttdoc">Whether it is a pointer. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00118">SVFVariables.h:118</a></div></div>
@@ -5100,9 +5125,9 @@ Additional Inherited Members</h2></td></tr>
5100
5125
  </table>
5101
5126
  </div><div class="memdoc">
5102
5127
 
5103
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00683">683</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
5104
- <div class="fragment"><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;{</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a60bed99a7fd939873118698b058ccc4a">isTopLevelPtr</a>())</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; {</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">isValidPointer</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) &amp;&amp; node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>())</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; {</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#afd690c09e01989e57899875ca97f0166">SVFUtil::ArgInNoCallerFunction</a>(node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()))</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; }</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; }</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFVar_html_a60bed99a7fd939873118698b058ccc4a"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a60bed99a7fd939873118698b058ccc4a">SVF::SVFVar::isTopLevelPtr</a></div><div class="ttdeci">bool isTopLevelPtr() const</div><div class="ttdoc">Whether it is a top-level pointer. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00123">SVFVariables.h:123</a></div></div>
5105
- <div class="ttc" id="classSVF_1_1SVFIR_html_addc84dae75be8e8b9deccdb4360736d3"><div class="ttname"><a href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">SVF::SVFIR::isValidPointer</a></div><div class="ttdeci">bool isValidPointer(NodeID nodeId) const</div><div class="ttdoc">Whether a node is a valid pointer. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00675">SVFIR.cpp:675</a></div></div>
5128
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00684">684</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
5129
+ <div class="fragment"><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;{</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a60bed99a7fd939873118698b058ccc4a">isTopLevelPtr</a>())</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">isValidPointer</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) &amp;&amp; node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>())</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; {</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#afd690c09e01989e57899875ca97f0166">SVFUtil::ArgInNoCallerFunction</a>(node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()))</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; }</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; }</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFVar_html_a60bed99a7fd939873118698b058ccc4a"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a60bed99a7fd939873118698b058ccc4a">SVF::SVFVar::isTopLevelPtr</a></div><div class="ttdeci">bool isTopLevelPtr() const</div><div class="ttdoc">Whether it is a top-level pointer. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00123">SVFVariables.h:123</a></div></div>
5130
+ <div class="ttc" id="classSVF_1_1SVFIR_html_addc84dae75be8e8b9deccdb4360736d3"><div class="ttname"><a href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">SVF::SVFIR::isValidPointer</a></div><div class="ttdeci">bool isValidPointer(NodeID nodeId) const</div><div class="ttdoc">Whether a node is a valid pointer. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00676">SVFIR.cpp:676</a></div></div>
5106
5131
  <div class="ttc" id="classSVF_1_1SVFVar_html_a1ace69053c2c4436fd78d5624bd0086a"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">SVF::SVFVar::hasValue</a></div><div class="ttdeci">bool hasValue() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00113">SVFVariables.h:113</a></div></div>
5107
5132
  <div class="ttc" id="classSVF_1_1SVFVar_html_afaa33caa8d2a306f6741d9d066243e40"><div class="ttname"><a href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">SVF::SVFVar::getValue</a></div><div class="ttdeci">const Value * getValue() const</div><div class="ttdoc">Get/has methods of the components. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00097">SVFVariables.h:97</a></div></div>
5108
5133
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_afd690c09e01989e57899875ca97f0166"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#afd690c09e01989e57899875ca97f0166">SVF::SVFUtil::ArgInNoCallerFunction</a></div><div class="ttdeci">bool ArgInNoCallerFunction(const Value *val)</div><div class="ttdoc">Return true if the argument in a function does not have a caller. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00490">LLVMUtil.h:490</a></div></div>
@@ -5128,8 +5153,8 @@ Additional Inherited Members</h2></td></tr>
5128
5153
  <p>Print <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a>. </p>
5129
5154
  <p>Print this <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> graph including its nodes and edges </p>
5130
5155
 
5131
- <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00574">574</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
5132
- <div class="fragment"><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;{</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-------------------SVFIR------------------------------------\n&quot;</span>;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; addrs = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a>);</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = addrs.begin(), eiter =</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; addrs.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Addr --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; copys = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a>);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = copys.begin(), eiter =</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; copys.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; {</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Copy --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; calls = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a>);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = calls.begin(), eiter =</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; calls.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; {</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Call --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; rets = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a>);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = rets.begin(), eiter =</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; rets.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Ret --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; tdfks = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = tdfks.begin(), eiter =</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; tdfks.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; {</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- ThreadFork --&gt; &quot;</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; }</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; tdjns = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = tdjns.begin(), eiter =</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; tdjns.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; {</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- ThreadJoin --&gt; &quot;</span></div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &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;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; ngeps = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = ngeps.begin(), eiter =</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; ngeps.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; {</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gep = SVFUtil::cast&lt;GepStmt&gt;(*iter);</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">if</span>(gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- VariantGep --&gt; &quot;</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>() &lt;&lt; <span class="stringliteral">&quot; -- Gep (&quot;</span> &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#adf6912f8ddae4f765b685a4f9d3be602">getConstantFieldIdx</a>()</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; &lt;&lt; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; loads = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>);</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = loads.begin(), eiter =</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; loads.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Load --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; &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;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; stores = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = stores.begin(), eiter =</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; stores.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; {</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Store --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; }</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;----------------------------------------------------------\n&quot;</span>;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVF::SVFStmt::Call</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
5156
+ <p class="definition">Definition at line <a class="el" href="SVFIR_8cpp_source.html#l00575">575</a> of file <a class="el" href="SVFIR_8cpp_source.html">SVFIR.cpp</a>.</p>
5157
+ <div class="fragment"><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;{</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-------------------SVFIR------------------------------------\n&quot;</span>;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; addrs = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a>);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = addrs.begin(), eiter =</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; addrs.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Addr --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; copys = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a>);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = copys.begin(), eiter =</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; copys.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; {</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Copy --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; calls = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a>);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = calls.begin(), eiter =</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; calls.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; {</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Call --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; rets = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a>);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = rets.begin(), eiter =</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; rets.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Ret --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; tdfks = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = tdfks.begin(), eiter =</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; tdfks.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; {</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- ThreadFork --&gt; &quot;</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; }</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; tdjns = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = tdjns.begin(), eiter =</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; tdjns.end(); iter != eiter; ++iter)</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="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- ThreadJoin --&gt; &quot;</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; }</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; ngeps = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = ngeps.begin(), eiter =</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; ngeps.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; {</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gep = SVFUtil::cast&lt;GepStmt&gt;(*iter);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">if</span>(gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- VariantGep --&gt; &quot;</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>() &lt;&lt; <span class="stringliteral">&quot; -- Gep (&quot;</span> &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#adf6912f8ddae4f765b685a4f9d3be602">getConstantFieldIdx</a>()</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; &lt;&lt; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; }</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; loads = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>);</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = loads.begin(), eiter =</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; loads.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Load --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; }</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="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; stores = <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = stores.begin(), eiter =</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; stores.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Store --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; }</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;----------------------------------------------------------\n&quot;</span>;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVF::SVFStmt::Call</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
5133
5158
  <div class="ttc" id="classSVF_1_1SVFIR_html_aaf86146b5e765d1f278b6d812bf913f5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">SVF::SVFIR::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">Singleton pattern here to enable instance of SVFIR can only be created once. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00087">SVFIR.h:87</a></div></div>
5134
5159
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVF::SVFStmt::Gep</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
5135
5160
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVF::SVFStmt::Load</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>