svf-tools 1.0.338 → 1.0.342

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 (201) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +4 -4
  3. package/SVF-doxygen/html/html/BasicTypes_8h_source.html +2 -2
  4. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  5. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +3 -3
  8. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +3 -3
  9. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +1 -1
  10. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +38 -36
  11. package/SVF-doxygen/html/html/ICFG_8h_source.html +18 -18
  12. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
  13. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +4 -4
  17. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
  18. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/Options_8cpp_source.html +2 -2
  20. package/SVF-doxygen/html/html/Options_8h_source.html +2 -2
  21. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  22. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +6 -6
  23. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +2 -2
  24. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +4 -4
  25. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
  26. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
  27. package/SVF-doxygen/html/html/SVFG_8h_source.html +4 -4
  28. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -1
  29. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +7 -7
  30. package/SVF-doxygen/html/html/SVFIR_8h_source.html +12 -12
  31. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +20 -20
  32. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +8 -8
  33. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +5 -5
  34. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +3 -3
  35. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +91 -87
  36. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +20 -19
  38. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
  39. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +30 -28
  40. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +48 -46
  41. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  42. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  43. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +9 -9
  44. package/SVF-doxygen/html/html/VFG_8cpp_source.html +3 -3
  45. package/SVF-doxygen/html/html/VFG_8h_source.html +4 -4
  46. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +3 -3
  48. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +3 -3
  49. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +4 -4
  50. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
  51. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +3 -3
  52. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +6 -5
  53. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  54. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +15 -12
  55. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +5 -3
  56. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +2 -2
  57. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +1 -1
  58. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +4 -4
  59. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +1 -1
  60. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +13 -11
  61. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +12 -12
  62. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +12 -12
  63. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +6 -5
  64. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  65. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +1 -1
  66. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
  67. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +3 -3
  68. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +2 -2
  69. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +46 -14
  70. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +2 -2
  71. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +45 -14
  72. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +17 -17
  73. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +3 -3
  74. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +2 -2
  75. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +4 -2
  76. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +4 -2
  77. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +1 -3
  78. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  79. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +35 -35
  80. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +4 -4
  81. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +30 -30
  82. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +3 -1
  83. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +46 -46
  84. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +15 -15
  85. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +2 -2
  86. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  87. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  88. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +7 -3
  89. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +2 -2
  90. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  91. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
  92. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +4 -4
  93. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +1 -1
  94. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  95. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +6 -6
  96. package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +23 -22
  97. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +70 -47
  98. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +4 -4
  99. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +4 -4
  100. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +2 -2
  101. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +4 -4
  102. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +17 -15
  103. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +141 -106
  104. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +21 -21
  105. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +27 -27
  106. package/SVF-doxygen/html/html/classSVF_1_1Options.html +26 -26
  107. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +1 -1
  108. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  109. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +6 -6
  110. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +6 -6
  111. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +5 -5
  112. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +5 -3
  113. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +2 -2
  114. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +4 -4
  115. package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +75 -73
  116. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +60 -16
  117. package/SVF-doxygen/html/html/classSVF_1_1RetPN.png +0 -0
  118. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +4 -4
  119. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +8 -8
  120. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +2 -2
  121. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +12 -12
  122. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +12 -12
  123. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +1 -1
  124. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +3 -3
  125. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.png +0 -0
  126. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  127. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +24 -24
  128. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +4 -4
  129. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +22 -21
  130. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +34 -34
  131. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +1 -1
  132. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +4 -4
  133. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +4 -4
  134. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
  135. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
  136. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
  137. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +15 -15
  138. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +10 -9
  139. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  140. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +6 -6
  141. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +20 -14
  142. package/SVF-doxygen/html/html/classSVF_1_1ValVar.png +0 -0
  143. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +74 -72
  144. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +60 -16
  145. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.png +0 -0
  146. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +4 -4
  147. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +3 -3
  148. package/SVF-doxygen/html/html/functions_c.html +18 -13
  149. package/SVF-doxygen/html/html/functions_eval_c.html +5 -2
  150. package/SVF-doxygen/html/html/functions_func_c.html +19 -19
  151. package/SVF-doxygen/html/html/functions_func_i.html +19 -17
  152. package/SVF-doxygen/html/html/functions_i.html +19 -17
  153. package/SVF-doxygen/html/html/functions_m.html +1 -1
  154. package/SVF-doxygen/html/html/functions_n.html +3 -3
  155. package/SVF-doxygen/html/html/functions_o.html +10 -10
  156. package/SVF-doxygen/html/html/functions_p.html +19 -28
  157. package/SVF-doxygen/html/html/functions_s.html +13 -12
  158. package/SVF-doxygen/html/html/functions_t.html +4 -4
  159. package/SVF-doxygen/html/html/functions_v.html +3 -3
  160. package/SVF-doxygen/html/html/functions_vars_p.html +0 -3
  161. package/SVF-doxygen/html/html/functions_vars_s.html +3 -0
  162. package/SVF-doxygen/html/html/functions_w.html +5 -9
  163. package/SVF-doxygen/html/html/hierarchy.html +5 -5
  164. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +11 -11
  165. package/SVF-doxygen/html/html/search/all_10.js +11 -12
  166. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  167. package/SVF-doxygen/html/html/search/all_13.js +6 -5
  168. package/SVF-doxygen/html/html/search/all_14.js +5 -5
  169. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  170. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  171. package/SVF-doxygen/html/html/search/all_3.js +3 -2
  172. package/SVF-doxygen/html/html/search/all_9.js +4 -4
  173. package/SVF-doxygen/html/html/search/all_c.js +1 -1
  174. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  175. package/SVF-doxygen/html/html/search/all_e.js +1 -1
  176. package/SVF-doxygen/html/html/search/all_f.js +2 -2
  177. package/SVF-doxygen/html/html/search/enumvalues_2.js +2 -1
  178. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  179. package/SVF-doxygen/html/html/search/functions_8.js +4 -4
  180. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  181. package/SVF-doxygen/html/html/search/variables_10.js +0 -1
  182. package/SVF-doxygen/html/html/search/variables_13.js +1 -0
  183. package/SVF-doxygen/html/html/search/variables_14.js +2 -2
  184. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  185. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +17 -17
  186. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  187. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  188. package/include/MemoryModel/SVFIR.h +1 -1
  189. package/include/MemoryModel/SVFVariables.h +25 -4
  190. package/include/MemoryModel/SymbolTableInfo.h +17 -11
  191. package/include/Util/Options.h +1 -1
  192. package/lib/Graphs/ICFG.cpp +39 -27
  193. package/lib/MSSA/MemSSA.cpp +1 -1
  194. package/lib/MemoryModel/SVFStatements.cpp +53 -49
  195. package/lib/MemoryModel/SVFVariables.cpp +10 -10
  196. package/lib/MemoryModel/SymbolTableInfo.cpp +12 -7
  197. package/lib/SVF-FE/SymbolTableBuilder.cpp +10 -10
  198. package/lib/Util/Options.cpp +3 -3
  199. package/lib/Util/PTAStat.cpp +3 -3
  200. package/lib/Util/SVFUtil.cpp +2 -0
  201. package/package.json +1 -1
