svf-tools 1.0.413 → 1.0.416

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 (166) hide show
  1. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +3 -3
  2. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +3 -3
  3. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +5 -5
  4. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +9 -9
  5. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +4 -4
  6. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  7. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
  8. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +5 -5
  9. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +1 -1
  11. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +14 -14
  12. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +6 -6
  13. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +21 -21
  14. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +8 -8
  15. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
  17. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +89 -88
  18. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +15 -15
  19. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +19 -19
  20. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +71 -69
  21. package/SVF-doxygen/html/html/SVFG_8h_source.html +41 -41
  22. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +2 -2
  23. package/SVF-doxygen/html/html/SVFUtil_8h.html +2 -2
  24. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +2 -2
  25. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  26. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
  27. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -2
  28. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
  29. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +1 -1
  30. package/SVF-doxygen/html/html/VFGNode_8h.html +1 -1
  31. package/SVF-doxygen/html/html/VFGNode_8h_source.html +197 -195
  32. package/SVF-doxygen/html/html/VFG_8cpp_source.html +89 -72
  33. package/SVF-doxygen/html/html/VFG_8h_source.html +39 -39
  34. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +7 -7
  35. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +2 -2
  36. package/SVF-doxygen/html/html/WPAStat_8h_source.html +2 -2
  37. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode-members.html +46 -45
  38. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +24 -21
  39. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode-members.html +46 -45
  40. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +25 -22
  41. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode-members.html +45 -44
  42. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +59 -22
  43. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode-members.html +46 -45
  44. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +61 -24
  45. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +51 -50
  46. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +50 -14
  47. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +6 -6
  48. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode-members.html +44 -43
  49. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +23 -20
  50. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode-members.html +52 -51
  51. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +69 -32
  52. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode-members.html +46 -45
  53. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +59 -24
  54. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +2 -2
  55. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
  56. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode-members.html +52 -51
  57. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +70 -33
  58. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +2 -2
  59. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +51 -50
  60. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +50 -14
  61. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
  62. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +2 -2
  63. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode-members.html +46 -45
  64. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +53 -17
  65. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
  66. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +32 -32
  67. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +2 -2
  68. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +17 -17
  69. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode-members.html +47 -46
  70. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +24 -21
  71. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode-members.html +47 -46
  72. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +22 -19
  73. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode-members.html +45 -44
  74. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +65 -28
  75. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode-members.html +49 -48
  76. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +65 -28
  77. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +51 -50
  78. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +50 -14
  79. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +2 -2
  80. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode-members.html +58 -57
  81. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +45 -42
  82. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode-members.html +56 -55
  83. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +40 -37
  84. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +2 -2
  85. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
  86. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode-members.html +56 -55
  87. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +26 -23
  88. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode-members.html +57 -56
  89. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +26 -23
  90. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +54 -53
  91. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +50 -14
  92. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +2 -2
  93. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode-members.html +44 -43
  94. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +48 -13
  95. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode-members.html +53 -52
  96. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +36 -33
  97. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +32 -32
  98. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +1 -2
  99. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode-members.html +46 -45
  100. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +58 -21
  101. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode-members.html +53 -52
  102. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +71 -34
  103. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +2 -2
  104. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
  105. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +77 -77
  106. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  107. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +29 -29
  108. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +1 -1
  109. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +7 -7
  110. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode-members.html +51 -50
  111. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +35 -32
  112. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +54 -53
  113. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +51 -14
  114. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +5 -4
  115. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
  116. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode-members.html +55 -54
  117. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +76 -39
  118. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +70 -70
  119. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +2 -2
  120. package/SVF-doxygen/html/html/classSVF_1_1VFGNode-members.html +43 -42
  121. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +41 -9
  122. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +10 -10
  123. package/SVF-doxygen/html/html/functions_func_g.html +32 -12
  124. package/SVF-doxygen/html/html/functions_func_t.html +2 -2
  125. package/SVF-doxygen/html/html/functions_g.html +27 -7
  126. package/SVF-doxygen/html/html/functions_i.html +1 -1
  127. package/SVF-doxygen/html/html/functions_l.html +5 -5
  128. package/SVF-doxygen/html/html/functions_p.html +6 -6
  129. package/SVF-doxygen/html/html/functions_r.html +8 -8
  130. package/SVF-doxygen/html/html/functions_t.html +8 -6
  131. package/SVF-doxygen/html/html/functions_v.html +3 -3
  132. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +7 -7
  133. package/SVF-doxygen/html/html/namespacemembers_p.html +1 -1
  134. package/SVF-doxygen/html/html/namespacemembers_type_p.html +1 -1
  135. package/SVF-doxygen/html/html/search/all_10.js +5 -5
  136. package/SVF-doxygen/html/html/search/all_12.js +3 -3
  137. package/SVF-doxygen/html/html/search/all_13.js +3 -3
  138. package/SVF-doxygen/html/html/search/all_14.js +7 -7
  139. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  140. package/SVF-doxygen/html/html/search/all_7.js +1 -0
  141. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  142. package/SVF-doxygen/html/html/search/all_c.js +3 -3
  143. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  144. package/SVF-doxygen/html/html/search/all_e.js +3 -3
  145. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  146. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  147. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  148. package/SVF-doxygen/html/html/search/functions_6.js +1 -0
  149. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  150. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  151. package/SVF-doxygen/html/html/search/typedefs_f.js +1 -1
  152. package/SVF-doxygen/html/html/search/variables_14.js +4 -4
  153. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  154. package/SVF-doxygen/html/html/search/variables_e.js +2 -2
  155. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +48 -48
  156. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +36 -36
  157. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SVFGNodeLockSpan_01_4.html +1 -1
  158. package/include/Graphs/SVFGNode.h +6 -1
  159. package/include/Graphs/VFGNode.h +38 -3
  160. package/include/Util/SVFUtil.h +1 -1
  161. package/lib/Graphs/SVFG.cpp +9 -0
  162. package/lib/Graphs/VFG.cpp +86 -0
  163. package/lib/SVF-FE/SymbolTableBuilder.cpp +4 -1
  164. package/lib/Util/NodeIDAllocator.cpp +2 -2
  165. package/lib/WPA/AndersenStat.cpp +0 -8
  166. package/package.json +1 -1
