svf-tools 1.0.404 → 1.0.407

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 (238) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +4 -4
  2. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +2 -2
  3. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +2 -2
  4. package/SVF-doxygen/html/html/CHG_8h_source.html +5 -6
  5. package/SVF-doxygen/html/html/CPPUtil_8cpp.html +3 -3
  6. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +2 -2
  7. package/SVF-doxygen/html/html/CSC_8cpp_source.html +4 -4
  8. package/SVF-doxygen/html/html/CSC_8h_source.html +3 -3
  9. package/SVF-doxygen/html/html/Conditions_8cpp_source.html +1 -2
  10. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +4 -4
  11. package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
  12. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +3 -3
  13. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +6 -6
  14. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
  15. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
  16. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
  17. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +2 -2
  18. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
  19. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +5 -5
  20. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
  21. package/SVF-doxygen/html/html/ICFG_8h_source.html +3 -3
  22. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
  23. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/IRGraph_8h_source.html +16 -16
  25. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +16 -13
  26. package/SVF-doxygen/html/html/LLVMUtil_8h.html +3 -0
  27. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +20 -19
  28. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +8 -8
  29. package/SVF-doxygen/html/html/LocationSet_8h_source.html +7 -7
  30. package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
  31. package/SVF-doxygen/html/html/MHP_8cpp_source.html +2 -2
  32. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +6 -6
  33. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +1 -1
  34. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  35. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +3 -3
  36. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +16 -16
  37. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +2 -2
  38. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +2 -2
  39. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +6 -6
  40. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +5 -5
  41. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +25 -25
  42. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +5 -5
  43. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +11 -11
  44. package/SVF-doxygen/html/html/SVFIR_8h_source.html +13 -13
  45. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +2 -2
  47. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +6 -6
  48. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +11 -11
  49. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  50. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +48 -52
  51. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +16 -17
  52. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +89 -90
  53. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +118 -120
  54. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
  55. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  56. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +6 -6
  57. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
  58. package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
  59. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
  60. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +1 -1
  61. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +12 -12
  62. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +2 -2
  63. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +2 -2
  64. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +20 -20
  65. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +2 -2
  66. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +5 -5
  67. package/SVF-doxygen/html/html/classSVF_1_1CHGraph-members.html +4 -4
  68. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +24 -24
  69. package/SVF-doxygen/html/html/classSVF_1_1CSC-members.html +1 -1
  70. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +11 -11
  71. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +1 -1
  72. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +3 -3
  73. package/SVF-doxygen/html/html/classSVF_1_1CondManager.html +1 -2
  74. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
  75. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
  76. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
  77. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
  78. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
  79. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +2 -2
  80. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +1 -1
  81. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +15 -15
  82. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +2 -2
  83. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +15 -15
  84. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +1 -1
  85. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +11 -11
  86. package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +1 -1
  87. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +7 -7
  88. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +3 -3
  89. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter-members.html +1 -1
  90. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +4 -4
  91. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +2 -2
  92. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +17 -17
  93. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge-members.html +3 -3
  94. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +23 -23
  95. package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +5 -5
  96. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +52 -52
  97. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +7 -7
  98. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +85 -89
  99. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +1 -1
  100. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge-members.html +1 -1
  101. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +8 -8
  102. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +13 -10
  103. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +190 -92
  104. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  105. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile-members.html +1 -1
  106. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +8 -8
  107. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +17 -17
  108. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +6 -6
  109. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +9 -9
  110. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +1 -1
  111. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +36 -36
  112. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +2 -2
  113. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +60 -60
  114. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
  115. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +1 -1
  116. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  117. package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +10 -13
  118. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +40 -137
  119. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder-members.html +6 -7
  120. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +99 -132
  121. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +35 -36
  122. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +184 -213
  123. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
  124. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  125. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +7 -7
  126. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  127. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  128. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  129. package/SVF-doxygen/html/html/functions_a.html +6 -6
  130. package/SVF-doxygen/html/html/functions_b.html +1 -1
  131. package/SVF-doxygen/html/html/functions_e.html +3 -0
  132. package/SVF-doxygen/html/html/functions_f.html +2 -2
  133. package/SVF-doxygen/html/html/functions_func.html +6 -6
  134. package/SVF-doxygen/html/html/functions_func_f.html +1 -1
  135. package/SVF-doxygen/html/html/functions_func_g.html +18 -21
  136. package/SVF-doxygen/html/html/functions_func_i.html +1 -1
  137. package/SVF-doxygen/html/html/functions_func_s.html +5 -5
  138. package/SVF-doxygen/html/html/functions_func_v.html +1 -1
  139. package/SVF-doxygen/html/html/functions_g.html +16 -19
  140. package/SVF-doxygen/html/html/functions_i.html +5 -5
  141. package/SVF-doxygen/html/html/functions_l.html +6 -6
  142. package/SVF-doxygen/html/html/functions_m.html +1 -5
  143. package/SVF-doxygen/html/html/functions_n.html +1 -1
  144. package/SVF-doxygen/html/html/functions_o.html +9 -9
  145. package/SVF-doxygen/html/html/functions_p.html +9 -9
  146. package/SVF-doxygen/html/html/functions_r.html +1 -1
  147. package/SVF-doxygen/html/html/functions_s.html +16 -18
  148. package/SVF-doxygen/html/html/functions_t.html +7 -7
  149. package/SVF-doxygen/html/html/functions_type_n.html +1 -1
  150. package/SVF-doxygen/html/html/functions_type_s.html +1 -1
  151. package/SVF-doxygen/html/html/functions_v.html +3 -3
  152. package/SVF-doxygen/html/html/functions_vars_b.html +1 -1
  153. package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
  154. package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
  155. package/SVF-doxygen/html/html/functions_vars_m.html +0 -4
  156. package/SVF-doxygen/html/html/functions_vars_v.html +2 -2
  157. package/SVF-doxygen/html/html/functions_w.html +9 -5
  158. package/SVF-doxygen/html/html/globals_r.html +3 -3
  159. package/SVF-doxygen/html/html/globals_s.html +5 -7
  160. package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
  161. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  162. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +73 -41
  163. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +2 -2
  164. package/SVF-doxygen/html/html/namespacemembers_func.html +4 -1
  165. package/SVF-doxygen/html/html/namespacemembers_g.html +3 -0
  166. package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
  167. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  168. package/SVF-doxygen/html/html/search/all_1.js +4 -4
  169. package/SVF-doxygen/html/html/search/all_10.js +7 -7
  170. package/SVF-doxygen/html/html/search/all_12.js +2 -2
  171. package/SVF-doxygen/html/html/search/all_13.js +12 -12
  172. package/SVF-doxygen/html/html/search/all_14.js +5 -5
  173. package/SVF-doxygen/html/html/search/all_16.js +3 -3
  174. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  175. package/SVF-doxygen/html/html/search/all_2.js +1 -1
  176. package/SVF-doxygen/html/html/search/all_5.js +1 -0
  177. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  178. package/SVF-doxygen/html/html/search/all_7.js +7 -7
  179. package/SVF-doxygen/html/html/search/all_9.js +3 -3
  180. package/SVF-doxygen/html/html/search/all_c.js +4 -4
  181. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  182. package/SVF-doxygen/html/html/search/all_e.js +5 -5
  183. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  184. package/SVF-doxygen/html/html/search/functions_0.js +4 -4
  185. package/SVF-doxygen/html/html/search/functions_10.js +4 -4
  186. package/SVF-doxygen/html/html/search/functions_13.js +1 -1
  187. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  188. package/SVF-doxygen/html/html/search/functions_6.js +7 -7
  189. package/SVF-doxygen/html/html/search/functions_8.js +2 -2
  190. package/SVF-doxygen/html/html/search/functions_a.js +1 -1
  191. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  192. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  193. package/SVF-doxygen/html/html/search/typedefs_d.js +1 -1
  194. package/SVF-doxygen/html/html/search/variables_14.js +2 -2
  195. package/SVF-doxygen/html/html/search/variables_16.js +2 -2
  196. package/SVF-doxygen/html/html/search/variables_2.js +1 -1
  197. package/SVF-doxygen/html/html/search/variables_5.js +1 -0
  198. package/SVF-doxygen/html/html/search/variables_6.js +1 -1
  199. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  200. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  201. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +2 -2
  202. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  203. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  204. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  205. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  206. package/include/Graphs/CHG.h +6 -6
  207. package/include/Graphs/ConsGEdge.h +1 -1
  208. package/include/Graphs/ICFG.h +1 -1
  209. package/include/Graphs/ICFGEdge.h +3 -3
  210. package/include/MemoryModel/LocationSet.h +5 -5
  211. package/include/MemoryModel/PAGBuilderFromFile.h +1 -1
  212. package/include/MemoryModel/SVFIR.h +1 -1
  213. package/include/MemoryModel/SVFStatements.h +4 -4
  214. package/include/MemoryModel/SVFVariables.h +2 -2
  215. package/include/MemoryModel/SymbolTableInfo.h +16 -15
  216. package/include/SVF-FE/LLVMUtil.h +3 -0
  217. package/include/SVF-FE/SVFIRBuilder.h +2 -2
  218. package/include/SVF-FE/SymbolTableBuilder.h +0 -2
  219. package/include/Util/IRAnnotator.h +2 -2
  220. package/include/WPA/AndersenSFR.h +1 -1
  221. package/include/WPA/CSC.h +1 -1
  222. package/lib/Graphs/ICFG.cpp +1 -1
  223. package/lib/MTA/MHP.cpp +2 -2
  224. package/lib/MemoryModel/LocationSet.cpp +3 -3
  225. package/lib/MemoryModel/PAGBuilderFromFile.cpp +2 -2
  226. package/lib/MemoryModel/SVFIR.cpp +2 -2
  227. package/lib/MemoryModel/SymbolTableInfo.cpp +7 -18
  228. package/lib/SVF-FE/CPPUtil.cpp +4 -4
  229. package/lib/SVF-FE/ICFGBuilder.cpp +1 -1
  230. package/lib/SVF-FE/LLVMUtil.cpp +22 -5
  231. package/lib/SVF-FE/SVFIRBuilder.cpp +9 -9
  232. package/lib/SVF-FE/SymbolTableBuilder.cpp +3 -22
  233. package/lib/Util/Conditions.cpp +1 -1
  234. package/lib/Util/TypeBasedHeapCloning.cpp +1 -1
  235. package/lib/WPA/AndersenSFR.cpp +6 -6
  236. package/lib/WPA/CSC.cpp +5 -5
  237. package/lib/WPA/TypeAnalysis.cpp +3 -3
  238. package/package.json +1 -1