@@ -114,7 +114,7 @@ Static Public Member Functions</h2></td></tr>
114
114
  struct llvm::DOTGraphTraits&lt; ICFG * &gt;</h3>
115
115
 
116
116
 
117
- <p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00446">446</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
117
+ <p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00458">458</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
118
118
  </div><h2 class="groupheader">Member Typedef Documentation</h2>
119
119
  <a id="a7ef3894da60c3e3350b8d2de3e94a562"></a>
120
120
  <h2 class="memtitle"><span class="permalink"><a href="#a7ef3894da60c3e3350b8d2de3e94a562">&#9670;&nbsp;</a></span>NodeType</h2>
@@ -128,7 +128,7 @@ struct llvm::DOTGraphTraits&lt; ICFG * &gt;</h3>
128
128
  </table>
129
129
  </div><div class="memdoc">
130
130
 
131
- <p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00449">449</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
131
+ <p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00461">461</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
132
132
 
133
133
  </div>
134
134
  </div>
@@ -157,8 +157,8 @@ struct llvm::DOTGraphTraits&lt; ICFG * &gt;</h3>
157
157
  </table>
158
158
  </div><div class="memdoc">
159
159
 
160
- <p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00450">450</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
161
- <div class="fragment"><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; :</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; DOTGraphTraits&lt;SVFIR*&gt;(isSimple)</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div></div><!-- fragment -->
160
+ <p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00462">462</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
161
+ <div class="fragment"><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; :</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; DOTGraphTraits&lt;SVFIR*&gt;(isSimple)</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; }</div></div><!-- fragment -->
162
162
  </div>