@@ -89,6 +89,9 @@ Public Member Functions</h2></td></tr>
89
89
  <tr class="memitem:ae7ee09f0e965b6487a38a58c4f51b20b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1StoreVFGNode.html#ae7ee09f0e965b6487a38a58c4f51b20b">StoreVFGNode</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="el" href="classSVF_1_1GenericNode.html#aaa53457604fe4cf4cb97ca85d33907b0">id</a>, const <a class="el" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *edge)</td></tr>
90
90
  <tr class="memdesc:ae7ee09f0e965b6487a38a58c4f51b20b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <a href="#ae7ee09f0e965b6487a38a58c4f51b20b">More...</a><br /></td></tr>
91
91
  <tr class="separator:ae7ee09f0e965b6487a38a58c4f51b20b"><td class="memSeparator" colspan="2">&#160;</td></tr>
92
+ <tr class="memitem:aab00d7dcada369b19f68887d8e886ac4"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1StoreVFGNode.html#aab00d7dcada369b19f68887d8e886ac4">getDefSVFVars</a> () const override</td></tr>
93
+ <tr class="memdesc:aab00d7dcada369b19f68887d8e886ac4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the left hand side <a class="el" href="namespaceSVF.html" title="for isBitcode ">SVF</a> Vars. <a href="#aab00d7dcada369b19f68887d8e886ac4">More...</a><br /></td></tr>
94
+ <tr class="separator:aab00d7dcada369b19f68887d8e886ac4"><td class="memSeparator" colspan="2">&#160;</td></tr>
92
95
  <tr class="memitem:aba7e8b8329caf412a55f5880f68414fe"><td class="memItemLeft" align="right" valign="top">const std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1StoreVFGNode.html#aba7e8b8329caf412a55f5880f68414fe">toString</a> () const override</td></tr>
93
96
  <tr class="separator:aba7e8b8329caf412a55f5880f68414fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
