svf-tools 1.0.537 → 1.0.540

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 (232) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +2 -2
  4. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
  5. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +16 -16
  6. package/SVF-doxygen/html/html/Andersen_8h_source.html +6 -9
  7. package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +2 -1
  8. package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +1 -1
  9. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +5 -4
  10. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +15 -15
  11. package/SVF-doxygen/html/html/CFLGramGraphChecker_8h_source.html +4 -4
  12. package/SVF-doxygen/html/html/CFLGrammar_8txt.html +39 -39
  13. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +20 -8
  14. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +16 -15
  15. package/SVF-doxygen/html/html/CHGBuilder_8cpp.html +1 -1
  16. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +2 -1
  17. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +2 -1
  18. package/SVF-doxygen/html/html/CPPUtil_8h.html +4 -4
  19. package/SVF-doxygen/html/html/ConsG_8h_source.html +3 -3
  20. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +2 -2
  21. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +2 -2
  22. package/SVF-doxygen/html/html/DDAStat_8h.html +1 -1
  23. package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
  24. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +4 -4
  25. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +2 -2
  27. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
  28. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  29. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +1 -1
  30. package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +4 -4
  31. package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +3 -3
  32. package/SVF-doxygen/html/html/ICFGStat_8h.html +1 -1
  33. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
  34. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
  35. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -1
  36. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
  37. package/SVF-doxygen/html/html/LockAnalysis_8cpp.html +1 -1
  38. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
  39. package/SVF-doxygen/html/html/MHP_8cpp.html +1 -1
  40. package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
  41. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +2 -1
  42. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
  43. package/SVF-doxygen/html/html/MTAStat_8h.html +1 -1
  44. package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
  45. package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp.html +1 -1
  48. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
  49. package/SVF-doxygen/html/html/Options_8cpp_source.html +5 -3
  50. package/SVF-doxygen/html/html/Options_8h.html +1 -1
  51. package/SVF-doxygen/html/html/Options_8h_source.html +5 -3
  52. package/SVF-doxygen/html/html/PEGGrammar_8txt.html +314 -0
  53. package/SVF-doxygen/html/html/PTAStat_8cpp.html +1 -1
  54. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +5 -5
  55. package/SVF-doxygen/html/html/PTAStat_8h.html +2 -2
  56. package/SVF-doxygen/html/html/PTAStat_8h_source.html +2 -2
  57. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
  58. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
  59. package/SVF-doxygen/html/html/PointerAnalysis_8cpp.html +1 -1
  60. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +2 -2
  61. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +3 -3
  62. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +1 -1
  63. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +1 -1
  64. package/SVF-doxygen/html/html/SVFGStat_8h.html +1 -1
  65. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +1 -1
  66. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -1
  67. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +3 -3
  68. package/SVF-doxygen/html/html/SVFIR_8h_source.html +33 -33
  69. package/SVF-doxygen/html/html/SVFUtil_8h.html +1 -1
  70. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +2 -1
  71. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
  72. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -2
  73. package/SVF-doxygen/html/html/TypeAnalysis_8cpp.html +1 -1
  74. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  75. package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -1
  76. package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
  77. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
  78. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
  79. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
  80. package/SVF-doxygen/html/html/WPAStat_8h.html +1 -1
  81. package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
  82. package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
  83. package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
  84. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder-members.html +12 -11
  85. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +73 -4
  86. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +150 -152
  87. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +46 -141
  88. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +1 -1
  89. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +149 -151
  90. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +5 -11
  91. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +161 -163
  92. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +4 -10
  93. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +3 -3
  94. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +156 -158
  95. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +14 -20
  96. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +4 -4
  97. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -1
  98. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +52 -51
  99. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +26 -26
  100. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +10 -7
  101. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  102. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +3 -3
  103. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +2 -2
  104. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
  105. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +11 -11
  106. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +2 -2
  107. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +4 -4
  108. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
  109. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +2 -2
  110. package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +10 -10
  111. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
  112. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -1
  113. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
  114. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +2 -2
  115. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +4 -4
  116. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +1 -1
  117. package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +3 -2
  118. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +8 -6
  119. package/SVF-doxygen/html/html/classSVF_1_1Options.html +54 -2
  120. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  121. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +16 -16
  122. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +5 -5
  123. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +1 -1
  124. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +2 -2
  125. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +86 -88
  126. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +22 -22
  127. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +1 -1
  128. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
  129. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +2 -2
  130. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
  131. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
  132. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +1 -1
  133. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +2 -2
  134. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  135. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +1 -1
  136. package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
  137. package/SVF-doxygen/html/html/dir_eef3a4ca6ca2cab0eb5fbea30ec32c1a.html +0 -2
  138. package/SVF-doxygen/html/html/files.html +15 -15
  139. package/SVF-doxygen/html/html/functions_a.html +3 -6
  140. package/SVF-doxygen/html/html/functions_b.html +3 -0
  141. package/SVF-doxygen/html/html/functions_c.html +22 -20
  142. package/SVF-doxygen/html/html/functions_f.html +10 -12
  143. package/SVF-doxygen/html/html/functions_func.html +5 -8
  144. package/SVF-doxygen/html/html/functions_func_b.html +3 -0
  145. package/SVF-doxygen/html/html/functions_func_m.html +1 -4
  146. package/SVF-doxygen/html/html/functions_func_p.html +2 -2
  147. package/SVF-doxygen/html/html/functions_i.html +6 -6
  148. package/SVF-doxygen/html/html/functions_m.html +0 -3
  149. package/SVF-doxygen/html/html/functions_n.html +3 -0
  150. package/SVF-doxygen/html/html/functions_o.html +6 -6
  151. package/SVF-doxygen/html/html/functions_p.html +15 -16
  152. package/SVF-doxygen/html/html/functions_r.html +2 -2
  153. package/SVF-doxygen/html/html/functions_s.html +8 -6
  154. package/SVF-doxygen/html/html/functions_t.html +3 -3
  155. package/SVF-doxygen/html/html/functions_v.html +3 -3
  156. package/SVF-doxygen/html/html/functions_vars_n.html +3 -0
  157. package/SVF-doxygen/html/html/functions_vars_p.html +3 -0
  158. package/SVF-doxygen/html/html/globals.html +1 -0
  159. package/SVF-doxygen/html/html/globals_a.html +3 -1
  160. package/SVF-doxygen/html/html/globals_c.html +6 -5
  161. package/SVF-doxygen/html/html/globals_e.html +1 -0
  162. package/SVF-doxygen/html/html/globals_f.html +7 -5
  163. package/SVF-doxygen/html/html/globals_g.html +7 -3
  164. package/SVF-doxygen/html/html/globals_m.html +6 -3
  165. package/SVF-doxygen/html/html/globals_v.html +2 -1
  166. package/SVF-doxygen/html/html/globals_vars.html +22 -7
  167. package/SVF-doxygen/html/html/namespaceSVF.html +3 -3
  168. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
  169. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +4 -4
  170. package/SVF-doxygen/html/html/search/all_0.js +1 -1
  171. package/SVF-doxygen/html/html/search/all_1.js +2 -3
  172. package/SVF-doxygen/html/html/search/all_10.js +11 -9
  173. package/SVF-doxygen/html/html/search/all_11.js +1 -1
  174. package/SVF-doxygen/html/html/search/all_12.js +8 -8
  175. package/SVF-doxygen/html/html/search/all_13.js +4 -4
  176. package/SVF-doxygen/html/html/search/all_15.js +3 -3
  177. package/SVF-doxygen/html/html/search/all_2.js +1 -0
  178. package/SVF-doxygen/html/html/search/all_3.js +4 -4
  179. package/SVF-doxygen/html/html/search/all_5.js +1 -1
  180. package/SVF-doxygen/html/html/search/all_6.js +6 -6
  181. package/SVF-doxygen/html/html/search/all_7.js +4 -4
  182. package/SVF-doxygen/html/html/search/all_9.js +2 -2
  183. package/SVF-doxygen/html/html/search/all_b.js +1 -1
  184. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  185. package/SVF-doxygen/html/html/search/all_d.js +2 -3
  186. package/SVF-doxygen/html/html/search/all_e.js +4 -3
  187. package/SVF-doxygen/html/html/search/all_f.js +2 -2
  188. package/SVF-doxygen/html/html/search/files_c.js +1 -0
  189. package/SVF-doxygen/html/html/search/functions_0.js +0 -1
  190. package/SVF-doxygen/html/html/search/functions_1.js +1 -0
  191. package/SVF-doxygen/html/html/search/functions_c.js +0 -1
  192. package/SVF-doxygen/html/html/search/functions_f.js +2 -2
  193. package/SVF-doxygen/html/html/search/variables_0.js +1 -1
  194. package/SVF-doxygen/html/html/search/variables_1.js +2 -2
  195. package/SVF-doxygen/html/html/search/variables_10.js +2 -1
  196. package/SVF-doxygen/html/html/search/variables_13.js +2 -2
  197. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  198. package/SVF-doxygen/html/html/search/variables_3.js +1 -1
  199. package/SVF-doxygen/html/html/search/variables_5.js +1 -1
  200. package/SVF-doxygen/html/html/search/variables_6.js +2 -2
  201. package/SVF-doxygen/html/html/search/variables_7.js +4 -4
  202. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  203. package/SVF-doxygen/html/html/search/variables_e.js +3 -2
  204. package/include/CFL/CFGNormalizer.h +3 -3
  205. package/include/CFL/CFLAlias.h +5 -1
  206. package/include/CFL/CFLGraphBuilder.h +11 -1
  207. package/include/CFL/PEGGrammar.txt +28 -0
  208. package/include/DDA/DDAStat.h +1 -1
  209. package/include/Graphs/ICFGStat.h +1 -1
  210. package/include/Graphs/SVFGStat.h +1 -1
  211. package/include/MTA/MTAStat.h +1 -1
  212. package/include/MemoryModel/SVFIR.h +1 -4
  213. package/include/SVF-FE/LLVMUtil.h +2 -2
  214. package/include/Util/ExtAPI.h +2 -2
  215. package/include/Util/Options.h +3 -1
  216. package/include/{MemoryModel → Util}/PTAStat.h +0 -0
  217. package/include/WPA/Andersen.h +3 -14
  218. package/include/WPA/WPAStat.h +1 -1
  219. package/lib/CFL/CFLAlias.cpp +12 -7
  220. package/lib/CFL/CFLGraphBuilder.cpp +135 -0
  221. package/lib/CFL/GrammarBuilder.cpp +12 -8
  222. package/lib/Graphs/SVFGReadWrite.cpp +3 -3
  223. package/lib/MTA/LockAnalysis.cpp +1 -1
  224. package/lib/MTA/MHP.cpp +1 -1
  225. package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
  226. package/lib/SVF-FE/CHGBuilder.cpp +1 -1
  227. package/lib/Util/NodeIDAllocator.cpp +1 -1
  228. package/lib/Util/Options.cpp +16 -4
  229. package/lib/Util/PTAStat.cpp +4 -3
  230. package/lib/WPA/Andersen.cpp +0 -3
  231. package/lib/WPA/TypeAnalysis.cpp +1 -1
  232. package/package.json +1 -1