163
163
  </div>
164
164
  <h2 class="groupheader">Member Function Documentation</h2>
@@ -204,8 +204,8 @@ template&lt;class EdgeIter &gt; </div>
204
204
  </table>
205
205
  </div><div class="memdoc">
206
206
 
207
- <p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00556">556</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
208
- <div class="fragment"><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; {</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CallCFGEdge&gt;(edge))</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=solid,color=red&quot;</span>;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetCFGEdge&gt;(edge))</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=solid,color=blue&quot;</span>;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=solid&quot;</span>;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; }</div><div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00042">ICFGEdge.h:42</a></div></div>
207
+ <p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00568">568</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
208
+ <div class="fragment"><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; {</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CallCFGEdge&gt;(edge))</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=solid,color=red&quot;</span>;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetCFGEdge&gt;(edge))</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=solid,color=blue&quot;</span>;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;style=solid&quot;</span>;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; }</div><div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00042">ICFGEdge.h:42</a></div></div>
209
209
  <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>
210
210
  </div><!-- fragment -->
211
211
  </div>
@@ -246,8 +246,8 @@ template&lt;class EdgeIter &gt; </div>
246
246
  </table>
247
247
  </div><div class="memdoc">
248
248
 
249
- <p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00570">570</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
250
- <div class="fragment"><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; std::string str;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a>* dirCall = SVFUtil::dyn_cast&lt;CallCFGEdge&gt;(edge))</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; rawstr &lt;&lt; dirCall-&gt;getCallSite();</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a>* dirRet = SVFUtil::dyn_cast&lt;RetCFGEdge&gt;(edge))</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; rawstr &lt;&lt; dirRet-&gt;getCallSite();</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; }</div><div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00042">ICFGEdge.h:42</a></div></div>
249
+ <p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00582">582</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
250
+ <div class="fragment"><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</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; std::string str;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a>* dirCall = SVFUtil::dyn_cast&lt;CallCFGEdge&gt;(edge))</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; rawstr &lt;&lt; dirCall-&gt;getCallSite();</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a>* dirRet = SVFUtil::dyn_cast&lt;RetCFGEdge&gt;(edge))</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; rawstr &lt;&lt; dirRet-&gt;getCallSite();</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; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; }</div><div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00042">ICFGEdge.h:42</a></div></div>
251
251
  <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>
252
252
  <div class="ttc" id="classSVF_1_1CallCFGEdge_html"><div class="ttname"><a href="classSVF_1_1CallCFGEdge.html">SVF::CallCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00162">ICFGEdge.h:162</a></div></div>
253
253
  <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="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
@@ -281,8 +281,8 @@ template&lt;class EdgeIter &gt; </div>
281
281
 
282
282
  <p>Return name of the graph. </p>
283
283
 
284
- <p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00456">456</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
285
- <div class="fragment"><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ICFG&quot;</span>;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div></div><!-- fragment -->
284
+ <p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00468">468</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
285
+ <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="keywordflow">return</span> <span class="stringliteral">&quot;ICFG&quot;</span>;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; }</div></div><!-- fragment -->
286
286
  </div>
287
287
  </div>
288
288
  <a id="aef77eaa614a202f39964d0a0917b5140"></a>
@@ -319,8 +319,8 @@ template&lt;class EdgeIter &gt; </div>
319
319
  </table>
320
320
  </div><div class="memdoc">
321
321
 