94
97
  <tr class="inherit_header pub_methods_classSVF_1_1StmtVFGNode"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classSVF_1_1StmtVFGNode')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classSVF_1_1StmtVFGNode.html">SVF::StmtVFGNode</a></td></tr>
@@ -298,7 +301,7 @@ Additional Inherited Members</h2></td></tr>
298
301
  <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
299
302
  <div class="textblock"><p><a class="el" href="classSVF_1_1VFGNode.html">VFGNode</a> for stores </p>
300
303
 
301
- <p class="definition">Definition at line <a class="el" href="VFGNode_8h_source.html#l00235">235</a> of file <a class="el" href="VFGNode_8h_source.html">VFGNode.h</a>.</p>
304
+ <p class="definition">Definition at line <a class="el" href="VFGNode_8h_source.html#l00240">240</a> of file <a class="el" href="VFGNode_8h_source.html">VFGNode.h</a>.</p>
302
305
  </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
303
306
  <a id="ab4b9182cb0f2ef7dfc1e15789a311ecd"></a>
304
307
  <h2 class="memtitle"><span class="permalink"><a href="#ab4b9182cb0f2ef7dfc1e15789a311ecd">&#9670;&nbsp;</a></span>StoreVFGNode() <span class="overload">[1/3]</span></h2>
@@ -391,8 +394,8 @@ Additional Inherited Members</h2></td></tr>
391
394
 
392
395
  <p>Constructor. </p>
393
396
 
394
- <p class="definition">Definition at line <a class="el" href="VFGNode_8h_source.html#l00244">244</a> of file <a class="el" href="VFGNode_8h_source.html">VFGNode.h</a>.</p>
395
- <div class="fragment"><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; : <a class="code" href="classSVF_1_1StmtVFGNode.html#a03c4e0a31d2377ef4ffe46fe183ccd9d">StmtVFGNode</a>(<span class="keywordtype">id</span>,edge,<a class="code" href="classSVF_1_1VFGNode.html#a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8">Store</a>)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div><div class="ttc" id="classSVF_1_1StmtVFGNode_html_a03c4e0a31d2377ef4ffe46fe183ccd9d"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a03c4e0a31d2377ef4ffe46fe183ccd9d">SVF::StmtVFGNode::StmtVFGNode</a></div><div class="ttdeci">StmtVFGNode(NodeID id, const PAGEdge *e, VFGNodeK k)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00121">VFGNode.h:121</a></div></div>
397
+ <p class="definition">Definition at line <a class="el" href="VFGNode_8h_source.html#l00249">249</a> of file <a class="el" href="VFGNode_8h_source.html">VFGNode.h</a>.</p>
398
+ <div class="fragment"><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; : <a class="code" href="classSVF_1_1StmtVFGNode.html#a03c4e0a31d2377ef4ffe46fe183ccd9d">StmtVFGNode</a>(<span class="keywordtype">id</span>,edge,<a class="code" href="classSVF_1_1VFGNode.html#a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8">Store</a>)</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;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</div><div class="ttc" id="classSVF_1_1StmtVFGNode_html_a03c4e0a31d2377ef4ffe46fe183ccd9d"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a03c4e0a31d2377ef4ffe46fe183ccd9d">SVF::StmtVFGNode::StmtVFGNode</a></div><div class="ttdeci">StmtVFGNode(NodeID id, const PAGEdge *e, VFGNodeK k)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00124">VFGNode.h:124</a></div></div>
396
399
  <div class="ttc" id="classSVF_1_1VFGNode_html_a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8">SVF::VFGNode::Store</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00054">VFGNode.h:54</a></div></div>
397
400
  </div><!-- fragment -->
398
401
  </div>
@@ -424,8 +427,8 @@ Additional Inherited Members</h2></td></tr>
424
427
 
425
428
  <p>Methods for support type inquiry through isa, cast, and dyn_cast: </p>
426
429
 
427
- <p class="definition">Definition at line <a class="el" href="VFGNode_8h_source.html#l00250">250</a> of file <a class="el" href="VFGNode_8h_source.html">VFGNode.h</a>.</p>
428
- <div class="fragment"><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; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div></div><!-- fragment -->
430
+ <p class="definition">Definition at line <a class="el" href="VFGNode_8h_source.html#l00255">255</a> of file <a class="el" href="VFGNode_8h_source.html">VFGNode.h</a>.</p>
431
+ <div class="fragment"><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; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; }</div></div><!-- fragment -->
429
432
  </div>