@@ -1276,7 +1276,7 @@ Private Member Functions</h2></td></tr>
1276
1276
 
1277
1277
  <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00179">179</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
1278
1278
  <div class="fragment"><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;{</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a3550ea3f087ec557a6fe076bc443b05d">print_stat</a> &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1PTAStat.html#acfed70588cf921694db35990ec3c7497">performStat</a>();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00150">PointerAnalysis.h:150</a></div></div>
1279
- <div class="ttc" id="classSVF_1_1PTAStat_html_acfed70588cf921694db35990ec3c7497"><div class="ttname"><a href="classSVF_1_1PTAStat.html#acfed70588cf921694db35990ec3c7497">SVF::PTAStat::performStat</a></div><div class="ttdeci">virtual void performStat()</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00133">PTAStat.cpp:133</a></div></div>
1279
+ <div class="ttc" id="classSVF_1_1PTAStat_html_acfed70588cf921694db35990ec3c7497"><div class="ttname"><a href="classSVF_1_1PTAStat.html#acfed70588cf921694db35990ec3c7497">SVF::PTAStat::performStat</a></div><div class="ttdeci">virtual void performStat()</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00134">PTAStat.cpp:134</a></div></div>
1280
1280
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a3550ea3f087ec557a6fe076bc443b05d"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a3550ea3f087ec557a6fe076bc443b05d">SVF::PointerAnalysis::print_stat</a></div><div class="ttdeci">bool print_stat</div><div class="ttdoc">User input flags. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00134">PointerAnalysis.h:134</a></div></div>
1281
1281
  </div><!-- fragment -->
1282
1282
  </div>
@@ -1479,7 +1479,7 @@ Private Member Functions</h2></td></tr>
1479
1479
  </div><div class="memdoc">
1480
1480
 
1481
1481
  <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8h_source.html#l00333">333</a> of file <a class="el" href="PointerAnalysis_8h_source.html">PointerAnalysis.h</a>.</p>
1482
- <div class="fragment"><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">getBaseObjVar</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a77a6bb9335aa12d29825af1b5ea07e08"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">SVF::SVFIR::getBaseObjVar</a></div><div class="ttdeci">NodeID getBaseObjVar(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00409">SVFIR.h:409</a></div></div>
1482
+ <div class="fragment"><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">getBaseObjVar</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a77a6bb9335aa12d29825af1b5ea07e08"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">SVF::SVFIR::getBaseObjVar</a></div><div class="ttdeci">NodeID getBaseObjVar(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00406">SVFIR.h:406</a></div></div>
1483
1483
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00142">PointerAnalysis.h:142</a></div></div>
1484
1484
  </div><!-- fragment -->
1485
1485
  </div>
@@ -2337,7 +2337,7 @@ Private Member Functions</h2></td></tr>
2337
2337
  </div><div class="memdoc">
2338
2338
 
2339
2339
  <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8h_source.html#l00300">300</a> of file <a class="el" href="PointerAnalysis_8h_source.html">PointerAnalysis.h</a>.</p>
2340
- <div class="fragment"><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ad9895f2d075eb402390e3b01ed68e001">isBlkObjOrConstantObj</a>(ptd);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_ad9895f2d075eb402390e3b01ed68e001"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad9895f2d075eb402390e3b01ed68e001">SVF::SVFIR::isBlkObjOrConstantObj</a></div><div class="ttdeci">bool isBlkObjOrConstantObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00387">SVFIR.h:387</a></div></div>
2340
+ <div class="fragment"><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ad9895f2d075eb402390e3b01ed68e001">isBlkObjOrConstantObj</a>(ptd);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_ad9895f2d075eb402390e3b01ed68e001"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad9895f2d075eb402390e3b01ed68e001">SVF::SVFIR::isBlkObjOrConstantObj</a></div><div class="ttdeci">bool isBlkObjOrConstantObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00384">SVFIR.h:384</a></div></div>
2341
2341
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00142">PointerAnalysis.h:142</a></div></div>
2342
2342
  </div><!-- fragment -->
2343
2343
  </div>
@@ -2367,7 +2367,7 @@ Private Member Functions</h2></td></tr>
2367
2367
  </div><div class="memdoc">
2368
2368
 
2369
2369
  <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8h_source.html#l00354">354</a> of file <a class="el" href="PointerAnalysis_8h_source.html">PointerAnalysis.h</a>.</p>
2370
- <div class="fragment"><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keyword">const</span> MemObj* mem = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">return</span> mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>();</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_af76a55c3b8255a81a566bdce35ffc749"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">SVF::SVFIR::getBaseObj</a></div><div class="ttdeci">const MemObj * getBaseObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00413">SVFIR.h:413</a></div></div>
2370
+ <div class="fragment"><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keyword">const</span> MemObj* mem = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">return</span> mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>();</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_af76a55c3b8255a81a566bdce35ffc749"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">SVF::SVFIR::getBaseObj</a></div><div class="ttdeci">const MemObj * getBaseObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00410">SVFIR.h:410</a></div></div>
2371
2371
  <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00738">SymbolTableInfo.cpp:738</a></div></div>
2372
2372
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00142">PointerAnalysis.h:142</a></div></div>
2373
2373
  </div><!-- fragment -->
@@ -2891,7 +2891,7 @@ Private Member Functions</h2></td></tr>
2891
2891
  </div><div class="memdoc">
2892
2892
 
2893
2893
  <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8h_source.html#l00349">349</a> of file <a class="el" href="PointerAnalysis_8h_source.html">PointerAnalysis.h</a>.</p>
2894
- <div class="fragment"><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; MemObj* mem = <span class="keyword">const_cast&lt;</span>MemObj*<span class="keyword">&gt;</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(<span class="keywordtype">id</span>));</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; mem-&gt;setFieldInsensitive();</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_af76a55c3b8255a81a566bdce35ffc749"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">SVF::SVFIR::getBaseObj</a></div><div class="ttdeci">const MemObj * getBaseObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00413">SVFIR.h:413</a></div></div>
2894
+ <div class="fragment"><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; MemObj* mem = <span class="keyword">const_cast&lt;</span>MemObj*<span class="keyword">&gt;</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(<span class="keywordtype">id</span>));</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; mem-&gt;setFieldInsensitive();</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="ttc" id="classSVF_1_1SVFIR_html_af76a55c3b8255a81a566bdce35ffc749"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">SVF::SVFIR::getBaseObj</a></div><div class="ttdeci">const MemObj * getBaseObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00410">SVFIR.h:410</a></div></div>
2895
2895
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00142">PointerAnalysis.h:142</a></div></div>
2896
2896
  </div><!-- fragment -->