322
- <p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00518">518</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
323
- <div class="fragment"><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; {</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; std::string str;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><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; <span class="keywordflow">if</span>(SVFUtil::isa&lt;IntraBlockNode&gt;(node))</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; {</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=black&quot;</span>;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; }</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;FunEntryBlockNode&gt;(node))</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; rawstr &lt;&lt; <span class="stringliteral">&quot;color=yellow&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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;FunExitBlockNode&gt;(node))</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; rawstr &lt;&lt; <span class="stringliteral">&quot;color=green&quot;</span>;</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> <span class="keywordflow">if</span>(SVFUtil::isa&lt;CallBlockNode&gt;(node))</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=red&quot;</span>;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; }</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;RetBlockNode&gt;(node))</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=blue&quot;</span>;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; }</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalBlockNode&gt;(node))</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=purple&quot;</span>;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no such kind of node!!&quot;</span>);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</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>
322
+ <p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00530">530</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
323
+ <div class="fragment"><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; std::string str;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</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">if</span>(SVFUtil::isa&lt;IntraBlockNode&gt;(node))</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=black&quot;</span>;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; }</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;FunEntryBlockNode&gt;(node))</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=yellow&quot;</span>;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; }</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;FunExitBlockNode&gt;(node))</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=green&quot;</span>;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;CallBlockNode&gt;(node))</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=red&quot;</span>;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; }</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;RetBlockNode&gt;(node))</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; rawstr &lt;&lt; <span class="stringliteral">&quot;color=blue&quot;</span>;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalBlockNode&gt;(node))</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;color=purple&quot;</span>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no such kind of node!!&quot;</span>);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</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>
324
324
  <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="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
325
325
  </div><!-- fragment -->
326
326
  </div>
@@ -359,8 +359,8 @@ template&lt;class EdgeIter &gt; </div>
359
359
  </table>
360
360
  </div><div class="memdoc">
361
361
 
362
- <p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00461">461</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
363
- <div class="fragment"><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span> getSimpleNodeLabel(node, graph);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div></div><!-- fragment -->
362
+ <p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00473">473</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
363
+ <div class="fragment"><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">return</span> getSimpleNodeLabel(node, graph);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</div></div><!-- fragment -->
364
364
  </div>
365
365
  </div>
366
366
  <a id="a1cf0470d3e9821152416e3bf5236e553"></a>
@@ -399,8 +399,8 @@ template&lt;class EdgeIter &gt; </div>
399
399
 
400
400
  <p>Return the label of an ICFG node. </p>
401
401
 