430
433
  </div>
431
434
  <a id="acc772ccaec8d50c6c794ddf6433cc8da"></a>
@@ -452,8 +455,8 @@ Additional Inherited Members</h2></td></tr>
452
455
  </table>
453
456
  </div><div class="memdoc">
454
457
 
455
- <p class="definition">Definition at line <a class="el" href="VFGNode_8h_source.html#l00254">254</a> of file <a class="el" href="VFGNode_8h_source.html">VFGNode.h</a>.</p>
456
- <div class="fragment"><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> node-&gt;getNodeKind() == <a class="code" href="classSVF_1_1VFGNode.html#a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8">Store</a>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFGNode_html_a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8">SVF::VFGNode::Store</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00054">VFGNode.h:54</a></div></div>
458
+ <p class="definition">Definition at line <a class="el" href="VFGNode_8h_source.html#l00259">259</a> of file <a class="el" href="VFGNode_8h_source.html">VFGNode.h</a>.</p>
459
+ <div class="fragment"><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">return</span> node-&gt;getNodeKind() == <a class="code" href="classSVF_1_1VFGNode.html#a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8">Store</a>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFGNode_html_a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8">SVF::VFGNode::Store</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00054">VFGNode.h:54</a></div></div>
457
460
  </div><!-- fragment -->
458
461
  </div>
459
462
  </div>
@@ -481,8 +484,8 @@ Additional Inherited Members</h2></td></tr>
481
484
  </table>
482
485
  </div><div class="memdoc">
483
486
 
484
- <p class="definition">Definition at line <a class="el" href="VFGNode_8h_source.html#l00258">258</a> of file <a class="el" href="VFGNode_8h_source.html">VFGNode.h</a>.</p>
485
- <div class="fragment"><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">return</span> node-&gt;getNodeKind() == <a class="code" href="classSVF_1_1VFGNode.html#a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8">Store</a>;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFGNode_html_a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8">SVF::VFGNode::Store</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00054">VFGNode.h:54</a></div></div>
487
+ <p class="definition">Definition at line <a class="el" href="VFGNode_8h_source.html#l00263">263</a> of file <a class="el" href="VFGNode_8h_source.html">VFGNode.h</a>.</p>
488
+ <div class="fragment"><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> node-&gt;getNodeKind() == <a class="code" href="classSVF_1_1VFGNode.html#a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8">Store</a>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFGNode_html_a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8">SVF::VFGNode::Store</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00054">VFGNode.h:54</a></div></div>
486
489
  </div><!-- fragment -->
487
490
  </div>
488
491
  </div>
@@ -510,8 +513,42 @@ Additional Inherited Members</h2></td></tr>
510
513
  </table>
511
514
  </div><div class="memdoc">
512
515
 