2897
2897
  </div>
@@ -3701,7 +3701,7 @@ Additional Inherited Members</h2></td></tr>
3701
3701
  </div><div class="memdoc">
3702
3702
 
3703
3703
  <p class="definition">Definition at line <a class="el" href="SVFGReadWrite_8cpp_source.html#l00046">46</a> of file <a class="el" href="SVFGReadWrite_8cpp_source.html">SVFGReadWrite.cpp</a>.</p>
3704
- <div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Writing SVFG analysis to &#39;&quot;</span> &lt;&lt; filename &lt;&lt; <span class="stringliteral">&quot;&#39;...&quot;</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; error_code err;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; std::fstream f(filename.c_str(), std::ios_base::out);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (!f.good())</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="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="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;__Nodes__\n&quot;</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// Iterate over nodes and write to file</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">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="l00059"></a><span class="lineno"> 59</span>&#160; {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = it-&gt;first;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn = SVFUtil::dyn_cast&lt;FormalINSVFGNode&gt;(node))</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="comment">//node</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;SVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; &gt;= &quot;</span> &lt;&lt; <span class="stringliteral">&quot;FormalINSVFGNode&quot;</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; f &lt;&lt; <span class="stringliteral">&quot; &gt;= MVER: {&quot;</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; f &lt;&lt; *formalIn-&gt;getMRVer() &lt;&lt; <span class="stringliteral">&quot;} &gt;= ICFGNodeID: &quot;</span> &lt;&lt; formalIn-&gt;getFunEntryNode()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* formalOut = SVFUtil::dyn_cast&lt;FormalOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="comment">//node</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;SVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; &gt;= &quot;</span> &lt;&lt; <span class="stringliteral">&quot;FormalOUTSVFGNode&quot;</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; f &lt;&lt; <span class="stringliteral">&quot; &gt;= MVER: {&quot;</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; f &lt;&lt; *formalOut-&gt;getMRVer() &lt;&lt; <span class="stringliteral">&quot;} &gt;= ICFGNodeID: &quot;</span> &lt;&lt; formalOut-&gt;getFunExitNode()-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::dyn_cast&lt;ActualINSVFGNode&gt;(node))</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">//node</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;SVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; &gt;= &quot;</span> &lt;&lt; <span class="stringliteral">&quot;ActualINSVFGNode&quot;</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; f &lt;&lt; <span class="stringliteral">&quot; &gt;= MVER: {&quot;</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; f &lt;&lt; *actualIn-&gt;getMRVer() &lt;&lt; <span class="stringliteral">&quot;} &gt;= ICFGNodeID: &quot;</span> &lt;&lt; actualIn-&gt;getCallSite()-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::dyn_cast&lt;ActualOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="comment">//node</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;SVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; &gt;= &quot;</span> &lt;&lt; <span class="stringliteral">&quot;ActualOUTSVFGNode&quot;</span> &lt;&lt; <span class="stringliteral">&quot; &gt;= MVER: {&quot;</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; f &lt;&lt; *actualOut-&gt;getMRVer() &lt;&lt; <span class="stringliteral">&quot;} &gt;= ICFGNodeID: &quot;</span> &lt;&lt; actualOut-&gt;getCallSite()-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* phiNode = SVFUtil::dyn_cast&lt;MSSAPHISVFGNode&gt;(node))</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="comment">//node</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;SVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; &gt;= &quot;</span> &lt;&lt; <span class="stringliteral">&quot;PHISVFGNode&quot;</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; unordered_map&lt;u32_t,const MRVer*&gt; opvers;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">for</span> (MemSSA::PHI::OPVers::const_iterator it = phiNode-&gt;opVerBegin(), eit = phiNode-&gt;opVerEnd();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; it != eit; it++)</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; opvers.insert(make_pair(it-&gt;first, it-&gt;second));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// opvers</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; f &lt;&lt; <span class="stringliteral">&quot; &gt;= MVER: {&quot;</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; f &lt;&lt; *phiNode-&gt;getResVer();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;} &gt;= ICFGNodeID: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(&amp;(phiNode-&gt;getICFGNode()-&gt;getBB()-&gt;front()))-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; f &lt;&lt; <span class="stringliteral">&quot; &gt;= OPVers: {&quot;</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> x: opvers)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* op = x.second;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;{&quot;</span> &lt;&lt; *op &lt;&lt; <span class="stringliteral">&quot;}&quot;</span> &lt;&lt; <span class="stringliteral">&quot;,&quot;</span>;</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; f &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</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; f &lt;&lt; <span class="stringliteral">&quot;\n\n__Edges__\n&quot;</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">// Iterate over edges and write to file</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">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="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = it-&gt;first;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadSVFGNode</a>* loadNode = SVFUtil::dyn_cast&lt;LoadSVFGNode&gt;(node))</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#acdbe1c510273107b708935061b6c4127">MUSet</a>&amp; muSet = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(SVFUtil::cast&lt;LoadStmt&gt;(loadNode-&gt;getPAGEdge()));</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">for</span>(MUSet::iterator it = muSet.begin(), eit = muSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFG.html#a86d4a41a881a3d2e5def103d7ba8bb2f">LOADMU</a>* mu = SVFUtil::dyn_cast&lt;LOADMU&gt;(*it))</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#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(mu-&gt;getMRVer());</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; def &lt;&lt; <span class="stringliteral">&quot; &gt;= LoadNode | MVER: {&quot;</span>&lt;&lt; *mu-&gt;getMRVer() &lt;&lt; <span class="stringliteral">&quot;}&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</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; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* storeNode = SVFUtil::dyn_cast&lt;StoreSVFGNode&gt;(node))</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a8843ab4a4608f7f5f46f68ad31314c07">CHISet</a>&amp; chiSet = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(SVFUtil::cast&lt;StoreStmt&gt;(storeNode-&gt;getPAGEdge()));</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator it = chiSet.begin(), eit = chiSet.end(); it!=eit; ++it)</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; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFG.html#ad14cdbb3f1df1f716aa03b4d39f4e52b">STORECHI</a>* chi = SVFUtil::dyn_cast&lt;STORECHI&gt;(*it))</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(chi-&gt;getOpVer());</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; def &lt;&lt; <span class="stringliteral">&quot; &gt;= StoreNode | MVER: {&quot;</span>&lt;&lt; *chi-&gt;getOpVer() &lt;&lt; <span class="stringliteral">&quot;}&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</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="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn = SVFUtil::dyn_cast&lt;FormalINSVFGNode&gt;(node))</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a> callInstSet;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a0d2544130cc2cdc3ac418c975c278eb2">getDirCallSitesInvokingCallee</a>(formalIn-&gt;getFun(),callInstSet);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::iterator it = callInstSet.begin(), eit = callInstSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = *it;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">hasMU</a>(cs))</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a">ActualINSVFGNodeSet</a>&amp; actualIns = <a class="code" href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975">getActualINSVFGNodes</a>(cs);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector.html#a0421e3336137b232edc442ece00a8a9c">ActualINSVFGNodeSet::iterator</a> ait = actualIns.begin(), aeit = actualIns.end(); ait!=aeit; ++ait)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::cast&lt;ActualINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ait));</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; actualIn-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; &gt;= FormalINSVFGNode&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* formalOut = SVFUtil::dyn_cast&lt;FormalOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a> callInstSet;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a0d2544130cc2cdc3ac418c975c278eb2">getDirCallSitesInvokingCallee</a>(formalOut-&gt;getFun(),callInstSet);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::iterator it = callInstSet.begin(), eit = callInstSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = *it;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">hasCHI</a>(cs))</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">ActualOUTSVFGNodeSet</a>&amp; actualOuts = <a class="code" href="classSVF_1_1SVFG.html#a5b7ae610bee28acc2905ca82928e714f">getActualOUTSVFGNodes</a>(cs);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector.html#a0421e3336137b232edc442ece00a8a9c">ActualOUTSVFGNodeSet::iterator</a> ait = actualOuts.begin(), aeit = actualOuts.end(); ait!=aeit; ++ait)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::cast&lt;ActualOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ait));</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; actualOut-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; &gt;= FormalOUTSVFGNode&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(formalOut-&gt;getMRVer());</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; def &lt;&lt; <span class="stringliteral">&quot; &gt;= FormalOUTSVFGNode | intra&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::dyn_cast&lt;ActualINSVFGNode&gt;(node))</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(actualIn-&gt;getMRVer());</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; def &lt;&lt; <span class="stringliteral">&quot; &gt;= ActualINSVFGNode&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* phiNode = SVFUtil::dyn_cast&lt;MSSAPHISVFGNode&gt;(node))</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">for</span> (MemSSA::PHI::OPVers::const_iterator it = phiNode-&gt;opVerBegin(), eit = phiNode-&gt;opVerEnd();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; it != eit; it++)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* op = it-&gt;second;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(op);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; def &lt;&lt; <span class="stringliteral">&quot; &gt;= PHISVFGNode | MVER: {&quot;</span>&lt;&lt; *op &lt;&lt; <span class="stringliteral">&quot;}&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="comment">// Job finish and close file</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; f.close();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">if</span> (f.good())</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</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="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;}</div><div class="ttc" id="classSVF_1_1MRVer_html"><div class="ttname"><a href="classSVF_1_1MRVer.html">SVF::MRVer</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00043">MSSAMuChi.h:43</a></div></div>
3704
+ <div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Writing SVFG analysis to &#39;&quot;</span> &lt;&lt; filename &lt;&lt; <span class="stringliteral">&quot;&#39;...&quot;</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; error_code err;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; std::fstream f(filename.c_str(), std::ios_base::out);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (!f.good())</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="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="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;__Nodes__\n&quot;</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// Iterate over nodes and write to file</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">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="l00059"></a><span class="lineno"> 59</span>&#160; {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = it-&gt;first;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn = SVFUtil::dyn_cast&lt;FormalINSVFGNode&gt;(node))</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="comment">//node</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;SVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; &gt;= &quot;</span> &lt;&lt; <span class="stringliteral">&quot;FormalINSVFGNode&quot;</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; f &lt;&lt; <span class="stringliteral">&quot; &gt;= MVER: {&quot;</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; f &lt;&lt; *formalIn-&gt;getMRVer() &lt;&lt; <span class="stringliteral">&quot;} &gt;= ICFGNodeID: &quot;</span> &lt;&lt; formalIn-&gt;getFunEntryNode()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* formalOut = SVFUtil::dyn_cast&lt;FormalOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="comment">//node</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;SVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; &gt;= &quot;</span> &lt;&lt; <span class="stringliteral">&quot;FormalOUTSVFGNode&quot;</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; f &lt;&lt; <span class="stringliteral">&quot; &gt;= MVER: {&quot;</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; f &lt;&lt; *formalOut-&gt;getMRVer() &lt;&lt; <span class="stringliteral">&quot;} &gt;= ICFGNodeID: &quot;</span> &lt;&lt; formalOut-&gt;getFunExitNode()-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::dyn_cast&lt;ActualINSVFGNode&gt;(node))</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">//node</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;SVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; &gt;= &quot;</span> &lt;&lt; <span class="stringliteral">&quot;ActualINSVFGNode&quot;</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; f &lt;&lt; <span class="stringliteral">&quot; &gt;= MVER: {&quot;</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; f &lt;&lt; *actualIn-&gt;getMRVer() &lt;&lt; <span class="stringliteral">&quot;} &gt;= ICFGNodeID: &quot;</span> &lt;&lt; actualIn-&gt;getCallSite()-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::dyn_cast&lt;ActualOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="comment">//node</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;SVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; &gt;= &quot;</span> &lt;&lt; <span class="stringliteral">&quot;ActualOUTSVFGNode&quot;</span> &lt;&lt; <span class="stringliteral">&quot; &gt;= MVER: {&quot;</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; f &lt;&lt; *actualOut-&gt;getMRVer() &lt;&lt; <span class="stringliteral">&quot;} &gt;= ICFGNodeID: &quot;</span> &lt;&lt; actualOut-&gt;getCallSite()-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* phiNode = SVFUtil::dyn_cast&lt;MSSAPHISVFGNode&gt;(node))</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="comment">//node</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;SVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; &gt;= &quot;</span> &lt;&lt; <span class="stringliteral">&quot;PHISVFGNode&quot;</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; unordered_map&lt;u32_t,const MRVer*&gt; opvers;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">for</span> (MemSSA::PHI::OPVers::const_iterator it = phiNode-&gt;opVerBegin(), eit = phiNode-&gt;opVerEnd();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; it != eit; it++)</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; opvers.insert(make_pair(it-&gt;first, it-&gt;second));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// opvers</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; f &lt;&lt; <span class="stringliteral">&quot; &gt;= MVER: {&quot;</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; f &lt;&lt; *phiNode-&gt;getResVer();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;} &gt;= ICFGNodeID: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(&amp;(phiNode-&gt;getICFGNode()-&gt;getBB()-&gt;front()))-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; f &lt;&lt; <span class="stringliteral">&quot; &gt;= OPVers: {&quot;</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> x: opvers)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* op = x.second;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;{&quot;</span> &lt;&lt; *op &lt;&lt; <span class="stringliteral">&quot;}&quot;</span> &lt;&lt; <span class="stringliteral">&quot;,&quot;</span>;</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; f &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</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; f &lt;&lt; <span class="stringliteral">&quot;\n\n__Edges__\n&quot;</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">// Iterate over edges and write to file</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">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="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = it-&gt;first;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadSVFGNode</a>* loadNode = SVFUtil::dyn_cast&lt;LoadSVFGNode&gt;(node))</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#acdbe1c510273107b708935061b6c4127">MUSet</a>&amp; muSet = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(SVFUtil::cast&lt;LoadStmt&gt;(loadNode-&gt;getPAGEdge()));</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">for</span>(MUSet::iterator it = muSet.begin(), eit = muSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFG.html#a86d4a41a881a3d2e5def103d7ba8bb2f">LOADMU</a>* mu = SVFUtil::dyn_cast&lt;LOADMU&gt;(*it))</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#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(mu-&gt;getMRVer());</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; def &lt;&lt; <span class="stringliteral">&quot; &gt;= LoadNode | MVER: {&quot;</span> &lt;&lt; *mu-&gt;getMRVer() &lt;&lt; <span class="stringliteral">&quot;}&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</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; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* storeNode = SVFUtil::dyn_cast&lt;StoreSVFGNode&gt;(node))</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a8843ab4a4608f7f5f46f68ad31314c07">CHISet</a>&amp; chiSet = <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(SVFUtil::cast&lt;StoreStmt&gt;(storeNode-&gt;getPAGEdge()));</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">for</span>(CHISet::iterator it = chiSet.begin(), eit = chiSet.end(); it!=eit; ++it)</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; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFG.html#ad14cdbb3f1df1f716aa03b4d39f4e52b">STORECHI</a>* chi = SVFUtil::dyn_cast&lt;STORECHI&gt;(*it))</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(chi-&gt;getOpVer());</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; def &lt;&lt; <span class="stringliteral">&quot; &gt;= StoreNode | MVER: {&quot;</span> &lt;&lt; *chi-&gt;getOpVer() &lt;&lt; <span class="stringliteral">&quot;}&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</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="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn = SVFUtil::dyn_cast&lt;FormalINSVFGNode&gt;(node))</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a> callInstSet;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a0d2544130cc2cdc3ac418c975c278eb2">getDirCallSitesInvokingCallee</a>(formalIn-&gt;getFun(),callInstSet);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::iterator it = callInstSet.begin(), eit = callInstSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = *it;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">hasMU</a>(cs))</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a">ActualINSVFGNodeSet</a>&amp; actualIns = <a class="code" href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975">getActualINSVFGNodes</a>(cs);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector.html#a0421e3336137b232edc442ece00a8a9c">ActualINSVFGNodeSet::iterator</a> ait = actualIns.begin(), aeit = actualIns.end(); ait!=aeit; ++ait)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::cast&lt;ActualINSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ait));</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; actualIn-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; &gt;= FormalINSVFGNode&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* formalOut = SVFUtil::dyn_cast&lt;FormalOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">PTACallGraphEdge::CallInstSet</a> callInstSet;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a0d2544130cc2cdc3ac418c975c278eb2">getDirCallSitesInvokingCallee</a>(formalOut-&gt;getFun(),callInstSet);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::iterator it = callInstSet.begin(), eit = callInstSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = *it;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1SVFG.html#a6f07410ee34e4bf1079e3b5902c81d28">mssa</a>-&gt;<a class="code" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">hasCHI</a>(cs))</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">ActualOUTSVFGNodeSet</a>&amp; actualOuts = <a class="code" href="classSVF_1_1SVFG.html#a5b7ae610bee28acc2905ca82928e714f">getActualOUTSVFGNodes</a>(cs);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector.html#a0421e3336137b232edc442ece00a8a9c">ActualOUTSVFGNodeSet::iterator</a> ait = actualOuts.begin(), aeit = actualOuts.end(); ait!=aeit; ++ait)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut = SVFUtil::cast&lt;ActualOUTSVFGNode&gt;(<a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(*ait));</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; actualOut-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; &gt;= FormalOUTSVFGNode&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(formalOut-&gt;getMRVer());</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; def &lt;&lt; <span class="stringliteral">&quot; &gt;= FormalOUTSVFGNode | intra&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn = SVFUtil::dyn_cast&lt;ActualINSVFGNode&gt;(node))</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(actualIn-&gt;getMRVer());</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; def &lt;&lt; <span class="stringliteral">&quot; &gt;= ActualINSVFGNode&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* phiNode = SVFUtil::dyn_cast&lt;MSSAPHISVFGNode&gt;(node))</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">for</span> (MemSSA::PHI::OPVers::const_iterator it = phiNode-&gt;opVerBegin(), eit = phiNode-&gt;opVerEnd();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; it != eit; it++)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* op = it-&gt;second;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> def = <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(op);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;srcSVFGNodeID: &quot;</span> &lt;&lt; nodeId &lt;&lt; <span class="stringliteral">&quot; =&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dstSVFGNodeID: &quot;</span> &lt;&lt; def &lt;&lt; <span class="stringliteral">&quot; &gt;= PHISVFGNode | MVER: {&quot;</span> &lt;&lt; *op &lt;&lt; <span class="stringliteral">&quot;}&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="comment">// Job finish and close file</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; f.close();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">if</span> (f.good())</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</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="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;}</div><div class="ttc" id="classSVF_1_1MRVer_html"><div class="ttname"><a href="classSVF_1_1MRVer.html">SVF::MRVer</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00043">MSSAMuChi.h:43</a></div></div>
3705
3705
  <div class="ttc" id="classSVF_1_1MemSSA_html_a2e656a50f8964fc3e99d1d436de64418"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">SVF::MemSSA::getCHISet</a></div><div class="ttdeci">CHISet &amp; getCHISet(const StoreStmt *st)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00392">MemSSA.h:392</a></div></div>