402
- <p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00467">467</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
403
- <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; std::string str;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;NodeID: &quot;</span> &lt;&lt; node-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1IntraBlockNode.html">IntraBlockNode</a>* bNode = SVFUtil::dyn_cast&lt;IntraBlockNode&gt;(node))</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;IntraBlockNode ID: &quot;</span> &lt;&lt; bNode-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; \t&quot;</span>;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFIR::SVFStmtList</a>&amp; edges = SVFIR::getPAG()-&gt;getSVFStmtList(bNode);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">if</span> (edges.empty()) {</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(bNode-&gt;getInst()) &lt;&lt; <span class="stringliteral">&quot; \t&quot;</span>;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">for</span> (SVFIR::SVFStmtList::iterator it = edges.begin(), eit = edges.end(); it != eit; ++it)</div><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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *it;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; rawstr &lt;&lt; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>();</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; }</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; {fun: &quot;</span> &lt;&lt; bNode-&gt;getFun()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FunEntryBlockNode.html">FunEntryBlockNode</a>* <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a> = SVFUtil::dyn_cast&lt;FunEntryBlockNode&gt;(node))</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; {</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; rawstr &lt;&lt; <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>-&gt;toString();</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FunExitBlockNode.html">FunExitBlockNode</a>* <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a> = SVFUtil::dyn_cast&lt;FunExitBlockNode&gt;(node))</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; rawstr &lt;&lt; <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>-&gt;toString();</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* call = SVFUtil::dyn_cast&lt;CallBlockNode&gt;(node))</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; rawstr &lt;&lt; call-&gt;toString();</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* ret = SVFUtil::dyn_cast&lt;RetBlockNode&gt;(node))</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; rawstr &lt;&lt; ret-&gt;toString();</div><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="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GlobalBlockNode.html">GlobalBlockNode</a>* glob = SVFUtil::dyn_cast&lt;GlobalBlockNode&gt;(node) )</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFIR::SVFStmtList</a>&amp; edges = SVFIR::getPAG()-&gt;getSVFStmtList(glob);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">for</span> (SVFIR::SVFStmtList::iterator it = edges.begin(), eit = edges.end(); it != eit; ++it)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *it;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; rawstr &lt;&lt; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>();</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; }</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; }</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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what else kinds of nodes do we have??&quot;</span>);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="ttc" id="util_8h_html_a43b6ea6be735bb828bc062c70cadeff8"><div class="ttname"><a href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a></div><div class="ttdeci">VOID_OR_INT exit()</div></div>
402
+ <p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00479">479</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
403
+ <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; std::string str;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;NodeID: &quot;</span> &lt;&lt; node-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1IntraBlockNode.html">IntraBlockNode</a>* bNode = SVFUtil::dyn_cast&lt;IntraBlockNode&gt;(node))</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;IntraBlockNode ID: &quot;</span> &lt;&lt; bNode-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; \t&quot;</span>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFIR::SVFStmtList</a>&amp; edges = SVFIR::getPAG()-&gt;getSVFStmtList(bNode);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">if</span> (edges.empty()) {</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(bNode-&gt;getInst()) &lt;&lt; <span class="stringliteral">&quot; \t&quot;</span>;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">for</span> (SVFIR::SVFStmtList::iterator it = edges.begin(), eit = edges.end(); it != eit; ++it)</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *it;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; rawstr &lt;&lt; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>();</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; {fun: &quot;</span> &lt;&lt; bNode-&gt;getFun()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FunEntryBlockNode.html">FunEntryBlockNode</a>* <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a> = SVFUtil::dyn_cast&lt;FunEntryBlockNode&gt;(node))</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; rawstr &lt;&lt; <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>-&gt;toString();</div><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="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FunExitBlockNode.html">FunExitBlockNode</a>* <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a> = SVFUtil::dyn_cast&lt;FunExitBlockNode&gt;(node))</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; rawstr &lt;&lt; <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>-&gt;toString();</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* call = SVFUtil::dyn_cast&lt;CallBlockNode&gt;(node))</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; rawstr &lt;&lt; call-&gt;toString();</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; }</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* ret = SVFUtil::dyn_cast&lt;RetBlockNode&gt;(node))</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; rawstr &lt;&lt; ret-&gt;toString();</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GlobalBlockNode.html">GlobalBlockNode</a>* glob = SVFUtil::dyn_cast&lt;GlobalBlockNode&gt;(node) )</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; {</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFIR::SVFStmtList</a>&amp; edges = SVFIR::getPAG()-&gt;getSVFStmtList(glob);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">for</span> (SVFIR::SVFStmtList::iterator it = edges.begin(), eit = edges.end(); it != eit; ++it)</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; {</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *it;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; rawstr &lt;&lt; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">toString</a>();</div><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; }</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what else kinds of nodes do we have??&quot;</span>);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; }</div><div class="ttc" id="util_8h_html_a43b6ea6be735bb828bc062c70cadeff8"><div class="ttname"><a href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a></div><div class="ttdeci">VOID_OR_INT exit()</div></div>
404
404
  <div class="ttc" id="classSVF_1_1SVFIR_html_a6bc360d2604ae4a0af74530b263b10d9"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVF::SVFIR::SVFStmtList</a></div><div class="ttdeci">std::vector&lt; const SVFStmt * &gt; SVFStmtList</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00056">SVFIR.h:56</a></div></div>
405
405
  <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>
406
406
  <div class="ttc" id="classSVF_1_1GlobalBlockNode_html"><div class="ttname"><a href="classSVF_1_1GlobalBlockNode.html">SVF::GlobalBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00142">ICFGNode.h:142</a></div></div>
@@ -409,7 +409,7 @@ template&lt;class EdgeIter &gt; </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="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
410
410
  <div class="ttc" id="classSVF_1_1RetBlockNode_html"><div class="ttname"><a href="classSVF_1_1RetBlockNode.html">SVF::RetBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00459">ICFGNode.h:459</a></div></div>
411
411
  <div class="ttc" id="classSVF_1_1FunExitBlockNode_html"><div class="ttname"><a href="classSVF_1_1FunExitBlockNode.html">SVF::FunExitBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00308">ICFGNode.h:308</a></div></div>
412
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00388">SVFUtil.cpp:388</a></div></div>
412
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00390">SVFUtil.cpp:390</a></div></div>
413
413
  <div class="ttc" id="classSVF_1_1IntraBlockNode_html"><div class="ttname"><a href="classSVF_1_1IntraBlockNode.html">SVF::IntraBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00175">ICFGNode.h:175</a></div></div>
414
414
  <div class="ttc" id="cuddInt_8c_html_a936a27e51e66afb57c2b3a12d78a238e"><div class="ttname"><a href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a></div><div class="ttdeci">static int * entry</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l08422">cuddInt.c:8422</a></div></div>
415
415
  <div class="ttc" id="classSVF_1_1CallBlockNode_html"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html">SVF::CallBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00364">ICFGNode.h:364</a></div></div>
@@ -311,7 +311,7 @@ Functions</h2></td></tr>
311
311
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00137">WorkList.h:137</a></div></div>
312
312
  <div class="ttc" id="classSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00206">GenericGraph.h:206</a></div></div>
313
313
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00174">WorkList.h:174</a></div></div>
314
- <div class="ttc" id="classSVF_1_1ICFG_html_ab7b0b3088b46ad65451905cc4f567a7b"><div class="ttname"><a href="classSVF_1_1ICFG.html#ab7b0b3088b46ad65451905cc4f567a7b">SVF::ICFG::getBlockICFGNode</a></div><div class="ttdeci">ICFGNode * getBlockICFGNode(const Instruction *inst)</div><div class="ttdoc">Get a basic block ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00181">ICFG.cpp:181</a></div></div>
314
+ <div class="ttc" id="classSVF_1_1ICFG_html_ab7b0b3088b46ad65451905cc4f567a7b"><div class="ttname"><a href="classSVF_1_1ICFG.html#ab7b0b3088b46ad65451905cc4f567a7b">SVF::ICFG::getBlockICFGNode</a></div><div class="ttdeci">ICFGNode * getBlockICFGNode(const Instruction *inst)</div><div class="ttdoc">Get a basic block ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00193">ICFG.cpp:193</a></div></div>
315
315
  </div><!-- fragment -->
316
316
  </div>
317
317
  </div>
@@ -126,7 +126,7 @@ $(function() {
126
126
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
127
127
  <div class="ttc" id="classSVF_1_1PointsTo_html_a8f741cdffbf3c5fe0f602cdca677dee6"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">SVF::PointsTo::end</a></div><div class="ttdeci">const_iterator end(void) const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00128">PointsTo.h:128</a></div></div>
128
128
  <div class="ttc" id="LLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
129
- <div class="ttc" id="classSVF_1_1ICFG_html_ab7b0b3088b46ad65451905cc4f567a7b"><div class="ttname"><a href="classSVF_1_1ICFG.html#ab7b0b3088b46ad65451905cc4f567a7b">SVF::ICFG::getBlockICFGNode</a></div><div class="ttdeci">ICFGNode * getBlockICFGNode(const Instruction *inst)</div><div class="ttdoc">Get a basic block ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00181">ICFG.cpp:181</a></div></div>
129
+ <div class="ttc" id="classSVF_1_1ICFG_html_ab7b0b3088b46ad65451905cc4f567a7b"><div class="ttname"><a href="classSVF_1_1ICFG.html#ab7b0b3088b46ad65451905cc4f567a7b">SVF::ICFG::getBlockICFGNode</a></div><div class="ttdeci">ICFGNode * getBlockICFGNode(const Instruction *inst)</div><div class="ttdoc">Get a basic block ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00193">ICFG.cpp:193</a></div></div>
130
130
  <div class="ttc" id="namespaceSVF_html_ae941b2925716d8ebe14bf190aa8dfd06"><div class="ttname"><a href="namespaceSVF.html#ae941b2925716d8ebe14bf190aa8dfd06">SVF::AliasResult</a></div><div class="ttdeci">llvm::AliasResult AliasResult</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00135">BasicTypes.h:135</a></div></div>
131
131
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html">SVF::PointerAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00057">PointerAnalysis.h:57</a></div></div>
132
132
  <div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
@@ -409,7 +409,7 @@ public:
409
409
  {
410
410
  const MemObj* obj = getObject(id);
411
411
  assert(obj && "not an object node?");
412
- return SymbolTableInfo::isConstantObj(id) || obj->isConstant();
412
+ return SymbolTableInfo::isConstantObj(id) || obj->isConstDataOrConstGlobal();
413
413
  }
414
414
  inline bool isNonPointerObj(NodeID id) const
415
415
  {
@@ -285,12 +285,16 @@ public:
285
285
  {
286
286
  return node->getNodeKind() == SVFVar::ValNode ||
287
287
  node->getNodeKind() == SVFVar::GepValNode ||
288
+ node->getNodeKind() == SVFVar::RetNode ||
289
+ node->getNodeKind() == SVFVar::VarargNode ||
288
290
  node->getNodeKind() == SVFVar::DummyValNode;
289
291
  }
290
292
  static inline bool classof(const GenericPAGNodeTy *node)
291
293
  {
292
294
  return node->getNodeKind() == SVFVar::ValNode ||
293
295
  node->getNodeKind() == SVFVar::GepValNode ||
296
+ node->getNodeKind() == SVFVar::RetNode ||
297
+ node->getNodeKind() == SVFVar::VarargNode ||
294
298
  node->getNodeKind() == SVFVar::DummyValNode;
295
299
  }
296
300
  //@}
@@ -578,7 +582,7 @@ public:
578
582
  /*
579
583
  * Unique Return node of a procedure
580
584
  */
581
- class RetPN: public SVFVar
585
+ class RetPN: public ValVar
582
586
  {
583
587
 
584
588
  public:
@@ -592,6 +596,10 @@ public:
592
596
  {
593
597
  return node->getNodeKind() == SVFVar::RetNode;
594
598
  }
599
+ static inline bool classof(const ValVar *node)
600
+ {
601
+ return node->getNodeKind() == SVFVar::RetNode;
602
+ }
595
603
  static inline bool classof(const GenericPAGNodeTy *node)
596
604
  {
597
605
  return node->getNodeKind() == SVFVar::RetNode;
@@ -600,7 +608,7 @@ public:
600
608
 
601
609
  /// Constructor
602
610
  RetPN(const SVFFunction* val, NodeID i) :
603
- SVFVar(val->getLLVMFun(), i, RetNode)
611
+ ValVar(val->getLLVMFun(), i, RetNode)
604
612
  {
605
613
  }
606
614
 
@@ -617,7 +625,7 @@ public:
617
625
  /*
618
626
  * Unique vararg node of a procedure
619
627
  */
620
- class VarArgPN: public SVFVar
628
+ class VarArgPN: public ValVar
621
629
  {
622
630
 
623
631
  public:
@@ -631,6 +639,10 @@ public:
631
639
  {
632
640
  return node->getNodeKind() == SVFVar::VarargNode;
633
641
  }
642
+ static inline bool classof(const ValVar *node)
643
+ {
644
+ return node->getNodeKind() == SVFVar::VarargNode;
645
+ }
634
646
  static inline bool classof(const GenericPAGNodeTy *node)
635
647
  {
636
648
  return node->getNodeKind() == SVFVar::VarargNode;
@@ -639,7 +651,7 @@ public:
639
651
 
640
652
  /// Constructor
641
653
  VarArgPN(const SVFFunction* val, NodeID i) :
642
- SVFVar(val->getLLVMFun(), i, VarargNode)
654
+ ValVar(val->getLLVMFun(), i, VarargNode)
643
655
  {
644
656
  }
645
657
 
@@ -672,6 +684,10 @@ public:
672
684
  {
673
685
  return node->getNodeKind() == SVFVar::DummyValNode;
674
686
  }
687
+ static inline bool classof(const ValVar *node)
688
+ {
689
+ return node->getNodeKind() == SVFVar::DummyValNode;
690
+ }
675
691
  static inline bool classof(const GenericPAGNodeTy *node)
676
692
  {
677
693
  return node->getNodeKind() == SVFVar::DummyValNode;
@@ -712,6 +728,11 @@ public:
712
728
  return node->getNodeKind() == SVFVar::DummyObjNode
713
729
  || node->getNodeKind() == SVFVar::CloneDummyObjNode;
714
730
  }
731
+ static inline bool classof(const ObjVar *node)
732
+ {
733
+ return node->getNodeKind() == SVFVar::DummyObjNode
734
+ || node->getNodeKind() == SVFVar::CloneDummyObjNode;
735
+ }
715
736
  static inline bool classof(const GenericPAGNodeTy *node)
716
737
  {
717
738
  return node->getNodeKind() == SVFVar::DummyObjNode
@@ -53,10 +53,10 @@ public:
53
53
  /// Symbol types
54
54
  enum SYMTYPE
55
55
  {
56
+ NullPtr,
57
+ BlkPtr,
56
58
  BlackHole,
57
59
  ConstantObj,
58
- BlkPtr,
59
- NullPtr,
60
60
  ValSymbol,
61
61
  ObjSymbol,
62
62
  RetSymbol,
@@ -479,9 +479,10 @@ public:
479
479
  bool isArray() const;
480
480
  bool isVarStruct() const;
481
481
  bool isVarArray() const;
482
- bool isConstStruct() const;
483
- bool isConstArray() const;
484
- bool isConstant() const;
482
+ bool isConstantStruct() const;
483
+ bool isConstantArray() const;
484
+ bool isConstDataOrConstGlobal() const;
485
+ bool isConstantData() const;
485
486
  bool hasPtrObj() const;
486
487
  bool isNonPtrFieldObj(const LocationSet& ls) const;
487
488
  //@}
@@ -591,8 +592,9 @@ public:
591
592
  VAR_ARRAY_OBJ = 0x40, // object contains array
592
593
  CONST_STRUCT_OBJ = 0x80, // constant struct
593
594
  CONST_ARRAY_OBJ = 0x100, // constant array
594
- CONST_OBJ = 0x200, // constant object str e.g.
595
- HASPTR_OBJ = 0x400 // non pointer object including compound type have field that is a pointer type
595
+ CONST_GLOBAL_OBJ = 0x200, // global constant object
596
+ CONST_DATA = 0x400, // constant object str e.g. 5, 10, 1.0
597
+ HASPTR_OBJ = 0x800 // the object stores a pointer address
596
598
  } MEMTYPE;
597
599
 
598
600
  private:
@@ -689,7 +691,7 @@ public:
689
691
  {
690
692
  return hasFlag(VAR_STRUCT_OBJ);
691
693
  }
692
- inline bool isConstStruct()
694
+ inline bool isConstantStruct()
693
695
  {
694
696
  return hasFlag(CONST_STRUCT_OBJ);
695
697
  }
@@ -701,7 +703,7 @@ public:
701
703
  {
702
704
  return hasFlag(VAR_ARRAY_OBJ);
703
705
  }
704
- inline bool isConstArray()
706
+ inline bool isConstantArray()
705
707
  {
706
708
  return hasFlag(CONST_ARRAY_OBJ);
707
709
  }
@@ -709,9 +711,13 @@ public:
709
711
  {
710
712
  return hasFlag(VAR_ARRAY_OBJ) || hasFlag(CONST_ARRAY_OBJ);
711
713
  }
712
- inline bool isConstant()
714
+ inline bool isConstDataOrConstGlobal()
715
+ {
716
+ return hasFlag(CONST_GLOBAL_OBJ) || hasFlag(CONST_DATA);
717
+ }
718
+ inline bool isConstantData()
713
719
  {
714
- return hasFlag(CONST_OBJ);
720
+ return hasFlag(CONST_DATA);
715
721
  }
716
722
  inline bool hasPtrObj()
717
723
  {
@@ -131,7 +131,7 @@ public:
131
131
  static const llvm::cl::opt<bool> PStat;
132
132
  static const llvm::cl::opt<unsigned> StatBudget;
133
133
  static const llvm::cl::opt<bool> PAGDotGraph;
134
- static const llvm::cl::opt<bool> PAGDotGraphShorter;
134
+ static const llvm::cl::opt<bool> ShowSVFIRValue;
135
135
  static const llvm::cl::opt<bool> DumpICFG;
136
136
  static const llvm::cl::opt<bool> CallGraphDotGraph;
137
137
  static const llvm::cl::opt<bool> PAGPrint;