513
- <p class="definition">Definition at line <a class="el" href="VFGNode_8h_source.html#l00262">262</a> of file <a class="el" href="VFGNode_8h_source.html">VFGNode.h</a>.</p>
514
- <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; <span class="keywordflow">return</span> node-&gt;getNodeKind() == <a class="code" href="classSVF_1_1VFGNode.html#a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8">Store</a>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFGNode_html_a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8">SVF::VFGNode::Store</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00054">VFGNode.h:54</a></div></div>
516
+ <p class="definition">Definition at line <a class="el" href="VFGNode_8h_source.html#l00267">267</a> of file <a class="el" href="VFGNode_8h_source.html">VFGNode.h</a>.</p>
517
+ <div class="fragment"><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; <span class="keywordflow">return</span> node-&gt;getNodeKind() == <a class="code" href="classSVF_1_1VFGNode.html#a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8">Store</a>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div><div class="ttc" id="classSVF_1_1VFGNode_html_a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a99a54cf322b0eec3a1ef109ce5f2db75a6df1bb8732d5402a6f40209ea8b803e8">SVF::VFGNode::Store</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00054">VFGNode.h:54</a></div></div>
518
+ </div><!-- fragment -->
519
+ </div>
520
+ </div>
521
+ <a id="aab00d7dcada369b19f68887d8e886ac4"></a>
522
+ <h2 class="memtitle"><span class="permalink"><a href="#aab00d7dcada369b19f68887d8e886ac4">&#9670;&nbsp;</a></span>getDefSVFVars()</h2>
523
+
524
+ <div class="memitem">
525
+ <div class="memproto">
526
+ <table class="mlabels">
527
+ <tr>
528
+ <td class="mlabels-left">
529
+ <table class="memname">
530
+ <tr>
531
+ <td class="memname">const <a class="el" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> StoreVFGNode::getDefSVFVars </td>
532
+ <td>(</td>
533
+ <td class="paramname"></td><td>)</td>
534
+ <td> const</td>
535
+ </tr>
536
+ </table>
537
+ </td>
538
+ <td class="mlabels-right">
539
+ <span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
540
+ </tr>
541
+ </table>
542
+ </div><div class="memdoc">
543
+
544
+ <p>Return the left hand side <a class="el" href="namespaceSVF.html" title="for isBitcode ">SVF</a> Vars. </p>
545
+
546
+ <p>Implements <a class="el" href="classSVF_1_1VFGNode.html#ac2161154777d5bedfdb541658efdc651">SVF::VFGNode</a>.</p>
547
+
548
+ <p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#l00069">69</a> of file <a class="el" href="VFG_8cpp_source.html">VFG.cpp</a>.</p>
549
+ <div class="fragment"><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> nb;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> edge: <a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>()) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1IndirectSVFGEdge.html">IndirectSVFGEdge</a> *iedge = SVFUtil::dyn_cast&lt;IndirectSVFGEdge&gt;(edge)) {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; nb |= iedge-&gt;getPointsTo();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> nb;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericNode_html_a2d9cd758d6f8c5189d9b90b74f43e009"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">SVF::GenericNode::getOutEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getOutEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00178">GenericGraph.h:178</a></div></div>
550
+ <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#l00088">SVFBasicTypes.h:88</a></div></div>
551
+ <div class="ttc" id="classSVF_1_1IndirectSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1IndirectSVFGEdge.html">SVF::IndirectSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00042">SVFGEdge.h:42</a></div></div>
515
552
  </div><!-- fragment -->
516
553
  </div>
517
554
  </div>
@@ -568,9 +605,9 @@ Additional Inherited Members</h2></td></tr>
568
605
 
569
606
  <p>Reimplemented from <a class="el" href="classSVF_1_1StmtVFGNode.html#aa5011ff12de490146ab106e90d0b6ad8">SVF::StmtVFGNode</a>.</p>
570
607
 
571
- <p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#l00064">64</a> of file <a class="el" href="VFG_8cpp_source.html">VFG.cpp</a>.</p>
572
- <div class="fragment"><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; std::string str;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;StoreVFGNode ID: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; rawstr &lt;&lt; <a class="code" href="classSVF_1_1StmtVFGNode.html#a4dd7615f42971da9b6ec1dc04f0ec4e6">getPAGEdge</a>()-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_ad0b4dbe87e009518f22360c48b0d0c22"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">SVF::SVFStmt::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00063">SVFStatements.cpp:63</a></div></div>
573
- <div class="ttc" id="classSVF_1_1StmtVFGNode_html_a4dd7615f42971da9b6ec1dc04f0ec4e6"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a4dd7615f42971da9b6ec1dc04f0ec4e6">SVF::StmtVFGNode::getPAGEdge</a></div><div class="ttdeci">const PAGEdge * getPAGEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00133">VFGNode.h:133</a></div></div>
608
+ <p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#l00079">79</a> of file <a class="el" href="VFG_8cpp_source.html">VFG.cpp</a>.</p>
609
+ <div class="fragment"><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; std::string str;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;StoreVFGNode ID: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; rawstr &lt;&lt; <a class="code" href="classSVF_1_1StmtVFGNode.html#a4dd7615f42971da9b6ec1dc04f0ec4e6">getPAGEdge</a>()-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFStmt_html_ad0b4dbe87e009518f22360c48b0d0c22"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">SVF::SVFStmt::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00063">SVFStatements.cpp:63</a></div></div>
610
+ <div class="ttc" id="classSVF_1_1StmtVFGNode_html_a4dd7615f42971da9b6ec1dc04f0ec4e6"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a4dd7615f42971da9b6ec1dc04f0ec4e6">SVF::StmtVFGNode::getPAGEdge</a></div><div class="ttdeci">const PAGEdge * getPAGEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00136">VFGNode.h:136</a></div></div>
574
611
  <div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdoc">LLVM outputs. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