3706
3706
  <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#l00365">GenericGraph.h:365</a></div></div>
3707
3707
  <div class="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00240">VFGNode.h:240</a></div></div>
@@ -1249,7 +1249,7 @@ Additional Inherited Members</h2></td></tr>
1249
1249
  <div class="ttc" id="classSVF_1_1SVFGStat_html_a42b67371df87ba647166000912f53243"><div class="ttname"><a href="classSVF_1_1SVFGStat.html#a42b67371df87ba647166000912f53243">SVF::SVFGStat::nodeInCycle</a></div><div class="ttdeci">NodeID nodeInCycle(SVFGSCC *scc, NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFGStat_8cpp_source.html#l00174">SVFGStat.cpp:174</a></div></div>
1250
1250
  <div class="ttc" id="classSVF_1_1SVFGStat_html_a947dcd586a9ccf8b60243153769aaf31"><div class="ttname"><a href="classSVF_1_1SVFGStat.html#a947dcd586a9ccf8b60243153769aaf31">SVF::SVFGStat::getSCCRep</a></div><div class="ttdeci">NodeID getSCCRep(SVFGSCC *scc, NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFGStat_8cpp_source.html#l00170">SVFGStat.cpp:170</a></div></div>
1251
1251
  <div class="ttc" id="classSVF_1_1PTAStat_html_afdb975520329be0c33cc7bdd51ba7031"><div class="ttname"><a href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">SVF::PTAStat::PTNumStatMap</a></div><div class="ttdeci">NUMStatMap PTNumStatMap</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00148">PTAStat.h:148</a></div></div>
1252
- <div class="ttc" id="classSVF_1_1PTAStat_html_aa5f455bfa79743b8e263431593d29bbf"><div class="ttname"><a href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">SVF::PTAStat::printStat</a></div><div class="ttdeci">virtual void printStat(string str=&quot;&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00292">PTAStat.cpp:292</a></div></div>
1252
+ <div class="ttc" id="classSVF_1_1PTAStat_html_aa5f455bfa79743b8e263431593d29bbf"><div class="ttname"><a href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">SVF::PTAStat::printStat</a></div><div class="ttdeci">virtual void printStat(string str=&quot;&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00293">PTAStat.cpp:293</a></div></div>
1253
1253
  </div><!-- fragment -->
1254
1254
  </div>
1255
1255
  </div>
@@ -1359,7 +1359,7 @@ Additional Inherited Members</h2></td></tr>
1359
1359
 
1360
1360
  <p class="definition">Definition at line <a class="el" href="SVFGStat_8cpp_source.html#l00501">501</a> of file <a class="el" href="SVFGStat_8cpp_source.html">SVFGStat.cpp</a>.</p>
1361
1361
  <div class="fragment"><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;{</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n****SVFG Statistics****\n&quot;</span>;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">PTAStat::printStat</a>(str);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;}</div><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>
1362
- <div class="ttc" id="classSVF_1_1PTAStat_html_aa5f455bfa79743b8e263431593d29bbf"><div class="ttname"><a href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">SVF::PTAStat::printStat</a></div><div class="ttdeci">virtual void printStat(string str=&quot;&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00292">PTAStat.cpp:292</a></div></div>
1362
+ <div class="ttc" id="classSVF_1_1PTAStat_html_aa5f455bfa79743b8e263431593d29bbf"><div class="ttname"><a href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">SVF::PTAStat::printStat</a></div><div class="ttdeci">virtual void printStat(string str=&quot;&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00293">PTAStat.cpp:293</a></div></div>
1363
1363
  </div><!-- fragment -->
1364
1364
  </div>
1365
1365
  </div>