@@ -532,18 +532,19 @@ Private Attributes</h2></td></tr>
532
532
  <p>default case is set to -1; </p>
533
533
 
534
534
  <p class="definition">Definition at line <a class="el" href="ICFGBuilder_8cpp_source.html#l00080">80</a> of file <a class="el" href="ICFGBuilder_8cpp_source.html">ICFGBuilder.cpp</a>.</p>
535
- <div class="fragment"><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;{</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#abb7144bcc587e236fd22f6c8896117f5">BBSet</a> visited;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">while</span> (!worklist.empty())</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = worklist.pop();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span> (visited.find(inst) == visited.end())</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; visited.insert(inst);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* srcNode = <a class="code" href="classSVF_1_1ICFGBuilder.html#a42f190f697284e6da7a6211ce7adecfe">getOrAddBlockICFGNode</a>(inst);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#abd525a2e3b7b9167b61b2304cc2cbdf2">isReturn</a>(inst))</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = inst-&gt;getFunction();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfFun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a> = <a class="code" href="classSVF_1_1ICFGBuilder.html#adefeaad9c02000f263430dfee7149ea6">icfg</a>-&gt;<a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">getFunExitICFGNode</a>(svfFun);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#adefeaad9c02000f263430dfee7149ea6">icfg</a>-&gt;<a class="code" href="classSVF_1_1ICFG.html#adafd8bbb91507a9a78a3f16305812afc">addIntraEdge</a>(srcNode, FunExitICFGNode);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#a57af1044422b3c3860aa6fb033f8111e">InstVec</a> nextInsts;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">getNextInsts</a>(inst, nextInsts);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> branchID = 0;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit =</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; nextInsts.end(); nit != enit; ++nit)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* succ = *nit;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dstNode = <a class="code" href="classSVF_1_1ICFGBuilder.html#a42f190f697284e6da7a6211ce7adecfe">getOrAddBlockICFGNode</a>(succ);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retICFGNode = <a class="code" href="classSVF_1_1ICFGBuilder.html#a7c1125c992eec20e118e6bfc12cb8bfb">getRetICFGNode</a>(inst);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; srcNode = retICFGNode;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a>* br = SVFUtil::dyn_cast&lt;BranchInst&gt;(inst))</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(branchID &lt;= 2 &amp;&amp; <span class="stringliteral">&quot;if/else has more than two branches?&quot;</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span>(br-&gt;isConditional())</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#adefeaad9c02000f263430dfee7149ea6">icfg</a>-&gt;<a class="code" href="classSVF_1_1ICFG.html#a6436c2e6ab117007db80b9936fd4b5fe">addConditionalIntraEdge</a>(srcNode, dstNode, br-&gt;getCondition(), 1 - branchID);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">else</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#adefeaad9c02000f263430dfee7149ea6">icfg</a>-&gt;<a class="code" href="classSVF_1_1ICFG.html#adafd8bbb91507a9a78a3f16305812afc">addIntraEdge</a>(srcNode, dstNode);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a>* si = SVFUtil::dyn_cast&lt;SwitchInst&gt;(inst))</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* condVal = <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a>*<span class="keyword">&gt;</span>(si)-&gt;findCaseDest(const_cast&lt;BasicBlock*&gt;(succ-&gt;getParent()));</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val = condVal ? condVal-&gt;getSExtValue() : -1;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#adefeaad9c02000f263430dfee7149ea6">icfg</a>-&gt;<a class="code" href="classSVF_1_1ICFG.html#a6436c2e6ab117007db80b9936fd4b5fe">addConditionalIntraEdge</a>(srcNode, dstNode, si-&gt;getCondition(),val);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#adefeaad9c02000f263430dfee7149ea6">icfg</a>-&gt;<a class="code" href="classSVF_1_1ICFG.html#adafd8bbb91507a9a78a3f16305812afc">addIntraEdge</a>(srcNode, dstNode);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; worklist.push(succ);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; branchID++;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;}</div><div class="ttc" id="classSVF_1_1ICFGBuilder_html_a7c1125c992eec20e118e6bfc12cb8bfb"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#a7c1125c992eec20e118e6bfc12cb8bfb">SVF::ICFGBuilder::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const Instruction *cs)</div><div class="ttdoc">Add a return node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00092">ICFGBuilder.h:92</a></div></div>
535
+ <div class="fragment"><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;{</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#abb7144bcc587e236fd22f6c8896117f5">BBSet</a> visited;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">while</span> (!worklist.empty())</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = worklist.pop();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span> (visited.find(inst) == visited.end())</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; visited.insert(inst);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* srcNode = <a class="code" href="classSVF_1_1ICFGBuilder.html#a42f190f697284e6da7a6211ce7adecfe">getOrAddBlockICFGNode</a>(inst);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#abd525a2e3b7b9167b61b2304cc2cbdf2">isReturn</a>(inst))</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = inst-&gt;getFunction();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfFun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a> = <a class="code" href="classSVF_1_1ICFGBuilder.html#adefeaad9c02000f263430dfee7149ea6">icfg</a>-&gt;<a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">getFunExitICFGNode</a>(svfFun);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#adefeaad9c02000f263430dfee7149ea6">icfg</a>-&gt;<a class="code" href="classSVF_1_1ICFG.html#adafd8bbb91507a9a78a3f16305812afc">addIntraEdge</a>(srcNode, FunExitICFGNode);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#a57af1044422b3c3860aa6fb033f8111e">InstVec</a> nextInsts;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">getNextInsts</a>(inst, nextInsts);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> branchID = 0;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit =</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; nextInsts.end(); nit != enit; ++nit)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* succ = *nit;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* dstNode = <a class="code" href="classSVF_1_1ICFGBuilder.html#a42f190f697284e6da7a6211ce7adecfe">getOrAddBlockICFGNode</a>(succ);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retICFGNode = <a class="code" href="classSVF_1_1ICFGBuilder.html#a7c1125c992eec20e118e6bfc12cb8bfb">getRetICFGNode</a>(inst);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; srcNode = retICFGNode;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a>* br = SVFUtil::dyn_cast&lt;BranchInst&gt;(inst))</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(branchID &lt;= 2 &amp;&amp; <span class="stringliteral">&quot;if/else has more than two branches?&quot;</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span>(br-&gt;isConditional())</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#adefeaad9c02000f263430dfee7149ea6">icfg</a>-&gt;<a class="code" href="classSVF_1_1ICFG.html#aa4517b497891823eccbad2e790e2a440">addConditionalIntraEdge</a>(srcNode, dstNode, br-&gt;getCondition(), 1 - branchID);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">else</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#adefeaad9c02000f263430dfee7149ea6">icfg</a>-&gt;<a class="code" href="classSVF_1_1ICFG.html#adafd8bbb91507a9a78a3f16305812afc">addIntraEdge</a>(srcNode, dstNode);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a>* si = SVFUtil::dyn_cast&lt;SwitchInst&gt;(inst))</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* condVal = <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a>*<span class="keyword">&gt;</span>(si)-&gt;findCaseDest(const_cast&lt;BasicBlock*&gt;(succ-&gt;getParent()));</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> val = condVal ? condVal-&gt;getSExtValue() : -1;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#adefeaad9c02000f263430dfee7149ea6">icfg</a>-&gt;<a class="code" href="classSVF_1_1ICFG.html#aa4517b497891823eccbad2e790e2a440">addConditionalIntraEdge</a>(srcNode, dstNode, si-&gt;getCondition(),val);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html#adefeaad9c02000f263430dfee7149ea6">icfg</a>-&gt;<a class="code" href="classSVF_1_1ICFG.html#adafd8bbb91507a9a78a3f16305812afc">addIntraEdge</a>(srcNode, dstNode);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; worklist.push(succ);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; branchID++;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;}</div><div class="ttc" id="classSVF_1_1ICFGBuilder_html_a7c1125c992eec20e118e6bfc12cb8bfb"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#a7c1125c992eec20e118e6bfc12cb8bfb">SVF::ICFGBuilder::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const Instruction *cs)</div><div class="ttdoc">Add a return node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00092">ICFGBuilder.h:92</a></div></div>
536
536
  <div class="ttc" id="namespaceSVF_html_ac9a05dd7ab16e998625037aa242cd30f"><div class="ttname"><a href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">SVF::BranchInst</a></div><div class="ttdeci">llvm::BranchInst BranchInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00149">BasicTypes.h:149</a></div></div>
537
- <div class="ttc" id="classSVF_1_1ICFG_html_a6436c2e6ab117007db80b9936fd4b5fe"><div class="ttname"><a href="classSVF_1_1ICFG.html#a6436c2e6ab117007db80b9936fd4b5fe">SVF::ICFG::addConditionalIntraEdge</a></div><div class="ttdeci">ICFGEdge * addConditionalIntraEdge(ICFGNode *srcNode, ICFGNode *dstNode, const Value *condition, s64_t branchCondVal)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00355">ICFG.cpp:355</a></div></div>
538
537
  <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>
539
538
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_abb7144bcc587e236fd22f6c8896117f5"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#abb7144bcc587e236fd22f6c8896117f5">SVF::ICFGBuilder::BBSet</a></div><div class="ttdeci">Set&lt; const Instruction * &gt; BBSet</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00045">ICFGBuilder.h:45</a></div></div>
540
539
  <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00219">BasicTypes.h:219</a></div></div>
540
+ <div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00078">SVFBasicTypes.h:78</a></div></div>
541
541
  <div class="ttc" id="classSVF_1_1ICFG_html_af1b2d2839f811a00103df87342dfc919"><div class="ttname"><a href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">SVF::ICFG::getFunExitICFGNode</a></div><div class="ttdeci">FunExitICFGNode * getFunExitICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function exit node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00251">ICFG.cpp:251</a></div></div>
542
542
  <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>
543
543
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_a57af1044422b3c3860aa6fb033f8111e"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#a57af1044422b3c3860aa6fb033f8111e">SVF::ICFGBuilder::InstVec</a></div><div class="ttdeci">std::vector&lt; const Instruction * &gt; InstVec</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00044">ICFGBuilder.h:44</a></div></div>
544
544
  <div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
545
545
  <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>
546
546
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2f9959fa23ab4bdc65ca36fbda8c1b70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2f9959fa23ab4bdc65ca36fbda8c1b70">SVF::SVFUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector&lt; const Instruction *&gt; &amp;instList)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00214">LLVMUtil.cpp:214</a></div></div>
547
+ <div class="ttc" id="classSVF_1_1ICFG_html_aa4517b497891823eccbad2e790e2a440"><div class="ttname"><a href="classSVF_1_1ICFG.html#aa4517b497891823eccbad2e790e2a440">SVF::ICFG::addConditionalIntraEdge</a></div><div class="ttdeci">ICFGEdge * addConditionalIntraEdge(ICFGNode *srcNode, ICFGNode *dstNode, const Value *condition, s32_t branchCondVal)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00355">ICFG.cpp:355</a></div></div>
547
548
  <div class="ttc" id="classSVF_1_1RetICFGNode_html"><div class="ttname"><a href="classSVF_1_1RetICFGNode.html">SVF::RetICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00459">ICFGNode.h:459</a></div></div>
548
549
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
549
550
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
@@ -554,7 +555,6 @@ Private Attributes</h2></td></tr>
554
555
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8d8216a92140d982303f83ea424ddc91"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVF::SVFUtil::isNonInstricCallSite</a></div><div class="ttdeci">bool isNonInstricCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls...</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00206">SVFUtil.h:206</a></div></div>
555
556
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_abd525a2e3b7b9167b61b2304cc2cbdf2"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#abd525a2e3b7b9167b61b2304cc2cbdf2">SVF::SVFUtil::isReturn</a></div><div class="ttdeci">bool isReturn(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a return instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00213">SVFUtil.h:213</a></div></div>
556
557
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_adefeaad9c02000f263430dfee7149ea6"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#adefeaad9c02000f263430dfee7149ea6">SVF::ICFGBuilder::icfg</a></div><div class="ttdeci">ICFG * icfg</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00048">ICFGBuilder.h:48</a></div></div>
557
- <div class="ttc" id="namespaceSVF_html_ad781b0b14e89773e774072b280658ef3"><div class="ttname"><a href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a></div><div class="ttdeci">signed long long s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00080">SVFBasicTypes.h:80</a></div></div>
558
558
  <div class="ttc" id="classSVF_1_1ICFG_html_adafd8bbb91507a9a78a3f16305812afc"><div class="ttname"><a href="classSVF_1_1ICFG.html#adafd8bbb91507a9a78a3f16305812afc">SVF::ICFG::addIntraEdge</a></div><div class="ttdeci">ICFGEdge * addIntraEdge(ICFGNode *srcNode, ICFGNode *dstNode)</div><div class="ttdoc">Add control-flow edges for top level pointers. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00337">ICFG.cpp:337</a></div></div>
559
559
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a547b3bc62de65b9dbfc6dee55c063dd7"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">const SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00112">LLVMModule.h:112</a></div></div>
560
560
  </div><!-- fragment -->
@@ -70,7 +70,7 @@ $(function() {
70
70
  <p>This is the complete list of members for <a class="el" href="classSVF_1_1ICFGPrinter.html">SVF::ICFGPrinter</a>, including all inherited members.</p>
71
71
  <table class="directory">
72
72
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1ICFG.html#abde033687317d47909ee45db7501723f">addCallEdge</a>(ICFGNode *srcNode, ICFGNode *dstNode, const Instruction *cs)</td><td class="entry"><a class="el" href="classSVF_1_1ICFG.html">SVF::ICFG</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
73
- <tr><td class="entry"><a class="el" href="classSVF_1_1ICFG.html#a6436c2e6ab117007db80b9936fd4b5fe">addConditionalIntraEdge</a>(ICFGNode *srcNode, ICFGNode *dstNode, const Value *condition, s64_t branchCondVal)</td><td class="entry"><a class="el" href="classSVF_1_1ICFG.html">SVF::ICFG</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
73
+ <tr><td class="entry"><a class="el" href="classSVF_1_1ICFG.html#aa4517b497891823eccbad2e790e2a440">addConditionalIntraEdge</a>(ICFGNode *srcNode, ICFGNode *dstNode, const Value *condition, s32_t branchCondVal)</td><td class="entry"><a class="el" href="classSVF_1_1ICFG.html">SVF::ICFG</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
74
74
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericGraph.html#a0a8831a5429005ff9d71adbd6bf3994f">addGNode</a>(NodeID id, NodeType *node)</td><td class="entry"><a class="el" href="classSVF_1_1GenericGraph.html">SVF::GenericGraph&lt; NodeTy, EdgeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
75
75
  <tr><td class="entry"><a class="el" href="classSVF_1_1ICFG.html#a462f590c2604184d69e4efe3d85a7b5b">addICFGEdge</a>(ICFGEdge *edge)</td><td class="entry"><a class="el" href="classSVF_1_1ICFG.html">SVF::ICFG</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
76
76
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1ICFG.html#a15816a82d8c33a066009440dce6ee973">addICFGNode</a>(ICFGNode *node)</td><td class="entry"><a class="el" href="classSVF_1_1ICFG.html">SVF::ICFG</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
@@ -248,8 +248,8 @@ Additional Inherited Members</h2></td></tr>
248
248
  <tr class="memitem:adafd8bbb91507a9a78a3f16305812afc inherit pro_methods_classSVF_1_1ICFG"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ICFG.html#adafd8bbb91507a9a78a3f16305812afc">addIntraEdge</a> (<a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *srcNode, <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *dstNode)</td></tr>
249
249
  <tr class="memdesc:adafd8bbb91507a9a78a3f16305812afc inherit pro_methods_classSVF_1_1ICFG"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add control-flow edges for top level pointers. <a href="classSVF_1_1ICFG.html#adafd8bbb91507a9a78a3f16305812afc">More...</a><br /></td></tr>
250
250
  <tr class="separator:adafd8bbb91507a9a78a3f16305812afc inherit pro_methods_classSVF_1_1ICFG"><td class="memSeparator" colspan="2">&#160;</td></tr>
251
- <tr class="memitem:a6436c2e6ab117007db80b9936fd4b5fe inherit pro_methods_classSVF_1_1ICFG"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ICFG.html#a6436c2e6ab117007db80b9936fd4b5fe">addConditionalIntraEdge</a> (<a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *srcNode, <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *dstNode, const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *condition, <a class="el" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> branchCondVal)</td></tr>
252
- <tr class="separator:a6436c2e6ab117007db80b9936fd4b5fe inherit pro_methods_classSVF_1_1ICFG"><td class="memSeparator" colspan="2">&#160;</td></tr>
251
+ <tr class="memitem:aa4517b497891823eccbad2e790e2a440 inherit pro_methods_classSVF_1_1ICFG"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ICFG.html#aa4517b497891823eccbad2e790e2a440">addConditionalIntraEdge</a> (<a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *srcNode, <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *dstNode, const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *condition, <a class="el" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> branchCondVal)</td></tr>
252
+ <tr class="separator:aa4517b497891823eccbad2e790e2a440 inherit pro_methods_classSVF_1_1ICFG"><td class="memSeparator" colspan="2">&#160;</td></tr>
253
253
  <tr class="memitem:abde033687317d47909ee45db7501723f inherit pro_methods_classSVF_1_1ICFG"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ICFG.html#abde033687317d47909ee45db7501723f">addCallEdge</a> (<a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *srcNode, <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *dstNode, const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *cs)</td></tr>
254
254
  <tr class="separator:abde033687317d47909ee45db7501723f inherit pro_methods_classSVF_1_1ICFG"><td class="memSeparator" colspan="2">&#160;</td></tr>
255
255
  <tr class="memitem:a4a44849b596c89ab14d2e5f18366e848 inherit pro_methods_classSVF_1_1ICFG"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ICFG.html#a4a44849b596c89ab14d2e5f18366e848">addRetEdge</a> (<a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *srcNode, <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *dstNode, const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *cs)</td></tr>
@@ -386,7 +386,7 @@ Additional Inherited Members</h2></td></tr>
386
386
  </div><div class="memdoc">
387
387
 
388
388
  <p class="definition">Definition at line <a class="el" href="Graph2Json_8cpp_source.html#l00014">14</a> of file <a class="el" href="Graph2Json_8cpp_source.html">Graph2Json.cpp</a>.</p>
389
- <div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;write symbols to &#39;&quot;</span> &lt;&lt; filename &lt;&lt; <span class="stringliteral">&quot;&#39;...&quot;</span>;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; std::error_code err;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <a class="code" href="namespaceSVF.html#acde6a1d496f1b655088ccbe023820277">ToolOutputFile</a> F(filename.c_str(), err, llvm::sys::fs::OF_None);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; error opening file for writing!\n&quot;</span>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; F.os().clear_error();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; }</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; llvm::json::Array root_array;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1ICFG.html#a498f84068ef643a94970aeb171607e31">ICFG::iterator</a> it = <a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; llvm::json::Object ICFGNode_Obj;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;ICFG_ID&quot;</span>] = id;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Node Type&quot;</span>] = <a class="code" href="classSVF_1_1ICFGPrinter.html#a2c022308f9c7ae3bf33d9482fcb51e03">getICFGKind</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>());</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1IntraICFGNode.html">IntraICFGNode</a>* bNode = SVFUtil::dyn_cast&lt;IntraICFGNode&gt;(node))</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(bNode-&gt;getInst());</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFIR::SVFStmtList</a>&amp; edges = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abb91ed47d5c13d0ad7eec35164e37988">getPTASVFStmtList</a>(bNode);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; llvm::json::Array PAGEdge_array;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">//dump pag edges</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span> (SVFIR::SVFStmtList::iterator it = edges.begin(),</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; eit = edges.end(); it != eit; ++it)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</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="l00045"></a><span class="lineno"> 45</span>&#160; llvm::json::Object edge_obj;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; edge_obj[<span class="stringliteral">&quot;Source Node&quot;</span>] = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; edge_obj[<span class="stringliteral">&quot;Destination Node&quot;</span>] = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; edge_obj[<span class="stringliteral">&quot;Source Type&quot;</span>] = <a class="code" href="classSVF_1_1ICFGPrinter.html#a54f0729c869b5061b5fb9fe056c326ef">getPAGNodeKindValue</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getNodeKind());</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; edge_obj[<span class="stringliteral">&quot;Destination Type&quot;</span>] = <a class="code" href="classSVF_1_1ICFGPrinter.html#a54f0729c869b5061b5fb9fe056c326ef">getPAGNodeKindValue</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getNodeKind());</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; edge_obj[<span class="stringliteral">&quot;Edge Type&quot;</span>] = <a class="code" href="classSVF_1_1ICFGPrinter.html#a38aa67e172459a72d8fc92a6172903be">getPAGEdgeKindValue</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>());</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; edge_obj[<span class="stringliteral">&quot;srcValueName&quot;</span>] = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getValueName();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; edge_obj[<span class="stringliteral">&quot;dstValueName&quot;</span>] = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getValueName();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">if</span>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>()==<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gepEdge = SVFUtil::cast&lt;GepStmt&gt;(edge);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; edge_obj[<span class="stringliteral">&quot;offset&quot;</span>] = gepEdge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#adf6912f8ddae4f765b685a4f9d3be602">getConstantFieldIdx</a>();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> edge_value = llvm::json::Object{edge_obj};</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; PAGEdge_array.push_back(edge_value);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> PagEdge_value = llvm::json::Array{PAGEdge_array};</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;SVFIR Edges&quot;</span>] = PagEdge_value;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a> = SVFUtil::dyn_cast&lt;FunEntryICFGNode&gt;(node))</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(<a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>-&gt;getFun()))</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">true</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">else</span></div><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; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">false</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(<a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>-&gt;getFun()-&gt;getLLVMFun());</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Function Name&quot;</span>] = <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>-&gt;getFun()-&gt;getName();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a> = SVFUtil::dyn_cast&lt;FunExitICFGNode&gt;(node))</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(<a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>-&gt;getFun()))</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">true</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">false</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(&amp;(<a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>-&gt;getFun()-&gt;getLLVMFun()-&gt;back()));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Function Name&quot;</span>] = <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>-&gt;getFun()-&gt;getName();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* call = SVFUtil::dyn_cast&lt;CallICFGNode&gt;(node))</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(call-&gt;getCallSite());</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* ret = SVFUtil::dyn_cast&lt;RetICFGNode&gt;(node))</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(ret-&gt;getCallSite());</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</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="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; llvm::json::Array ICFGEdges_array;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1ICFGNode.html#a5a148eccec266a67e4ff5364d7268fff">ICFGNode::iterator</a> sit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), esit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); sit!=esit; ++sit)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = *sit;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; llvm::json::Object ICFGEdge_obj;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CallCFGEdge&gt;(edge))</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a>* call = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a>&gt;(edge);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFG Edge Type&quot;</span>] = <span class="stringliteral">&quot;CallCFGEdge&quot;</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeSrcID&quot;</span>] = call-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeDstID&quot;</span>] = call-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetCFGEdge&gt;(edge))</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a>* call = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a>&gt;(edge);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFG Edge Type&quot;</span>] = <span class="stringliteral">&quot;RetCFGEdge&quot;</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeSrcID&quot;</span>] = call-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeDstID&quot;</span>] = call-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;IntraCFGEdge&gt;(edge))</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>* intraCFGEdge = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>&gt;(edge);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFG Edge Type&quot;</span>] = <span class="stringliteral">&quot;IntraCFGEdge&quot;</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeSrcID&quot;</span>] = intraCFGEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeDstID&quot;</span>] = intraCFGEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> ICFGEdge_Val = llvm::json::Object{ICFGEdge_obj};</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; ICFGEdges_array.push_back(ICFGEdge_Val);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> ICFGEdges_val = llvm::json::Array{ICFGEdges_array};</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;ICFGEdges&quot;</span>] = ICFGEdges_val;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> ICFGNode_val = llvm::json::Object{ICFGNode_Obj};</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; root_array.push_back(ICFGNode_val);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> root_value = llvm::json::Array{root_array};</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespaceSVF.html#af83f5c5c68cdb80576cdc1d62c01b207">llvm::json::operator&lt;&lt;</a>(F.os(),root_value);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; F.os().close();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> (!F.os().has_error())</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; F.keep();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;}</div><div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00044">ICFGEdge.h:44</a></div></div>
389
+ <div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;write symbols to &#39;&quot;</span> &lt;&lt; filename &lt;&lt; <span class="stringliteral">&quot;&#39;...&quot;</span>;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; std::error_code err;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <a class="code" href="namespaceSVF.html#acde6a1d496f1b655088ccbe023820277">ToolOutputFile</a> F(filename.c_str(), err, llvm::sys::fs::OF_None);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; error opening file for writing!\n&quot;</span>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; F.os().clear_error();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; }</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; llvm::json::Array root_array;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1ICFG.html#a498f84068ef643a94970aeb171607e31">ICFG::iterator</a> it = <a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; llvm::json::Object ICFGNode_Obj;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;ICFG_ID&quot;</span>] = id;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Node Type&quot;</span>] = <a class="code" href="classSVF_1_1ICFGPrinter.html#a2c022308f9c7ae3bf33d9482fcb51e03">getICFGKind</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>());</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1IntraICFGNode.html">IntraICFGNode</a>* bNode = SVFUtil::dyn_cast&lt;IntraICFGNode&gt;(node))</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(bNode-&gt;getInst());</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFIR::SVFStmtList</a>&amp; edges = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abb91ed47d5c13d0ad7eec35164e37988">getPTASVFStmtList</a>(bNode);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; llvm::json::Array PAGEdge_array;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">//dump pag edges</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span> (SVFIR::SVFStmtList::iterator it = edges.begin(),</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; eit = edges.end(); it != eit; ++it)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</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="l00045"></a><span class="lineno"> 45</span>&#160; llvm::json::Object edge_obj;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; edge_obj[<span class="stringliteral">&quot;Source Node&quot;</span>] = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; edge_obj[<span class="stringliteral">&quot;Destination Node&quot;</span>] = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; edge_obj[<span class="stringliteral">&quot;Source Type&quot;</span>] = <a class="code" href="classSVF_1_1ICFGPrinter.html#a54f0729c869b5061b5fb9fe056c326ef">getPAGNodeKindValue</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getNodeKind());</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; edge_obj[<span class="stringliteral">&quot;Destination Type&quot;</span>] = <a class="code" href="classSVF_1_1ICFGPrinter.html#a54f0729c869b5061b5fb9fe056c326ef">getPAGNodeKindValue</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getNodeKind());</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; edge_obj[<span class="stringliteral">&quot;Edge Type&quot;</span>] = <a class="code" href="classSVF_1_1ICFGPrinter.html#a38aa67e172459a72d8fc92a6172903be">getPAGEdgeKindValue</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>());</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; edge_obj[<span class="stringliteral">&quot;srcValueName&quot;</span>] = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getValueName();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; edge_obj[<span class="stringliteral">&quot;dstValueName&quot;</span>] = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getValueName();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">if</span>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>()==<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gepEdge = SVFUtil::cast&lt;GepStmt&gt;(edge);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; edge_obj[<span class="stringliteral">&quot;offset&quot;</span>] = gepEdge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a959a9c95d25f90fd7acc8e6e36056b56">getConstantFieldIdx</a>();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> edge_value = llvm::json::Object{edge_obj};</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; PAGEdge_array.push_back(edge_value);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> PagEdge_value = llvm::json::Array{PAGEdge_array};</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;SVFIR Edges&quot;</span>] = PagEdge_value;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a> = SVFUtil::dyn_cast&lt;FunEntryICFGNode&gt;(node))</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(<a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>-&gt;getFun()))</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">true</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">else</span></div><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; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">false</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(<a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>-&gt;getFun()-&gt;getLLVMFun());</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Function Name&quot;</span>] = <a class="code" href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a>-&gt;getFun()-&gt;getName();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a> = SVFUtil::dyn_cast&lt;FunExitICFGNode&gt;(node))</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(<a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>-&gt;getFun()))</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">true</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;isExtCall&quot;</span>] = <span class="keyword">false</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(&amp;(<a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>-&gt;getFun()-&gt;getLLVMFun()-&gt;back()));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Function Name&quot;</span>] = <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>-&gt;getFun()-&gt;getName();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* call = SVFUtil::dyn_cast&lt;CallICFGNode&gt;(node))</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(call-&gt;getCallSite());</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* ret = SVFUtil::dyn_cast&lt;RetICFGNode&gt;(node))</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;Source Location&quot;</span>] = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(ret-&gt;getCallSite());</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</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="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; llvm::json::Array ICFGEdges_array;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1ICFGNode.html#a5a148eccec266a67e4ff5364d7268fff">ICFGNode::iterator</a> sit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), esit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); sit!=esit; ++sit)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = *sit;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; llvm::json::Object ICFGEdge_obj;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CallCFGEdge&gt;(edge))</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a>* call = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a>&gt;(edge);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFG Edge Type&quot;</span>] = <span class="stringliteral">&quot;CallCFGEdge&quot;</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeSrcID&quot;</span>] = call-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeDstID&quot;</span>] = call-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetCFGEdge&gt;(edge))</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a>* call = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a>&gt;(edge);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFG Edge Type&quot;</span>] = <span class="stringliteral">&quot;RetCFGEdge&quot;</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeSrcID&quot;</span>] = call-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeDstID&quot;</span>] = call-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;IntraCFGEdge&gt;(edge))</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>* intraCFGEdge = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>&gt;(edge);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFG Edge Type&quot;</span>] = <span class="stringliteral">&quot;IntraCFGEdge&quot;</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeSrcID&quot;</span>] = intraCFGEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; ICFGEdge_obj[<span class="stringliteral">&quot;ICFGEdgeDstID&quot;</span>] = intraCFGEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> ICFGEdge_Val = llvm::json::Object{ICFGEdge_obj};</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; ICFGEdges_array.push_back(ICFGEdge_Val);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> ICFGEdges_val = llvm::json::Array{ICFGEdges_array};</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; ICFGNode_Obj[<span class="stringliteral">&quot;ICFGEdges&quot;</span>] = ICFGEdges_val;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> ICFGNode_val = llvm::json::Object{ICFGNode_Obj};</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; root_array.push_back(ICFGNode_val);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::json::Value</a> root_value = llvm::json::Array{root_array};</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespaceSVF.html#af83f5c5c68cdb80576cdc1d62c01b207">llvm::json::operator&lt;&lt;</a>(F.os(),root_value);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; F.os().close();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> (!F.os().has_error())</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; F.keep();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;}</div><div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00044">ICFGEdge.h:44</a></div></div>
390
390
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
391
391
  <div class="ttc" id="classSVF_1_1GenericEdge_html_abe8525c542def8162b094c169a01993b"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">SVF::GenericEdge::getEdgeKind</a></div><div class="ttdeci">GEdgeKind getEdgeKind() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00081">GenericGraph.h:81</a></div></div>
392
392
  <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>
@@ -410,10 +410,10 @@ Additional Inherited Members</h2></td></tr>
410
410
  <div class="ttc" id="classSVF_1_1IntraCFGEdge_html"><div class="ttname"><a href="classSVF_1_1IntraCFGEdge.html">SVF::IntraCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00113">ICFGEdge.h:113</a></div></div>
411
411
  <div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
412
412
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
413
- <div class="ttc" id="classSVF_1_1GepStmt_html_adf6912f8ddae4f765b685a4f9d3be602"><div class="ttname"><a href="classSVF_1_1GepStmt.html#adf6912f8ddae4f765b685a4f9d3be602">SVF::GepStmt::getConstantFieldIdx</a></div><div class="ttdeci">s64_t getConstantFieldIdx() const</div><div class="ttdoc">Field index of the gep statement if it access the field of a struct. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00453">SVFStatements.h:453</a></div></div>
414
413
  <div class="ttc" id="namespaceSVF_html_acde6a1d496f1b655088ccbe023820277"><div class="ttname"><a href="namespaceSVF.html#acde6a1d496f1b655088ccbe023820277">SVF::ToolOutputFile</a></div><div class="ttdeci">llvm::ToolOutputFile ToolOutputFile</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00098">BasicTypes.h:98</a></div></div>
415
414
  <div class="ttc" id="classSVF_1_1GenericEdge_html_ab47ca533c415841ef75456cbad439589"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVF::GenericEdge::getSrcNode</a></div><div class="ttdeci">NodeType * getSrcNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00085">GenericGraph.h:85</a></div></div>
416
415
  <div class="ttc" id="classSVF_1_1ICFG_html_a498f84068ef643a94970aeb171607e31"><div class="ttname"><a href="classSVF_1_1ICFG.html#a498f84068ef643a94970aeb171607e31">SVF::ICFG::iterator</a></div><div class="ttdeci">ICFGNodeIDToNodeMapTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00055">ICFG.h:55</a></div></div>
416
+ <div class="ttc" id="classSVF_1_1GepStmt_html_a959a9c95d25f90fd7acc8e6e36056b56"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a959a9c95d25f90fd7acc8e6e36056b56">SVF::GepStmt::getConstantFieldIdx</a></div><div class="ttdeci">s32_t getConstantFieldIdx() const</div><div class="ttdoc">Field index of the gep statement if it access the field of a struct. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00453">SVFStatements.h:453</a></div></div>
417
417
  <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00364">ICFGNode.h:364</a></div></div>
418
418
  <div class="ttc" id="classSVF_1_1ICFGNode_html_a5a148eccec266a67e4ff5364d7268fff"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a5a148eccec266a67e4ff5364d7268fff">SVF::ICFGNode::iterator</a></div><div class="ttdeci">ICFGEdge::ICFGEdgeSetTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00065">ICFGNode.h:65</a></div></div>
419
419
  <div class="ttc" id="namespaceSVF_html_af83f5c5c68cdb80576cdc1d62c01b207"><div class="ttname"><a href="namespaceSVF.html#af83f5c5c68cdb80576cdc1d62c01b207">SVF::operator&lt;&lt;</a></div><div class="ttdeci">OutStream &amp; operator&lt;&lt;(OutStream &amp;o, const std::pair&lt; F, S &gt; &amp;var)</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00321">BasicTypes.h:321</a></div></div>
@@ -765,10 +765,10 @@ Private Attributes</h2></td></tr>
765
765
  </div><div class="memdoc">
766
766
 
767
767
  <p class="definition">Definition at line <a class="el" href="IRAnnotator_8h_source.html#l00082">82</a> of file <a class="el" href="IRAnnotator_8h_source.html">IRAnnotator.h</a>.</p>
768
- <div class="fragment"><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>-&gt;named_metadata_begin(); it != <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>-&gt;named_metadata_end(); ++it)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; std::string label = it-&gt;getName().str();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; std::string toErase = <span class="stringliteral">&quot;gepnode-&quot;</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a> pos = label.find(toErase);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> (pos == std::string::npos)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; label.erase(pos, toErase.length());</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> nodeId = std::stoi(label);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">auto</span> mdNode = it-&gt;getOperand(0);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> baseNodeId = std::stoi(llvm::cast&lt;llvm::MDString&gt;(mdNode-&gt;getOperand(0))-&gt;getString().str());</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a> locationSetOffset = std::stoi(llvm::cast&lt;llvm::MDString&gt;(mdNode-&gt;getOperand(1))-&gt;getString().str());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; LocationSet locationSet = LocationSet(locationSetOffset);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> gepnodeId = pag-&gt;getGepObjVar(baseNodeId, locationSet);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(nodeId == gepnodeId &amp;&amp; <span class="stringliteral">&quot;nodeId != gepnodeId&quot;</span>);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
768
+ <div class="fragment"><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>-&gt;named_metadata_begin(); it != <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>-&gt;named_metadata_end(); ++it)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; std::string label = it-&gt;getName().str();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; std::string toErase = <span class="stringliteral">&quot;gepnode-&quot;</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a> pos = label.find(toErase);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> (pos == std::string::npos)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; label.erase(pos, toErase.length());</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> nodeId = std::stoi(label);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">auto</span> mdNode = it-&gt;getOperand(0);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> baseNodeId = std::stoi(llvm::cast&lt;llvm::MDString&gt;(mdNode-&gt;getOperand(0))-&gt;getString().str());</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a> locationSetOffset = std::stoi(llvm::cast&lt;llvm::MDString&gt;(mdNode-&gt;getOperand(1))-&gt;getString().str());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; LocationSet locationSet = LocationSet(locationSetOffset);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> gepnodeId = pag-&gt;getGepObjVar(baseNodeId, locationSet);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(nodeId == gepnodeId &amp;&amp; <span class="stringliteral">&quot;nodeId != gepnodeId&quot;</span>);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
769
769
  <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>
770
+ <div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00078">SVFBasicTypes.h:78</a></div></div>
770
771
  <div class="ttc" id="classSVF_1_1IRAnnotator_html_a01462e9ee84f490514598c68e8c9557b"><div class="ttname"><a href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">SVF::IRAnnotator::mainModule</a></div><div class="ttdeci">Module * mainModule</div><div class="ttdef"><b>Definition:</b> <a href="IRAnnotator_8h_source.html#l00314">IRAnnotator.h:314</a></div></div>
771
- <div class="ttc" id="namespaceSVF_html_ad781b0b14e89773e774072b280658ef3"><div class="ttname"><a href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a></div><div class="ttdeci">signed long long s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00080">SVFBasicTypes.h:80</a></div></div>
772
772
  </div><!-- fragment -->
773
773
  </div>
774
774
  </div>