575
612
  <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00165">GenericGraph.h:165</a></div></div>
576
613
  </div><!-- fragment -->
@@ -586,8 +586,8 @@ Private Attributes</h2></td></tr>
586
586
  <p>Return size of this object based on LLVM value. </p>
587
587
  <p>Return size of this Object </p>
588
588
 
589
- <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00655">655</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
590
- <div class="fragment"><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;{</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(ety &amp;&amp; <span class="stringliteral">&quot;type is null?&quot;</span>);</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFields = 1;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(ety) || SVFUtil::isa&lt;ArrayType&gt;(ety))</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; {</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; numOfFields = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">getNumOfFlattenElements</a>(ety);</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; }</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">return</span> numOfFields;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</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>
589
+ <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00658">658</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
590
+ <div class="fragment"><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;{</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(ety &amp;&amp; <span class="stringliteral">&quot;type is null?&quot;</span>);</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFields = 1;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(ety) || SVFUtil::isa&lt;ArrayType&gt;(ety))</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; numOfFields = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">getNumOfFlattenElements</a>(ety);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; }</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">return</span> numOfFields;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</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>
591
591
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00077">SVFBasicTypes.h:77</a></div></div>
592
592
  <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#l00106">SymbolTableInfo.cpp:106</a></div></div>
593
593
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aec579894eed558ea89740b68360187aa"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">SVF::SymbolTableInfo::getNumOfFlattenElements</a></div><div class="ttdeci">u32_t getNumOfFlattenElements(const Type *T)</div><div class="ttdoc">Number of flattenned elements of an array or struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00398">SymbolTableInfo.cpp:398</a></div></div>
@@ -722,7 +722,8 @@ Private Attributes</h2></td></tr>
722
722
  <p>This is for <code>alloca &lt;ty&gt; &lt;NumElements&gt;</code>. For example, <code>alloca i64 3</code> allocates 3 i64 on the stack (objSize=3) In most cases, <code>NumElements</code> is not specified in the instruction, which means there is only one element (objSize=1). </p>
723
723
 
724
724
  <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00590">590</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
725
- <div class="fragment"><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; </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> objSize = 1;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="comment">// Global variable</span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;Function&gt;(val))</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; {</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515">ObjTypeInfo::FUNCTION_OBJ</a>);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,val);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">getObjSize</a>(typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">getType</a>());</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; }</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a3bacb4f95c73e6d794901d01c6b65a83">AllocaInst</a>* allocaInst = SVFUtil::dyn_cast&lt;AllocaInst&gt;(val))</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; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5">ObjTypeInfo::STACK_OBJ</a>);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,val);</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *sz = SVFUtil::dyn_cast&lt;ConstantInt&gt;(allocaInst-&gt;getArraySize()))</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; objSize = sz-&gt;getZExtValue() * <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">getObjSize</a>(typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">getType</a>());</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">getObjSize</a>(typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">getType</a>());</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val))</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b">ObjTypeInfo::GLOBVAR_OBJ</a>);</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;isConstantObjSym(val))</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c">ObjTypeInfo::CONST_GLOBAL_OBJ</a>);</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,val);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">getObjSize</a>(typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">getType</a>());</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(val) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">isHeapAllocExtCall</a>(SVFUtil::cast&lt;Instruction&gt;(val)))</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; {</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a9fca576448cc1cb38c894a7ae3d9ec56">analyzeHeapObjType</a>(typeinfo,val);</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="comment">// Heap object, label its field as infinite here</span></div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; objSize = typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(val) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">isStaticExtCall</a>(SVFUtil::cast&lt;Instruction&gt;(val)))</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_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">analyzeStaticObjType</a>(typeinfo,val);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="comment">// static object allocated before main, label its field as infinite here</span></div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; objSize = typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4d4191a1c81d80bf26aac120ed880135">ArgInProgEntryFunction</a>(val))</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; {</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">analyzeStaticObjType</a>(typeinfo,val);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="comment">// user input data, label its field as infinite here</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; objSize = typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVFUtil::isConstantData</a>(val))</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; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e">ObjTypeInfo::CONST_DATA</a>);</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">getNumOfFlattenElements</a>(val-&gt;getType());</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="stringliteral">&quot;what other object do we have??&quot;</span>);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</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; <span class="comment">// Reset maxOffsetLimit if it is over the total fieldNum of this object</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">if</span>(typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>() &gt; objSize)</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aff17d13e520a731accedd06350af6221">setNumOfElements</a>(objSize);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;}</div><div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e">SVF::ObjTypeInfo::CONST_DATA</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00599">SymbolTableInfo.h:599</a></div></div>
725
+ <div class="fragment"><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; </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> objSize = 1;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="comment">// Global variable</span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;Function&gt;(val))</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; {</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515">ObjTypeInfo::FUNCTION_OBJ</a>);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,val);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">getObjSize</a>(typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">getType</a>());</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; }</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a3bacb4f95c73e6d794901d01c6b65a83">AllocaInst</a>* allocaInst = SVFUtil::dyn_cast&lt;AllocaInst&gt;(val))</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; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5">ObjTypeInfo::STACK_OBJ</a>);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,val);</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *sz = SVFUtil::dyn_cast&lt;ConstantInt&gt;(allocaInst-&gt;getArraySize())){</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; objSize = sz-&gt;getZExtValue() * <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">getObjSize</a>(typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">getType</a>());</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">if</span>(sz-&gt;getZExtValue() &gt; 1)</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047">ObjTypeInfo::CONST_ARRAY_OBJ</a>);</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">getObjSize</a>(typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">getType</a>());</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val))</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b">ObjTypeInfo::GLOBVAR_OBJ</a>);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;isConstantObjSym(val))</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c">ObjTypeInfo::CONST_GLOBAL_OBJ</a>);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,val);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">getObjSize</a>(typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">getType</a>());</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; }</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(val) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">isHeapAllocExtCall</a>(SVFUtil::cast&lt;Instruction&gt;(val)))</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; {</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a9fca576448cc1cb38c894a7ae3d9ec56">analyzeHeapObjType</a>(typeinfo,val);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="comment">// Heap object, label its field as infinite here</span></div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; objSize = typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; }</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(val) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">isStaticExtCall</a>(SVFUtil::cast&lt;Instruction&gt;(val)))</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_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">analyzeStaticObjType</a>(typeinfo,val);</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="comment">// static object allocated before main, label its field as infinite here</span></div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; objSize = typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; }</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4d4191a1c81d80bf26aac120ed880135">ArgInProgEntryFunction</a>(val))</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; {</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">analyzeStaticObjType</a>(typeinfo,val);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="comment">// user input data, label its field as infinite here</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; objSize = typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVFUtil::isConstantData</a>(val))</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e">ObjTypeInfo::CONST_DATA</a>);</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">getNumOfFlattenElements</a>(val-&gt;getType());</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; }</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="stringliteral">&quot;what other object do we have??&quot;</span>);</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="comment">// Reset maxOffsetLimit if it is over the total fieldNum of this object</span></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">if</span>(typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>() &gt; objSize)</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aff17d13e520a731accedd06350af6221">setNumOfElements</a>(objSize);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;}</div><div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047">SVF::ObjTypeInfo::CONST_ARRAY_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00597">SymbolTableInfo.h:597</a></div></div>
726
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e">SVF::ObjTypeInfo::CONST_DATA</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00599">SymbolTableInfo.h:599</a></div></div>
726
727
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4d4191a1c81d80bf26aac120ed880135"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4d4191a1c81d80bf26aac120ed880135">SVF::SVFUtil::ArgInProgEntryFunction</a></div><div class="ttdeci">bool ArgInProgEntryFunction(const Value *val)</div><div class="ttdoc">Return true if this is an argument of a program entry function (e.g. main) </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00454">LLVMUtil.h:454</a></div></div>
727
728
  <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>
728
729
  <div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00119">BasicTypes.h:119</a></div></div>
@@ -735,7 +736,7 @@ Private Attributes</h2></td></tr>
735
736
  <div class="ttc" id="namespaceSVF_html_a3bacb4f95c73e6d794901d01c6b65a83"><div class="ttname"><a href="namespaceSVF.html#a3bacb4f95c73e6d794901d01c6b65a83">SVF::AllocaInst</a></div><div class="ttdeci">llvm::AllocaInst AllocaInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00135">BasicTypes.h:135</a></div></div>
736
737
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ae62938f722543d6d7fc201b685be1abf"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVF::SVFUtil::isStaticExtCall</a></div><div class="ttdeci">bool isStaticExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00195">LLVMUtil.h:195</a></div></div>
737
738
  <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#l00106">SymbolTableInfo.cpp:106</a></div></div>
738
- <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_abcc05a5ffa5fcddb7220e1c691d3ed87"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">SVF::SymbolTableBuilder::getObjSize</a></div><div class="ttdeci">u32_t getObjSize(const Type *type)</div><div class="ttdoc">Return size of this object based on LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00655">SymbolTableBuilder.cpp:655</a></div></div>
739
+ <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_abcc05a5ffa5fcddb7220e1c691d3ed87"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abcc05a5ffa5fcddb7220e1c691d3ed87">SVF::SymbolTableBuilder::getObjSize</a></div><div class="ttdeci">u32_t getObjSize(const Type *type)</div><div class="ttdoc">Return size of this object based on LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00658">SymbolTableBuilder.cpp:658</a></div></div>
739
740
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a93ac673b885633849fa484938405ca75"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">SVF::SVFUtil::isHeapAllocExtCall</a></div><div class="ttdeci">bool isHeapAllocExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00117">LLVMUtil.h:117</a></div></div>
740
741
  <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_afe2806a0aef240ab313975decfe362f7"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">SVF::SymbolTableBuilder::analyzeStaticObjType</a></div><div class="ttdeci">void analyzeStaticObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of heap and static objects. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00574">SymbolTableBuilder.cpp:574</a></div></div>
741
742
  <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c">SVF::ObjTypeInfo::CONST_GLOBAL_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00598">SymbolTableInfo.h:598</a></div></div>
@@ -403,8 +403,8 @@ Additional Inherited Members</h2></td></tr>
403
403
 
404
404
  <p>Reimplemented from <a class="el" href="classSVF_1_1IndirectSVFGEdge.html#a33e6221e5005fda68903f4cdadf58ce8">SVF::IndirectSVFGEdge</a>.</p>
405
405
 
406
- <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00158">158</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
407
- <div class="fragment"><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::string str;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ThreadMHPIndSVFGEdge: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericEdge_html_ad9edb45e74ae675d9da82f5acf02d56e"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">SVF::GenericEdge::getDstID</a></div><div class="ttdeci">NodeID getDstID() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00077">GenericGraph.h:77</a></div></div>
406
+ <p class="definition">Definition at line <a class="el" href="SVFG_8cpp_source.html#l00167">167</a> of file <a class="el" href="SVFG_8cpp_source.html">SVFG.cpp</a>.</p>
407
+ <div class="fragment"><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; std::string str;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ThreadMHPIndSVFGEdge: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericEdge_html_ad9edb45e74ae675d9da82f5acf02d56e"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">SVF::GenericEdge::getDstID</a></div><div class="ttdeci">NodeID getDstID() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00077">GenericGraph.h:77</a></div></div>
408
408
  <div class="ttc" id="classSVF_1_1GenericEdge_html_ae6792506a0150a9400d635eceab7f9e7"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">SVF::GenericEdge::getSrcID</a></div><div class="ttdeci">NodeID getSrcID() const</div><div class="ttdoc">get methods of the components </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00073">GenericGraph.h:73</a></div></div>
409
409
  <div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdoc">LLVM outputs. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
410
410
  </div><!-- fragment -->