svf-tools 1.0.853 → 1.0.855

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 (325) hide show
  1. package/SVF-doxygen/html/AE_2CMakeLists_8txt.html +106 -0
  2. package/SVF-doxygen/html/AndersenStat_8cpp_source.html +19 -12
  3. package/SVF-doxygen/html/Andersen_8cpp_source.html +3 -3
  4. package/SVF-doxygen/html/Andersen_8h_source.html +4 -4
  5. package/SVF-doxygen/html/CFLStat_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/CMakeLists_8txt.html +5 -5
  7. package/SVF-doxygen/html/CSC_8cpp_source.html +2 -2
  8. package/SVF-doxygen/html/ConsGNode_8h_source.html +4 -4
  9. package/SVF-doxygen/html/ConsG_8cpp_source.html +663 -644
  10. package/SVF-doxygen/html/ConsG_8h_source.html +335 -332
  11. package/SVF-doxygen/html/DDAClient_8cpp_source.html +4 -4
  12. package/SVF-doxygen/html/DDAStat_8cpp_source.html +249 -252
  13. package/SVF-doxygen/html/DDAStat_8h_source.html +70 -93
  14. package/SVF-doxygen/html/FlowSensitiveStat_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/PTAStat_8cpp_source.html +107 -83
  16. package/SVF-doxygen/html/PTAStat_8h_source.html +38 -13
  17. package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/Steensgaard_8h_source.html +1 -1
  19. package/SVF-doxygen/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/WPAStat_8h_source.html +1 -1
  21. package/SVF-doxygen/html/ae_8cpp.html +179 -0
  22. package/SVF-doxygen/html/ae_8cpp_source.html +738 -0
  23. package/SVF-doxygen/html/annotated.html +1 -0
  24. package/SVF-doxygen/html/classSVF_1_1AddrCGEdge.html +11 -11
  25. package/SVF-doxygen/html/classSVF_1_1Andersen.html +20 -20
  26. package/SVF-doxygen/html/classSVF_1_1AndersenBase.html +10 -10
  27. package/SVF-doxygen/html/classSVF_1_1AndersenSCD.html +1 -1
  28. package/SVF-doxygen/html/classSVF_1_1AndersenSFR.html +3 -3
  29. package/SVF-doxygen/html/classSVF_1_1AndersenStat-members.html +8 -2
  30. package/SVF-doxygen/html/classSVF_1_1AndersenStat.html +34 -12
  31. package/SVF-doxygen/html/classSVF_1_1AndersenWaveDiff.html +1 -1
  32. package/SVF-doxygen/html/classSVF_1_1CFLStat-members.html +8 -2
  33. package/SVF-doxygen/html/classSVF_1_1CFLStat.html +16 -1
  34. package/SVF-doxygen/html/classSVF_1_1CSC.html +5 -5
  35. package/SVF-doxygen/html/classSVF_1_1ConstraintGraph-members.html +81 -80
  36. package/SVF-doxygen/html/classSVF_1_1ConstraintGraph.html +672 -623
  37. package/SVF-doxygen/html/classSVF_1_1ConstraintNode.html +28 -28
  38. package/SVF-doxygen/html/classSVF_1_1DDAClient.html +4 -4
  39. package/SVF-doxygen/html/classSVF_1_1DDAStat-members.html +7 -7
  40. package/SVF-doxygen/html/classSVF_1_1DDAStat.html +283 -463
  41. package/SVF-doxygen/html/classSVF_1_1FlowSensitiveStat-members.html +9 -3
  42. package/SVF-doxygen/html/classSVF_1_1FlowSensitiveStat.html +17 -2
  43. package/SVF-doxygen/html/classSVF_1_1ICFGStat-members.html +9 -3
  44. package/SVF-doxygen/html/classSVF_1_1ICFGStat.html +15 -0
  45. package/SVF-doxygen/html/classSVF_1_1MTAStat-members.html +7 -1
  46. package/SVF-doxygen/html/classSVF_1_1MTAStat.html +15 -0
  47. package/SVF-doxygen/html/classSVF_1_1MemSSAStat-members.html +9 -3
  48. package/SVF-doxygen/html/classSVF_1_1MemSSAStat.html +15 -0
  49. package/SVF-doxygen/html/classSVF_1_1PTAStat-members.html +7 -1
  50. package/SVF-doxygen/html/classSVF_1_1PTAStat.html +300 -84
  51. package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +1 -1
  52. package/SVF-doxygen/html/classSVF_1_1SVFGStat-members.html +7 -1
  53. package/SVF-doxygen/html/classSVF_1_1SVFGStat.html +15 -0
  54. package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +3 -3
  55. package/SVF-doxygen/html/classSVF_1_1TypeAnalysis.html +1 -1
  56. package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitiveStat-members.html +9 -3
  57. package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitiveStat.html +17 -2
  58. package/SVF-doxygen/html/classSymblicAbstractionTest-members.html +99 -0
  59. package/SVF-doxygen/html/classSymblicAbstractionTest.html +1282 -0
  60. package/SVF-doxygen/html/classes.html +56 -55
  61. package/SVF-doxygen/html/dir_454f632bef84d62ecd1cf13bd508acc9.html +86 -0
  62. package/SVF-doxygen/html/dir_e5d21102e3a998263c6c7812ac857e9d.html +2 -0
  63. package/SVF-doxygen/html/files.html +22 -20
  64. package/SVF-doxygen/html/functions.html +4 -4
  65. package/SVF-doxygen/html/functions_b.html +16 -10
  66. package/SVF-doxygen/html/functions_c.html +27 -24
  67. package/SVF-doxygen/html/functions_f.html +3 -3
  68. package/SVF-doxygen/html/functions_func_b.html +9 -3
  69. package/SVF-doxygen/html/functions_func_c.html +22 -19
  70. package/SVF-doxygen/html/functions_func_g.html +17 -16
  71. package/SVF-doxygen/html/functions_func_n.html +1 -1
  72. package/SVF-doxygen/html/functions_func_r.html +5 -2
  73. package/SVF-doxygen/html/functions_func_s.html +18 -15
  74. package/SVF-doxygen/html/functions_func_t.html +41 -1
  75. package/SVF-doxygen/html/functions_func_~.html +3 -0
  76. package/SVF-doxygen/html/functions_g.html +16 -15
  77. package/SVF-doxygen/html/functions_i.html +3 -3
  78. package/SVF-doxygen/html/functions_l.html +3 -3
  79. package/SVF-doxygen/html/functions_n.html +6 -6
  80. package/SVF-doxygen/html/functions_o.html +3 -3
  81. package/SVF-doxygen/html/functions_p.html +12 -12
  82. package/SVF-doxygen/html/functions_r.html +9 -6
  83. package/SVF-doxygen/html/functions_s.html +22 -19
  84. package/SVF-doxygen/html/functions_t.html +47 -7
  85. package/SVF-doxygen/html/functions_v.html +3 -3
  86. package/SVF-doxygen/html/functions_vars.html +4 -4
  87. package/SVF-doxygen/html/functions_w.html +9 -7
  88. package/SVF-doxygen/html/functions_~.html +3 -0
  89. package/SVF-doxygen/html/globals_a.html +2 -2
  90. package/SVF-doxygen/html/globals_func_a.html +2 -2
  91. package/SVF-doxygen/html/globals_func_m.html +5 -4
  92. package/SVF-doxygen/html/globals_m.html +5 -4
  93. package/SVF-doxygen/html/globals_s.html +3 -0
  94. package/SVF-doxygen/html/globals_vars.html +3 -0
  95. package/SVF-doxygen/html/hierarchy.html +40 -39
  96. package/SVF-doxygen/html/search/all_0.js +4 -4
  97. package/SVF-doxygen/html/search/all_1.js +133 -132
  98. package/SVF-doxygen/html/search/all_10.js +325 -325
  99. package/SVF-doxygen/html/search/all_11.js +225 -224
  100. package/SVF-doxygen/html/search/all_12.js +554 -552
  101. package/SVF-doxygen/html/search/all_13.js +203 -190
  102. package/SVF-doxygen/html/search/all_14.js +67 -67
  103. package/SVF-doxygen/html/search/all_15.js +168 -168
  104. package/SVF-doxygen/html/search/all_16.js +63 -63
  105. package/SVF-doxygen/html/search/all_17.js +1 -1
  106. package/SVF-doxygen/html/search/all_18.js +1 -1
  107. package/SVF-doxygen/html/search/all_19.js +11 -11
  108. package/SVF-doxygen/html/search/all_1a.js +175 -174
  109. package/SVF-doxygen/html/search/all_2.js +173 -171
  110. package/SVF-doxygen/html/search/all_3.js +649 -648
  111. package/SVF-doxygen/html/search/all_4.js +230 -230
  112. package/SVF-doxygen/html/search/all_5.js +119 -119
  113. package/SVF-doxygen/html/search/all_6.js +226 -226
  114. package/SVF-doxygen/html/search/all_7.js +1048 -1048
  115. package/SVF-doxygen/html/search/all_8.js +196 -196
  116. package/SVF-doxygen/html/search/all_9.js +605 -605
  117. package/SVF-doxygen/html/search/all_a.js +46 -46
  118. package/SVF-doxygen/html/search/all_b.js +26 -26
  119. package/SVF-doxygen/html/search/all_c.js +115 -115
  120. package/SVF-doxygen/html/search/all_d.js +197 -197
  121. package/SVF-doxygen/html/search/all_e.js +207 -207
  122. package/SVF-doxygen/html/search/all_f.js +116 -116
  123. package/SVF-doxygen/html/search/classes_0.js +26 -26
  124. package/SVF-doxygen/html/search/classes_1.js +9 -9
  125. package/SVF-doxygen/html/search/classes_10.js +74 -73
  126. package/SVF-doxygen/html/search/classes_11.js +15 -15
  127. package/SVF-doxygen/html/search/classes_12.js +2 -2
  128. package/SVF-doxygen/html/search/classes_13.js +10 -10
  129. package/SVF-doxygen/html/search/classes_14.js +14 -14
  130. package/SVF-doxygen/html/search/classes_15.js +1 -1
  131. package/SVF-doxygen/html/search/classes_2.js +81 -81
  132. package/SVF-doxygen/html/search/classes_3.js +37 -37
  133. package/SVF-doxygen/html/search/classes_4.js +9 -9
  134. package/SVF-doxygen/html/search/classes_5.js +28 -28
  135. package/SVF-doxygen/html/search/classes_6.js +104 -104
  136. package/SVF-doxygen/html/search/classes_7.js +34 -34
  137. package/SVF-doxygen/html/search/classes_8.js +57 -57
  138. package/SVF-doxygen/html/search/classes_9.js +1 -1
  139. package/SVF-doxygen/html/search/classes_a.js +12 -12
  140. package/SVF-doxygen/html/search/classes_b.js +29 -29
  141. package/SVF-doxygen/html/search/classes_c.js +6 -6
  142. package/SVF-doxygen/html/search/classes_d.js +18 -18
  143. package/SVF-doxygen/html/search/classes_e.js +36 -36
  144. package/SVF-doxygen/html/search/classes_f.js +25 -25
  145. package/SVF-doxygen/html/search/defines_0.js +3 -3
  146. package/SVF-doxygen/html/search/defines_1.js +2 -2
  147. package/SVF-doxygen/html/search/defines_2.js +30 -30
  148. package/SVF-doxygen/html/search/defines_3.js +20 -20
  149. package/SVF-doxygen/html/search/defines_4.js +2 -2
  150. package/SVF-doxygen/html/search/defines_5.js +4 -4
  151. package/SVF-doxygen/html/search/defines_6.js +2 -2
  152. package/SVF-doxygen/html/search/defines_7.js +5 -5
  153. package/SVF-doxygen/html/search/defines_8.js +11 -11
  154. package/SVF-doxygen/html/search/defines_9.js +9 -9
  155. package/SVF-doxygen/html/search/defines_a.js +2 -2
  156. package/SVF-doxygen/html/search/defines_b.js +1 -1
  157. package/SVF-doxygen/html/search/defines_c.js +3 -3
  158. package/SVF-doxygen/html/search/defines_d.js +2 -2
  159. package/SVF-doxygen/html/search/defines_e.js +7 -7
  160. package/SVF-doxygen/html/search/defines_f.js +3 -3
  161. package/SVF-doxygen/html/search/enums_0.js +3 -3
  162. package/SVF-doxygen/html/search/enums_1.js +2 -2
  163. package/SVF-doxygen/html/search/enums_10.js +1 -1
  164. package/SVF-doxygen/html/search/enums_11.js +1 -1
  165. package/SVF-doxygen/html/search/enums_2.js +8 -8
  166. package/SVF-doxygen/html/search/enums_3.js +1 -1
  167. package/SVF-doxygen/html/search/enums_4.js +3 -3
  168. package/SVF-doxygen/html/search/enums_5.js +1 -1
  169. package/SVF-doxygen/html/search/enums_6.js +2 -2
  170. package/SVF-doxygen/html/search/enums_7.js +2 -2
  171. package/SVF-doxygen/html/search/enums_8.js +4 -4
  172. package/SVF-doxygen/html/search/enums_9.js +1 -1
  173. package/SVF-doxygen/html/search/enums_a.js +1 -1
  174. package/SVF-doxygen/html/search/enums_b.js +7 -7
  175. package/SVF-doxygen/html/search/enums_c.js +1 -1
  176. package/SVF-doxygen/html/search/enums_d.js +4 -4
  177. package/SVF-doxygen/html/search/enums_e.js +2 -2
  178. package/SVF-doxygen/html/search/enums_f.js +4 -4
  179. package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
  180. package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
  181. package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
  182. package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
  183. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  184. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  185. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  186. package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
  187. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  188. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  189. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  190. package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
  191. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  192. package/SVF-doxygen/html/search/enumvalues_7.js +8 -8
  193. package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
  194. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  195. package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
  196. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  197. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  198. package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
  199. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  200. package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
  201. package/SVF-doxygen/html/search/files_0.js +14 -13
  202. package/SVF-doxygen/html/search/files_1.js +7 -7
  203. package/SVF-doxygen/html/search/files_10.js +8 -8
  204. package/SVF-doxygen/html/search/files_11.js +8 -8
  205. package/SVF-doxygen/html/search/files_12.js +2 -2
  206. package/SVF-doxygen/html/search/files_2.js +57 -57
  207. package/SVF-doxygen/html/search/files_3.js +14 -14
  208. package/SVF-doxygen/html/search/files_4.js +5 -5
  209. package/SVF-doxygen/html/search/files_5.js +13 -13
  210. package/SVF-doxygen/html/search/files_6.js +9 -9
  211. package/SVF-doxygen/html/search/files_7.js +14 -14
  212. package/SVF-doxygen/html/search/files_8.js +13 -13
  213. package/SVF-doxygen/html/search/files_9.js +18 -18
  214. package/SVF-doxygen/html/search/files_a.js +3 -3
  215. package/SVF-doxygen/html/search/files_b.js +2 -2
  216. package/SVF-doxygen/html/search/files_c.js +20 -20
  217. package/SVF-doxygen/html/search/files_d.js +4 -4
  218. package/SVF-doxygen/html/search/files_e.js +62 -62
  219. package/SVF-doxygen/html/search/files_f.js +8 -8
  220. package/SVF-doxygen/html/search/functions_0.js +13 -13
  221. package/SVF-doxygen/html/search/functions_1.js +364 -364
  222. package/SVF-doxygen/html/search/functions_10.js +140 -140
  223. package/SVF-doxygen/html/search/functions_11.js +140 -139
  224. package/SVF-doxygen/html/search/functions_12.js +289 -288
  225. package/SVF-doxygen/html/search/functions_13.js +72 -59
  226. package/SVF-doxygen/html/search/functions_14.js +39 -39
  227. package/SVF-doxygen/html/search/functions_15.js +71 -71
  228. package/SVF-doxygen/html/search/functions_16.js +32 -32
  229. package/SVF-doxygen/html/search/functions_17.js +3 -3
  230. package/SVF-doxygen/html/search/functions_18.js +175 -174
  231. package/SVF-doxygen/html/search/functions_2.js +91 -89
  232. package/SVF-doxygen/html/search/functions_3.js +262 -261
  233. package/SVF-doxygen/html/search/functions_4.js +78 -78
  234. package/SVF-doxygen/html/search/functions_5.js +53 -53
  235. package/SVF-doxygen/html/search/functions_6.js +60 -60
  236. package/SVF-doxygen/html/search/functions_7.js +857 -857
  237. package/SVF-doxygen/html/search/functions_8.js +148 -148
  238. package/SVF-doxygen/html/search/functions_9.js +421 -421
  239. package/SVF-doxygen/html/search/functions_a.js +30 -30
  240. package/SVF-doxygen/html/search/functions_b.js +2 -2
  241. package/SVF-doxygen/html/search/functions_c.js +25 -25
  242. package/SVF-doxygen/html/search/functions_d.js +79 -79
  243. package/SVF-doxygen/html/search/functions_e.js +35 -35
  244. package/SVF-doxygen/html/search/functions_f.js +56 -56
  245. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  246. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  247. package/SVF-doxygen/html/search/related_0.js +2 -2
  248. package/SVF-doxygen/html/search/related_1.js +2 -2
  249. package/SVF-doxygen/html/search/related_2.js +3 -3
  250. package/SVF-doxygen/html/search/related_3.js +2 -2
  251. package/SVF-doxygen/html/search/related_4.js +2 -2
  252. package/SVF-doxygen/html/search/related_5.js +1 -1
  253. package/SVF-doxygen/html/search/related_6.js +2 -2
  254. package/SVF-doxygen/html/search/related_7.js +4 -4
  255. package/SVF-doxygen/html/search/related_8.js +2 -2
  256. package/SVF-doxygen/html/search/related_9.js +4 -4
  257. package/SVF-doxygen/html/search/related_a.js +19 -19
  258. package/SVF-doxygen/html/search/related_b.js +4 -4
  259. package/SVF-doxygen/html/search/related_c.js +2 -2
  260. package/SVF-doxygen/html/search/related_d.js +12 -12
  261. package/SVF-doxygen/html/search/related_e.js +2 -2
  262. package/SVF-doxygen/html/search/related_f.js +2 -2
  263. package/SVF-doxygen/html/search/typedefs_0.js +19 -19
  264. package/SVF-doxygen/html/search/typedefs_1.js +26 -26
  265. package/SVF-doxygen/html/search/typedefs_10.js +62 -62
  266. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  267. package/SVF-doxygen/html/search/typedefs_12.js +11 -11
  268. package/SVF-doxygen/html/search/typedefs_13.js +33 -33
  269. package/SVF-doxygen/html/search/typedefs_14.js +8 -8
  270. package/SVF-doxygen/html/search/typedefs_2.js +129 -129
  271. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  272. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  273. package/SVF-doxygen/html/search/typedefs_5.js +41 -41
  274. package/SVF-doxygen/html/search/typedefs_6.js +56 -56
  275. package/SVF-doxygen/html/search/typedefs_7.js +44 -44
  276. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  277. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  278. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  279. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  280. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  281. package/SVF-doxygen/html/search/typedefs_d.js +14 -14
  282. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  283. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  284. package/SVF-doxygen/html/search/variables_0.js +151 -151
  285. package/SVF-doxygen/html/search/variables_1.js +76 -76
  286. package/SVF-doxygen/html/search/variables_10.js +98 -98
  287. package/SVF-doxygen/html/search/variables_11.js +45 -45
  288. package/SVF-doxygen/html/search/variables_12.js +91 -90
  289. package/SVF-doxygen/html/search/variables_13.js +74 -74
  290. package/SVF-doxygen/html/search/variables_14.js +14 -14
  291. package/SVF-doxygen/html/search/variables_15.js +49 -49
  292. package/SVF-doxygen/html/search/variables_16.js +9 -9
  293. package/SVF-doxygen/html/search/variables_17.js +1 -1
  294. package/SVF-doxygen/html/search/variables_18.js +2 -2
  295. package/SVF-doxygen/html/search/variables_2.js +38 -38
  296. package/SVF-doxygen/html/search/variables_3.js +142 -142
  297. package/SVF-doxygen/html/search/variables_4.js +50 -50
  298. package/SVF-doxygen/html/search/variables_5.js +37 -37
  299. package/SVF-doxygen/html/search/variables_6.js +66 -66
  300. package/SVF-doxygen/html/search/variables_7.js +34 -34
  301. package/SVF-doxygen/html/search/variables_8.js +7 -7
  302. package/SVF-doxygen/html/search/variables_9.js +78 -78
  303. package/SVF-doxygen/html/search/variables_a.js +4 -4
  304. package/SVF-doxygen/html/search/variables_b.js +10 -10
  305. package/SVF-doxygen/html/search/variables_c.js +45 -45
  306. package/SVF-doxygen/html/search/variables_d.js +55 -55
  307. package/SVF-doxygen/html/search/variables_e.js +123 -123
  308. package/SVF-doxygen/html/search/variables_f.js +30 -30
  309. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +118 -118
  310. package/SVF-doxygen/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4.html +1 -1
  311. package/SVF-doxygen/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4.html +2 -2
  312. package/SVF-doxygen/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4.html +1 -1
  313. package/build.sh +1 -1
  314. package/package.json +1 -1
  315. package/svf/include/DDA/DDAStat.h +0 -17
  316. package/svf/include/Graphs/ConsG.h +2 -0
  317. package/svf/include/Util/PTAStat.h +19 -1
  318. package/svf/lib/DDA/DDAStat.cpp +0 -3
  319. package/svf/lib/Graphs/ConsG.cpp +20 -0
  320. package/svf/lib/Util/PTAStat.cpp +17 -1
  321. package/svf/lib/WPA/Andersen.cpp +2 -2
  322. package/svf/lib/WPA/AndersenStat.cpp +3 -0
  323. package/svf-llvm/tools/AE/CMakeLists.txt +2 -0
  324. package/svf-llvm/tools/AE/ae.cpp +607 -0
  325. package/svf-llvm/tools/CMakeLists.txt +3 -2
@@ -207,651 +207,669 @@ $(function() {
207
207
  <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* edge = SVFUtil::cast&lt;StoreStmt&gt;(*iter);</div>
208
208
  <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; addStoreCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div>
209
209
  <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div>
210
- <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;}</div>
211
- <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; </div>
212
- <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; </div>
213
- <div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a77ba38543b1ee164f1ae95589d5dbc44"> 148</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a77ba38543b1ee164f1ae95589d5dbc44">ConstraintGraph::destroy</a>()</div>
214
- <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;{</div>
215
- <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;}</div>
216
- <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; </div>
217
- <div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrCGEdge.html#a131779667553499b85423e1932664252"> 155</a></span>&#160;<a class="code" href="classSVF_1_1AddrCGEdge.html#a9c8da69a469e51d83c5009ba2685bcf6">AddrCGEdge::AddrCGEdge</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* s, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* d, <a class="code" href="namespaceSVF.html#ae71551d6a1fc300e0403297aa25ddf94">EdgeID</a> <span class="keywordtype">id</span>)</div>
218
- <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; : <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>(s,d,Addr,id)</div>
219
- <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;{</div>
220
- <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="comment">// Retarget addr edges may lead s to be a dummy node</span></div>
221
- <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(s-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div>
222
- <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; (void)node; <span class="comment">// Suppress warning of unused variable under release build</span></div>
223
- <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>())</div>
224
- <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div>
225
- <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; assert(!SVFUtil::isa&lt;DummyValVar&gt;(node) &amp;&amp; <span class="stringliteral">&quot;a dummy node??&quot;</span>);</div>
226
- <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div>
227
- <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;}</div>
228
- <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; </div>
229
- <div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a56cfcc39637cf5208f65297a63dde266"> 170</a></span>&#160;<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a56cfcc39637cf5208f65297a63dde266">ConstraintGraph::addAddrCGEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div>
230
- <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;{</div>
231
- <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(src);</div>
232
- <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(dst);</div>
233
- <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ConstraintGraph.html#a5f57823a4918f6c6bfee9c18beddda51">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>))</div>
234
- <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
235
- <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintGraph.html#ac246dc91562d4b1e168b7c39b2c2720f">edgeIndex</a>++);</div>
236
- <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; </div>
237
- <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1ConstraintGraph.html#a5bbd6df25027d26911f5d8d6a10881dc">AddrCGEdgeSet</a>.insert(edge).second;</div>
238
- <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div>
239
- <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new AddrCGEdge not added??&quot;</span>);</div>
240
- <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; </div>
241
- <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#af129941c522dbc1b0fe94f84eea0d97a">addOutgoingAddrEdge</a>(edge);</div>
242
- <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aeff08dd512d0a97fb14069b37386e9fe">addIncomingAddrEdge</a>(edge);</div>
243
- <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">return</span> edge;</div>
210
+ <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; </div>
211
+ <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; clearSolitaries();</div>
212
+ <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;}</div>
213
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; </div>
214
+ <div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a65c96cdd904e4240fbc7a044f89b91a1"> 149</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a65c96cdd904e4240fbc7a044f89b91a1">ConstraintGraph::clearSolitaries</a>()</div>
215
+ <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;{</div>
216
+ <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;ConstraintNode*&gt;</a> nodesToRemove;</div>
217
+ <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = this-&gt;begin(); it != this-&gt;end(); ++it)</div>
218
+ <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div>
219
+ <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">if</span> (it-&gt;second-&gt;hasIncomingEdge() || it-&gt;second-&gt;hasOutgoingEdge())</div>
220
+ <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">continue</span>;</div>
221
+ <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span> (pag-&gt;getGNode(it-&gt;first)-&gt;isPointer())</div>
222
+ <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">continue</span>;</div>
223
+ <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; nodesToRemove.insert(it-&gt;second);</div>
224
+ <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div>
225
+ <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; </div>
226
+ <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> node : nodesToRemove)</div>
227
+ <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; removeConstraintNode(node);</div>
228
+ <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;}</div>
229
+ <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; </div>
230
+ <div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a77ba38543b1ee164f1ae95589d5dbc44"> 168</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a77ba38543b1ee164f1ae95589d5dbc44">ConstraintGraph::destroy</a>()</div>
231
+ <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;{</div>
232
+ <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;}</div>
233
+ <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; </div>
234
+ <div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrCGEdge.html#a131779667553499b85423e1932664252"> 175</a></span>&#160;<a class="code" href="classSVF_1_1AddrCGEdge.html#a9c8da69a469e51d83c5009ba2685bcf6">AddrCGEdge::AddrCGEdge</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* s, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* d, <a class="code" href="namespaceSVF.html#ae71551d6a1fc300e0403297aa25ddf94">EdgeID</a> <span class="keywordtype">id</span>)</div>
235
+ <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; : <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>(s,d,Addr,id)</div>
236
+ <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;{</div>
237
+ <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="comment">// Retarget addr edges may lead s to be a dummy node</span></div>
238
+ <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(s-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div>
239
+ <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; (void)node; <span class="comment">// Suppress warning of unused variable under release build</span></div>
240
+ <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>())</div>
241
+ <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div>
242
+ <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; assert(!SVFUtil::isa&lt;DummyValVar&gt;(node) &amp;&amp; <span class="stringliteral">&quot;a dummy node??&quot;</span>);</div>
243
+ <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div>
244
244
  <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;}</div>
245
245
  <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; </div>
246
- <div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758"> 190</a></span>&#160;<a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758">ConstraintGraph::addCopyCGEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div>
246
+ <div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a56cfcc39637cf5208f65297a63dde266"> 190</a></span>&#160;<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a56cfcc39637cf5208f65297a63dde266">ConstraintGraph::addAddrCGEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div>
247
247
  <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;{</div>
248
- <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; </div>
249
- <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(src);</div>
250
- <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(dst);</div>
251
- <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ConstraintGraph.html#a5f57823a4918f6c6bfee9c18beddda51">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>) || srcNode == dstNode)</div>
252
- <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
248
+ <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(src);</div>
249
+ <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(dst);</div>
250
+ <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ConstraintGraph.html#a5f57823a4918f6c6bfee9c18beddda51">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>))</div>
251
+ <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
252
+ <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintGraph.html#ac246dc91562d4b1e168b7c39b2c2720f">edgeIndex</a>++);</div>
253
253
  <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; </div>
254
- <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintGraph.html#ac246dc91562d4b1e168b7c39b2c2720f">edgeIndex</a>++);</div>
255
- <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; </div>
256
- <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1ConstraintGraph.html#a1be3ebb84b3d334daf98f7e6f5b82256">directEdgeSet</a>.insert(edge).second;</div>
257
- <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div>
258
- <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new CopyCGEdge not added??&quot;</span>);</div>
259
- <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; </div>
260
- <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a2395948518a1befb7a3762bbad6adf9f">addOutgoingCopyEdge</a>(edge);</div>
261
- <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#ad54cc825bb7f5642671e75b90b2633a2">addIncomingCopyEdge</a>(edge);</div>
262
- <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> edge;</div>
263
- <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;}</div>
264
- <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; </div>
265
- <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; </div>
266
- <div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#ab0b4f708097d4b3d92b4513818fef68c"> 213</a></span>&#160;<a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#ab0b4f708097d4b3d92b4513818fef68c">ConstraintGraph::addNormalGepCGEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>&amp; ap)</div>
267
- <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;{</div>
268
- <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(src);</div>
269
- <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(dst);</div>
270
- <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ConstraintGraph.html#a5f57823a4918f6c6bfee9c18beddda51">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375acfd0a194af0da66162545f0089eb4baa">ConstraintEdge::NormalGep</a>))</div>
271
- <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
254
+ <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1ConstraintGraph.html#a5bbd6df25027d26911f5d8d6a10881dc">AddrCGEdgeSet</a>.insert(edge).second;</div>
255
+ <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div>
256
+ <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new AddrCGEdge not added??&quot;</span>);</div>
257
+ <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; </div>
258
+ <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#af129941c522dbc1b0fe94f84eea0d97a">addOutgoingAddrEdge</a>(edge);</div>
259
+ <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aeff08dd512d0a97fb14069b37386e9fe">addIncomingAddrEdge</a>(edge);</div>
260
+ <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">return</span> edge;</div>
261
+ <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;}</div>
262
+ <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; </div>
263
+ <div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758"> 210</a></span>&#160;<a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758">ConstraintGraph::addCopyCGEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div>
264
+ <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;{</div>
265
+ <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; </div>
266
+ <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(src);</div>
267
+ <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(dst);</div>
268
+ <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ConstraintGraph.html#a5f57823a4918f6c6bfee9c18beddda51">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>) || srcNode == dstNode)</div>
269
+ <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
270
+ <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; </div>
271
+ <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintGraph.html#ac246dc91562d4b1e168b7c39b2c2720f">edgeIndex</a>++);</div>
272
272
  <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; </div>
273
- <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* edge =</div>
274
- <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keyword">new</span> <a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>(srcNode, dstNode, ap, <a class="code" href="classSVF_1_1ConstraintGraph.html#ac246dc91562d4b1e168b7c39b2c2720f">edgeIndex</a>++);</div>
275
- <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; </div>
276
- <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1ConstraintGraph.html#a1be3ebb84b3d334daf98f7e6f5b82256">directEdgeSet</a>.insert(edge).second;</div>
277
- <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div>
278
- <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new NormalGepCGEdge not added??&quot;</span>);</div>
279
- <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; </div>
280
- <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#abc56843c51c00a9018473f415f73e9f6">addOutgoingGepEdge</a>(edge);</div>
281
- <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aaf0b98573a980aea1151a837580a40a5">addIncomingGepEdge</a>(edge);</div>
282
- <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> edge;</div>
283
- <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;}</div>
284
- <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; </div>
285
- <div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a6902cabb252b1eaadb3c8220b4581a2f"> 235</a></span>&#160;<a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a6902cabb252b1eaadb3c8220b4581a2f">ConstraintGraph::addVariantGepCGEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div>
286
- <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;{</div>
287
- <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(src);</div>
288
- <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(dst);</div>
289
- <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ConstraintGraph.html#a5f57823a4918f6c6bfee9c18beddda51">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375ae5df3ce07dd670b48916f7b8ab33ae5a">ConstraintEdge::VariantGep</a>))</div>
290
- <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
291
- <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; </div>
292
- <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintGraph.html#ac246dc91562d4b1e168b7c39b2c2720f">edgeIndex</a>++);</div>
293
- <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; </div>
294
- <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1ConstraintGraph.html#a1be3ebb84b3d334daf98f7e6f5b82256">directEdgeSet</a>.insert(edge).second;</div>
295
- <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div>
296
- <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new VariantGepCGEdge not added??&quot;</span>);</div>
297
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; </div>
298
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#abc56843c51c00a9018473f415f73e9f6">addOutgoingGepEdge</a>(edge);</div>
299
- <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aaf0b98573a980aea1151a837580a40a5">addIncomingGepEdge</a>(edge);</div>
300
- <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">return</span> edge;</div>
301
- <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;}</div>
302
- <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; </div>
303
- <div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a1e5a23fbd08cf4186775baffbd6a7934"> 256</a></span>&#160;<a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a1e5a23fbd08cf4186775baffbd6a7934">ConstraintGraph::addLoadCGEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div>
304
- <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;{</div>
305
- <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(src);</div>
306
- <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(dst);</div>
307
- <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ConstraintGraph.html#a5f57823a4918f6c6bfee9c18beddda51">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2">ConstraintEdge::Load</a>))</div>
308
- <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
309
- <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; </div>
310
- <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintGraph.html#ac246dc91562d4b1e168b7c39b2c2720f">edgeIndex</a>++);</div>
311
- <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; </div>
312
- <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1ConstraintGraph.html#a1cb9124b29720e7a5b39d83419f9cc17">LoadCGEdgeSet</a>.insert(edge).second;</div>
313
- <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div>
314
- <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new LoadCGEdge not added??&quot;</span>);</div>
315
- <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; </div>
316
- <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aa95df9972daaf3a2f92480a5fdc5b3a1">addOutgoingLoadEdge</a>(edge);</div>
317
- <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a9d1bb95ad5549d7e6030fe07f8e070a2">addIncomingLoadEdge</a>(edge);</div>
318
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">return</span> edge;</div>
319
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;}</div>
320
- <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; </div>
321
- <div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0"> 277</a></span>&#160;<a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0">ConstraintGraph::addStoreCGEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div>
322
- <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;{</div>
323
- <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(src);</div>
324
- <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(dst);</div>
325
- <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ConstraintGraph.html#a5f57823a4918f6c6bfee9c18beddda51">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a20d6a102ddc06257a822ffffcc5a3b47">ConstraintEdge::Store</a>))</div>
326
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
327
- <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; </div>
328
- <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintGraph.html#ac246dc91562d4b1e168b7c39b2c2720f">edgeIndex</a>++);</div>
329
- <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; </div>
330
- <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1ConstraintGraph.html#a0f9d5eef25827ac1d380e5d8bd225025">StoreCGEdgeSet</a>.insert(edge).second;</div>
331
- <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div>
332
- <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new StoreCGEdge not added??&quot;</span>);</div>
333
- <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; </div>
334
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a18a52c763aa946f06798dc5592f5c1e0">addOutgoingStoreEdge</a>(edge);</div>
335
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a202193059dd3122d969561080b82c504">addIncomingStoreEdge</a>(edge);</div>
336
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">return</span> edge;</div>
337
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;}</div>
338
- <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; </div>
339
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; </div>
340
- <div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722"> 303</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722">ConstraintGraph::reTargetDstOfEdge</a>(<a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* newDstNode)</div>
341
- <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;{</div>
342
- <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> newDstNodeID = newDstNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div>
343
- <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div>
344
- <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* load = SVFUtil::dyn_cast&lt;LoadCGEdge&gt;(edge))</div>
345
- <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div>
346
- <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#aa4bca2422049413439cb0c3400f2ce28">removeLoadEdge</a>(load);</div>
347
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a1e5a23fbd08cf4186775baffbd6a7934">addLoadCGEdge</a>(srcId,newDstNodeID);</div>
348
- <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div>
349
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* store = SVFUtil::dyn_cast&lt;StoreCGEdge&gt;(edge))</div>
350
- <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; {</div>
351
- <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#aad3d05c949c33a587b3ac6d627f5a0a2">removeStoreEdge</a>(store);</div>
352
- <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0">addStoreCGEdge</a>(srcId,newDstNodeID);</div>
353
- <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div>
354
- <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast&lt;CopyCGEdge&gt;(edge))</div>
355
- <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; {</div>
356
- <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>);</div>
357
- <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758">addCopyCGEdge</a>(srcId,newDstNodeID);</div>
358
- <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div>
359
- <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* gep = SVFUtil::dyn_cast&lt;NormalGepCGEdge&gt;(edge))</div>
360
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; {</div>
361
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> ap = gep-&gt;getAccessPath();</div>
362
- <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(gep);</div>
363
- <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#ab0b4f708097d4b3d92b4513818fef68c">addNormalGepCGEdge</a>(srcId,newDstNodeID, ap);</div>
364
- <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div>
365
- <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* gep = SVFUtil::dyn_cast&lt;VariantGepCGEdge&gt;(edge))</div>
366
- <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div>
367
- <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(gep);</div>
368
- <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a6902cabb252b1eaadb3c8220b4581a2f">addVariantGepCGEdge</a>(srcId,newDstNodeID);</div>
369
- <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div>
370
- <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr = SVFUtil::dyn_cast&lt;AddrCGEdge&gt;(edge))</div>
371
- <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div>
372
- <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">removeAddrEdge</a>(addr);</div>
273
+ <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1ConstraintGraph.html#a1be3ebb84b3d334daf98f7e6f5b82256">directEdgeSet</a>.insert(edge).second;</div>
274
+ <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div>
275
+ <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new CopyCGEdge not added??&quot;</span>);</div>
276
+ <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; </div>
277
+ <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a2395948518a1befb7a3762bbad6adf9f">addOutgoingCopyEdge</a>(edge);</div>
278
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#ad54cc825bb7f5642671e75b90b2633a2">addIncomingCopyEdge</a>(edge);</div>
279
+ <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">return</span> edge;</div>
280
+ <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;}</div>
281
+ <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; </div>
282
+ <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; </div>
283
+ <div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#ab0b4f708097d4b3d92b4513818fef68c"> 233</a></span>&#160;<a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#ab0b4f708097d4b3d92b4513818fef68c">ConstraintGraph::addNormalGepCGEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>&amp; ap)</div>
284
+ <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;{</div>
285
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(src);</div>
286
+ <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(dst);</div>
287
+ <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ConstraintGraph.html#a5f57823a4918f6c6bfee9c18beddda51">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375acfd0a194af0da66162545f0089eb4baa">ConstraintEdge::NormalGep</a>))</div>
288
+ <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
289
+ <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; </div>
290
+ <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* edge =</div>
291
+ <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keyword">new</span> <a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>(srcNode, dstNode, ap, <a class="code" href="classSVF_1_1ConstraintGraph.html#ac246dc91562d4b1e168b7c39b2c2720f">edgeIndex</a>++);</div>
292
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; </div>
293
+ <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1ConstraintGraph.html#a1be3ebb84b3d334daf98f7e6f5b82256">directEdgeSet</a>.insert(edge).second;</div>
294
+ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div>
295
+ <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new NormalGepCGEdge not added??&quot;</span>);</div>
296
+ <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; </div>
297
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#abc56843c51c00a9018473f415f73e9f6">addOutgoingGepEdge</a>(edge);</div>
298
+ <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aaf0b98573a980aea1151a837580a40a5">addIncomingGepEdge</a>(edge);</div>
299
+ <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> edge;</div>
300
+ <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;}</div>
301
+ <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; </div>
302
+ <div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a6902cabb252b1eaadb3c8220b4581a2f"> 255</a></span>&#160;<a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a6902cabb252b1eaadb3c8220b4581a2f">ConstraintGraph::addVariantGepCGEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div>
303
+ <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;{</div>
304
+ <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(src);</div>
305
+ <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(dst);</div>
306
+ <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ConstraintGraph.html#a5f57823a4918f6c6bfee9c18beddda51">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375ae5df3ce07dd670b48916f7b8ab33ae5a">ConstraintEdge::VariantGep</a>))</div>
307
+ <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
308
+ <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; </div>
309
+ <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintGraph.html#ac246dc91562d4b1e168b7c39b2c2720f">edgeIndex</a>++);</div>
310
+ <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; </div>
311
+ <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1ConstraintGraph.html#a1be3ebb84b3d334daf98f7e6f5b82256">directEdgeSet</a>.insert(edge).second;</div>
312
+ <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div>
313
+ <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new VariantGepCGEdge not added??&quot;</span>);</div>
314
+ <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; </div>
315
+ <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#abc56843c51c00a9018473f415f73e9f6">addOutgoingGepEdge</a>(edge);</div>
316
+ <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aaf0b98573a980aea1151a837580a40a5">addIncomingGepEdge</a>(edge);</div>
317
+ <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">return</span> edge;</div>
318
+ <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;}</div>
319
+ <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; </div>
320
+ <div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a1e5a23fbd08cf4186775baffbd6a7934"> 276</a></span>&#160;<a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a1e5a23fbd08cf4186775baffbd6a7934">ConstraintGraph::addLoadCGEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div>
321
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;{</div>
322
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(src);</div>
323
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(dst);</div>
324
+ <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ConstraintGraph.html#a5f57823a4918f6c6bfee9c18beddda51">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2">ConstraintEdge::Load</a>))</div>
325
+ <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
326
+ <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; </div>
327
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintGraph.html#ac246dc91562d4b1e168b7c39b2c2720f">edgeIndex</a>++);</div>
328
+ <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; </div>
329
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1ConstraintGraph.html#a1cb9124b29720e7a5b39d83419f9cc17">LoadCGEdgeSet</a>.insert(edge).second;</div>
330
+ <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div>
331
+ <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new LoadCGEdge not added??&quot;</span>);</div>
332
+ <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; </div>
333
+ <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aa95df9972daaf3a2f92480a5fdc5b3a1">addOutgoingLoadEdge</a>(edge);</div>
334
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a9d1bb95ad5549d7e6030fe07f8e070a2">addIncomingLoadEdge</a>(edge);</div>
335
+ <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> edge;</div>
336
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;}</div>
337
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; </div>
338
+ <div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0"> 297</a></span>&#160;<a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0">ConstraintGraph::addStoreCGEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div>
339
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;{</div>
340
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(src);</div>
341
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(dst);</div>
342
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ConstraintGraph.html#a5f57823a4918f6c6bfee9c18beddda51">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a20d6a102ddc06257a822ffffcc5a3b47">ConstraintEdge::Store</a>))</div>
343
+ <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
344
+ <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; </div>
345
+ <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintGraph.html#ac246dc91562d4b1e168b7c39b2c2720f">edgeIndex</a>++);</div>
346
+ <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; </div>
347
+ <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1ConstraintGraph.html#a0f9d5eef25827ac1d380e5d8bd225025">StoreCGEdgeSet</a>.insert(edge).second;</div>
348
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div>
349
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new StoreCGEdge not added??&quot;</span>);</div>
350
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; </div>
351
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a18a52c763aa946f06798dc5592f5c1e0">addOutgoingStoreEdge</a>(edge);</div>
352
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a202193059dd3122d969561080b82c504">addIncomingStoreEdge</a>(edge);</div>
353
+ <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">return</span> edge;</div>
354
+ <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;}</div>
355
+ <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; </div>
356
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; </div>
357
+ <div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722"> 323</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722">ConstraintGraph::reTargetDstOfEdge</a>(<a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* newDstNode)</div>
358
+ <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;{</div>
359
+ <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> newDstNodeID = newDstNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div>
360
+ <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div>
361
+ <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* load = SVFUtil::dyn_cast&lt;LoadCGEdge&gt;(edge))</div>
362
+ <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; {</div>
363
+ <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#aa4bca2422049413439cb0c3400f2ce28">removeLoadEdge</a>(load);</div>
364
+ <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a1e5a23fbd08cf4186775baffbd6a7934">addLoadCGEdge</a>(srcId,newDstNodeID);</div>
365
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div>
366
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* store = SVFUtil::dyn_cast&lt;StoreCGEdge&gt;(edge))</div>
367
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div>
368
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#aad3d05c949c33a587b3ac6d627f5a0a2">removeStoreEdge</a>(store);</div>
369
+ <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0">addStoreCGEdge</a>(srcId,newDstNodeID);</div>
373
370
  <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div>
374
- <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">else</span></div>
375
- <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no other edge type!!&quot;</span>);</div>
376
- <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;}</div>
377
- <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; </div>
378
- <div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aaae56afed424f7cd59fddb3fcb2f7214"> 347</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aaae56afed424f7cd59fddb3fcb2f7214">ConstraintGraph::reTargetSrcOfEdge</a>(<a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* newSrcNode)</div>
379
- <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;{</div>
380
- <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> newSrcNodeID = newSrcNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div>
381
- <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div>
382
- <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* load = SVFUtil::dyn_cast&lt;LoadCGEdge&gt;(edge))</div>
383
- <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; {</div>
384
- <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#aa4bca2422049413439cb0c3400f2ce28">removeLoadEdge</a>(load);</div>
385
- <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a1e5a23fbd08cf4186775baffbd6a7934">addLoadCGEdge</a>(newSrcNodeID,dstId);</div>
386
- <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div>
387
- <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* store = SVFUtil::dyn_cast&lt;StoreCGEdge&gt;(edge))</div>
388
- <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; {</div>
389
- <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#aad3d05c949c33a587b3ac6d627f5a0a2">removeStoreEdge</a>(store);</div>
390
- <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0">addStoreCGEdge</a>(newSrcNodeID,dstId);</div>
391
- <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; }</div>
392
- <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast&lt;CopyCGEdge&gt;(edge))</div>
393
- <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; {</div>
394
- <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>);</div>
395
- <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758">addCopyCGEdge</a>(newSrcNodeID,dstId);</div>
396
- <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div>
397
- <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* gep = SVFUtil::dyn_cast&lt;NormalGepCGEdge&gt;(edge))</div>
398
- <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; {</div>
399
- <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> ap = gep-&gt;getAccessPath();</div>
400
- <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(gep);</div>
401
- <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#ab0b4f708097d4b3d92b4513818fef68c">addNormalGepCGEdge</a>(newSrcNodeID, dstId, ap);</div>
402
- <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; }</div>
403
- <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* gep = SVFUtil::dyn_cast&lt;VariantGepCGEdge&gt;(edge))</div>
404
- <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; {</div>
405
- <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(gep);</div>
406
- <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a6902cabb252b1eaadb3c8220b4581a2f">addVariantGepCGEdge</a>(newSrcNodeID,dstId);</div>
407
- <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div>
408
- <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr = SVFUtil::dyn_cast&lt;AddrCGEdge&gt;(edge))</div>
409
- <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; {</div>
410
- <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">removeAddrEdge</a>(addr);</div>
371
+ <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast&lt;CopyCGEdge&gt;(edge))</div>
372
+ <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; {</div>
373
+ <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>);</div>
374
+ <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758">addCopyCGEdge</a>(srcId,newDstNodeID);</div>
375
+ <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div>
376
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* gep = SVFUtil::dyn_cast&lt;NormalGepCGEdge&gt;(edge))</div>
377
+ <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div>
378
+ <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> ap = gep-&gt;getAccessPath();</div>
379
+ <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(gep);</div>
380
+ <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#ab0b4f708097d4b3d92b4513818fef68c">addNormalGepCGEdge</a>(srcId,newDstNodeID, ap);</div>
381
+ <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div>
382
+ <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* gep = SVFUtil::dyn_cast&lt;VariantGepCGEdge&gt;(edge))</div>
383
+ <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; {</div>
384
+ <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(gep);</div>
385
+ <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a6902cabb252b1eaadb3c8220b4581a2f">addVariantGepCGEdge</a>(srcId,newDstNodeID);</div>
386
+ <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div>
387
+ <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr = SVFUtil::dyn_cast&lt;AddrCGEdge&gt;(edge))</div>
388
+ <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; {</div>
389
+ <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">removeAddrEdge</a>(addr);</div>
390
+ <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div>
391
+ <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">else</span></div>
392
+ <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no other edge type!!&quot;</span>);</div>
393
+ <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;}</div>
394
+ <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; </div>
395
+ <div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aaae56afed424f7cd59fddb3fcb2f7214"> 367</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aaae56afed424f7cd59fddb3fcb2f7214">ConstraintGraph::reTargetSrcOfEdge</a>(<a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* newSrcNode)</div>
396
+ <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;{</div>
397
+ <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> newSrcNodeID = newSrcNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div>
398
+ <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div>
399
+ <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* load = SVFUtil::dyn_cast&lt;LoadCGEdge&gt;(edge))</div>
400
+ <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; {</div>
401
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#aa4bca2422049413439cb0c3400f2ce28">removeLoadEdge</a>(load);</div>
402
+ <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a1e5a23fbd08cf4186775baffbd6a7934">addLoadCGEdge</a>(newSrcNodeID,dstId);</div>
403
+ <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div>
404
+ <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* store = SVFUtil::dyn_cast&lt;StoreCGEdge&gt;(edge))</div>
405
+ <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div>
406
+ <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#aad3d05c949c33a587b3ac6d627f5a0a2">removeStoreEdge</a>(store);</div>
407
+ <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0">addStoreCGEdge</a>(newSrcNodeID,dstId);</div>
411
408
  <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div>
412
- <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">else</span></div>
413
- <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no other edge type!!&quot;</span>);</div>
414
- <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;}</div>
415
- <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; </div>
416
- <div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee"> 388</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">ConstraintGraph::removeAddrEdge</a>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* edge)</div>
417
- <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;{</div>
418
- <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#abaf196bcce496fbdee6740c42ca9dd71">removeOutgoingAddrEdge</a>(edge);</div>
419
- <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a5a97f47f5a65550dce11341c6f8d9ae6">removeIncomingAddrEdge</a>(edge);</div>
420
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = <a class="code" href="classSVF_1_1ConstraintGraph.html#a5bbd6df25027d26911f5d8d6a10881dc">AddrCGEdgeSet</a>.erase(edge);</div>
421
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div>
422
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div>
423
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keyword">delete</span> edge;</div>
424
- <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;}</div>
425
- <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; </div>
426
- <div class="line"><a name="l00401"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aa4bca2422049413439cb0c3400f2ce28"> 401</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aa4bca2422049413439cb0c3400f2ce28">ConstraintGraph::removeLoadEdge</a>(<a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* edge)</div>
427
- <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;{</div>
428
- <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a7d810ec9abc8817a938a557ac78dc8c0">removeOutgoingLoadEdge</a>(edge);</div>
429
- <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aa1f60c884d007524641d1a786410d41b">removeIncomingLoadEdge</a>(edge);</div>
430
- <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = <a class="code" href="classSVF_1_1ConstraintGraph.html#a1cb9124b29720e7a5b39d83419f9cc17">LoadCGEdgeSet</a>.erase(edge);</div>
431
- <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div>
432
- <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div>
433
- <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keyword">delete</span> edge;</div>
434
- <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;}</div>
435
- <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; </div>
436
- <div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aad3d05c949c33a587b3ac6d627f5a0a2"> 414</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aad3d05c949c33a587b3ac6d627f5a0a2">ConstraintGraph::removeStoreEdge</a>(<a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* edge)</div>
437
- <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;{</div>
438
- <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a24ef3eedb218283d106eceb8a73ca1b4">removeOutgoingStoreEdge</a>(edge);</div>
439
- <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a2d0e87fa3174562c97b519b2b144d8ea">removeIncomingStoreEdge</a>(edge);</div>
440
- <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = <a class="code" href="classSVF_1_1ConstraintGraph.html#a0f9d5eef25827ac1d380e5d8bd225025">StoreCGEdgeSet</a>.erase(edge);</div>
441
- <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div>
442
- <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div>
443
- <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keyword">delete</span> edge;</div>
444
- <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;}</div>
445
- <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; </div>
446
- <div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244"> 427</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">ConstraintGraph::removeDirectEdge</a>(<a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge)</div>
447
- <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;{</div>
448
- <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; </div>
449
- <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a73b8c0967cde518a2ea7dfea2a7dc32f">removeOutgoingDirectEdge</a>(edge);</div>
450
- <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a7946aea5584d124f6c83fd91ab497500">removeIncomingDirectEdge</a>(edge);</div>
451
- <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = <a class="code" href="classSVF_1_1ConstraintGraph.html#a1be3ebb84b3d334daf98f7e6f5b82256">directEdgeSet</a>.erase(edge);</div>
452
- <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div>
453
- <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div>
454
- <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keyword">delete</span> edge;</div>
455
- <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;}</div>
456
- <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; </div>
457
- <div class="line"><a name="l00442"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a081bf1238121eb52a0c9ad60f77ecbcd"> 442</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a081bf1238121eb52a0c9ad60f77ecbcd">ConstraintGraph::moveInEdgesToRepNode</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* rep )</div>
458
- <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;{</div>
459
- <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; std::vector&lt;ConstraintEdge*&gt; sccEdges;</div>
460
- <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; std::vector&lt;ConstraintEdge*&gt; nonSccEdges;</div>
461
- <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> it = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), eit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); it != eit;</div>
462
- <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; ++it)</div>
463
- <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div>
464
- <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* subInEdge = *it;</div>
465
- <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ConstraintGraph.html#a39b973543acdcdc5493832cc9d0f586f">sccRepNode</a>(subInEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>()) != rep-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())</div>
466
- <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; nonSccEdges.push_back(subInEdge);</div>
467
- <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">else</span></div>
468
- <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; {</div>
469
- <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; sccEdges.push_back(subInEdge);</div>
470
- <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div>
471
- <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div>
472
- <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="comment">// if this edge is outside scc, then re-target edge dst to rep</span></div>
473
- <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">while</span>(!nonSccEdges.empty())</div>
474
- <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; {</div>
475
- <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = nonSccEdges.back();</div>
476
- <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; nonSccEdges.pop_back();</div>
477
- <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722">reTargetDstOfEdge</a>(edge,rep);</div>
478
- <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div>
479
- <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; </div>
480
- <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordtype">bool</span> criticalGepInsideSCC = <span class="keyword">false</span>;</div>
481
- <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="comment">// if this edge is inside scc, then remove this edge and two end nodes</span></div>
482
- <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">while</span>(!sccEdges.empty())</div>
409
+ <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast&lt;CopyCGEdge&gt;(edge))</div>
410
+ <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div>
411
+ <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>);</div>
412
+ <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758">addCopyCGEdge</a>(newSrcNodeID,dstId);</div>
413
+ <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; }</div>
414
+ <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* gep = SVFUtil::dyn_cast&lt;NormalGepCGEdge&gt;(edge))</div>
415
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; {</div>
416
+ <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> ap = gep-&gt;getAccessPath();</div>
417
+ <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(gep);</div>
418
+ <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#ab0b4f708097d4b3d92b4513818fef68c">addNormalGepCGEdge</a>(newSrcNodeID, dstId, ap);</div>
419
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div>
420
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* gep = SVFUtil::dyn_cast&lt;VariantGepCGEdge&gt;(edge))</div>
421
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; {</div>
422
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(gep);</div>
423
+ <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a6902cabb252b1eaadb3c8220b4581a2f">addVariantGepCGEdge</a>(newSrcNodeID,dstId);</div>
424
+ <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div>
425
+ <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr = SVFUtil::dyn_cast&lt;AddrCGEdge&gt;(edge))</div>
426
+ <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; {</div>
427
+ <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">removeAddrEdge</a>(addr);</div>
428
+ <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div>
429
+ <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">else</span></div>
430
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no other edge type!!&quot;</span>);</div>
431
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;}</div>
432
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; </div>
433
+ <div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee"> 408</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">ConstraintGraph::removeAddrEdge</a>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* edge)</div>
434
+ <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;{</div>
435
+ <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#abaf196bcce496fbdee6740c42ca9dd71">removeOutgoingAddrEdge</a>(edge);</div>
436
+ <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a5a97f47f5a65550dce11341c6f8d9ae6">removeIncomingAddrEdge</a>(edge);</div>
437
+ <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = <a class="code" href="classSVF_1_1ConstraintGraph.html#a5bbd6df25027d26911f5d8d6a10881dc">AddrCGEdgeSet</a>.erase(edge);</div>
438
+ <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div>
439
+ <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div>
440
+ <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keyword">delete</span> edge;</div>
441
+ <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;}</div>
442
+ <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; </div>
443
+ <div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aa4bca2422049413439cb0c3400f2ce28"> 421</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aa4bca2422049413439cb0c3400f2ce28">ConstraintGraph::removeLoadEdge</a>(<a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* edge)</div>
444
+ <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;{</div>
445
+ <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a7d810ec9abc8817a938a557ac78dc8c0">removeOutgoingLoadEdge</a>(edge);</div>
446
+ <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aa1f60c884d007524641d1a786410d41b">removeIncomingLoadEdge</a>(edge);</div>
447
+ <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = <a class="code" href="classSVF_1_1ConstraintGraph.html#a1cb9124b29720e7a5b39d83419f9cc17">LoadCGEdgeSet</a>.erase(edge);</div>
448
+ <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div>
449
+ <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div>
450
+ <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keyword">delete</span> edge;</div>
451
+ <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;}</div>
452
+ <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; </div>
453
+ <div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aad3d05c949c33a587b3ac6d627f5a0a2"> 434</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aad3d05c949c33a587b3ac6d627f5a0a2">ConstraintGraph::removeStoreEdge</a>(<a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* edge)</div>
454
+ <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;{</div>
455
+ <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a24ef3eedb218283d106eceb8a73ca1b4">removeOutgoingStoreEdge</a>(edge);</div>
456
+ <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a2d0e87fa3174562c97b519b2b144d8ea">removeIncomingStoreEdge</a>(edge);</div>
457
+ <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = <a class="code" href="classSVF_1_1ConstraintGraph.html#a0f9d5eef25827ac1d380e5d8bd225025">StoreCGEdgeSet</a>.erase(edge);</div>
458
+ <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div>
459
+ <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div>
460
+ <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keyword">delete</span> edge;</div>
461
+ <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;}</div>
462
+ <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; </div>
463
+ <div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244"> 447</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">ConstraintGraph::removeDirectEdge</a>(<a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge)</div>
464
+ <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;{</div>
465
+ <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; </div>
466
+ <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a73b8c0967cde518a2ea7dfea2a7dc32f">removeOutgoingDirectEdge</a>(edge);</div>
467
+ <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a7946aea5584d124f6c83fd91ab497500">removeIncomingDirectEdge</a>(edge);</div>
468
+ <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = <a class="code" href="classSVF_1_1ConstraintGraph.html#a1be3ebb84b3d334daf98f7e6f5b82256">directEdgeSet</a>.erase(edge);</div>
469
+ <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div>
470
+ <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div>
471
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keyword">delete</span> edge;</div>
472
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;}</div>
473
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; </div>
474
+ <div class="line"><a name="l00462"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a081bf1238121eb52a0c9ad60f77ecbcd"> 462</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a081bf1238121eb52a0c9ad60f77ecbcd">ConstraintGraph::moveInEdgesToRepNode</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* rep )</div>
475
+ <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;{</div>
476
+ <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; std::vector&lt;ConstraintEdge*&gt; sccEdges;</div>
477
+ <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; std::vector&lt;ConstraintEdge*&gt; nonSccEdges;</div>
478
+ <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> it = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), eit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); it != eit;</div>
479
+ <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; ++it)</div>
483
480
  <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; {</div>
484
- <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = sccEdges.back();</div>
485
- <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; sccEdges.pop_back();</div>
486
- <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;CopyCGEdge&gt;(edge))</div>
487
- <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(edge);</div>
488
- <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;GepCGEdge&gt;(edge))</div>
489
- <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; {</div>
490
- <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="comment">// If the GEP is critical (i.e. may have a non-zero offset),</span></div>
491
- <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="comment">// then it brings impact on field-sensitivity.</span></div>
492
- <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1ConstraintGraph.html#af790af4146197682dd4f9abfad1434f6">isZeroOffsettedGepCGEdge</a>(edge))</div>
493
- <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; {</div>
494
- <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; criticalGepInsideSCC = <span class="keyword">true</span>;</div>
495
- <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; }</div>
496
- <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(edge);</div>
497
- <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; }</div>
498
- <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadCGEdge, StoreCGEdge&gt;(edge))</div>
499
- <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722">reTargetDstOfEdge</a>(edge,rep);</div>
500
- <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr = SVFUtil::dyn_cast&lt;AddrCGEdge&gt;(edge))</div>
501
- <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div>
502
- <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">removeAddrEdge</a>(addr);</div>
503
- <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div>
504
- <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">else</span></div>
505
- <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no such edge&quot;</span>);</div>
506
- <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; }</div>
507
- <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">return</span> criticalGepInsideSCC;</div>
508
- <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;}</div>
509
- <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; </div>
510
- <div class="line"><a name="l00500"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aa436aac95be84d1946169f4984deae59"> 500</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aa436aac95be84d1946169f4984deae59">ConstraintGraph::moveOutEdgesToRepNode</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>*node, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* rep )</div>
511
- <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;{</div>
512
- <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; </div>
513
- <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; std::vector&lt;ConstraintEdge*&gt; sccEdges;</div>
514
- <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; std::vector&lt;ConstraintEdge*&gt; nonSccEdges;</div>
515
- <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; </div>
516
- <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> it = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it != eit;</div>
517
- <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; ++it)</div>
518
- <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; {</div>
519
- <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* subOutEdge = *it;</div>
520
- <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ConstraintGraph.html#a39b973543acdcdc5493832cc9d0f586f">sccRepNode</a>(subOutEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>()) != rep-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())</div>
521
- <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; nonSccEdges.push_back(subOutEdge);</div>
522
- <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">else</span></div>
523
- <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; {</div>
524
- <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; sccEdges.push_back(subOutEdge);</div>
525
- <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div>
526
- <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div>
527
- <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="comment">// if this edge is outside scc, then re-target edge src to rep</span></div>
528
- <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">while</span>(!nonSccEdges.empty())</div>
529
- <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; {</div>
530
- <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = nonSccEdges.back();</div>
531
- <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; nonSccEdges.pop_back();</div>
532
- <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#aaae56afed424f7cd59fddb3fcb2f7214">reTargetSrcOfEdge</a>(edge,rep);</div>
533
- <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; }</div>
534
- <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordtype">bool</span> criticalGepInsideSCC = <span class="keyword">false</span>;</div>
535
- <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="comment">// if this edge is inside scc, then remove this edge and two end nodes</span></div>
536
- <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">while</span>(!sccEdges.empty())</div>
537
- <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {</div>
538
- <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = sccEdges.back();</div>
539
- <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; sccEdges.pop_back();</div>
540
- <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;CopyCGEdge&gt;(edge))</div>
541
- <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(edge);</div>
542
- <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;GepCGEdge&gt;(edge))</div>
543
- <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; {</div>
544
- <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="comment">// If the GEP is critical (i.e. may have a non-zero offset),</span></div>
545
- <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="comment">// then it brings impact on field-sensitivity.</span></div>
546
- <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1ConstraintGraph.html#af790af4146197682dd4f9abfad1434f6">isZeroOffsettedGepCGEdge</a>(edge))</div>
547
- <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; {</div>
548
- <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; criticalGepInsideSCC = <span class="keyword">true</span>;</div>
549
- <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; }</div>
550
- <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(edge);</div>
551
- <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; }</div>
552
- <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadCGEdge, StoreCGEdge&gt;(edge))</div>
553
- <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#aaae56afed424f7cd59fddb3fcb2f7214">reTargetSrcOfEdge</a>(edge,rep);</div>
554
- <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr = SVFUtil::dyn_cast&lt;AddrCGEdge&gt;(edge))</div>
555
- <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; {</div>
556
- <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">removeAddrEdge</a>(addr);</div>
557
- <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; }</div>
558
- <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">else</span></div>
559
- <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no such edge&quot;</span>);</div>
560
- <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; }</div>
561
- <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">return</span> criticalGepInsideSCC;</div>
562
- <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;}</div>
563
- <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; </div>
564
- <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; </div>
565
- <div class="line"><a name="l00559"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#af9fc8308845628fe8900528573e30462"> 559</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#af9fc8308845628fe8900528573e30462">ConstraintGraph::dump</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>)</div>
566
- <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;{</div>
567
- <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <a class="code" href="classSVF_1_1GraphPrinter.html#a014217fb0d05c8f2a2f1a6c5b19d3e10">GraphPrinter::WriteGraphToFile</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>(), <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>, <span class="keyword">this</span>);</div>
568
- <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;}</div>
569
- <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; </div>
570
- <div class="line"><a name="l00567"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aa87bf07fc538c2cf425138727e7acbce"> 567</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aa87bf07fc538c2cf425138727e7acbce">ConstraintGraph::print</a>()</div>
571
- <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;{</div>
572
- <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; </div>
573
- <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-----------------ConstraintGraph--------------------------------------\n&quot;</span>;</div>
574
- <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; </div>
575
- <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html#ad155e1ed2473cc4f5f57128d282ac541">ConstraintEdge::ConstraintEdgeSetTy</a>&amp; addrs = this-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#adee52f15f5ff58dd455e419c2643f89b">getAddrCGEdges</a>();</div>
576
- <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = addrs.begin(),</div>
577
- <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; eiter = addrs.end(); iter != eiter; ++iter)</div>
578
- <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; {</div>
579
- <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Addr --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div>
580
- <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
581
- <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; }</div>
582
- <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; </div>
583
- <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html#ad155e1ed2473cc4f5f57128d282ac541">ConstraintEdge::ConstraintEdgeSetTy</a>&amp; directs = this-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#ad7196d5f05192d9468ee0ca93b6b66ee">getDirectCGEdges</a>();</div>
584
- <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = directs.begin(),</div>
585
- <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; eiter = directs.end(); iter != eiter; ++iter)</div>
586
- <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; {</div>
587
- <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast&lt;CopyCGEdge&gt;(*iter))</div>
588
- <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; {</div>
589
- <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Copy --&gt; &quot;</span> &lt;&lt; <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getDstID()</div>
590
- <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
591
- <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; }</div>
592
- <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* ngep = SVFUtil::dyn_cast&lt;NormalGepCGEdge&gt;(*iter))</div>
593
- <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; {</div>
594
- <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; ngep-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- NormalGep (&quot;</span> &lt;&lt; ngep-&gt;getConstantFieldIdx()</div>
595
- <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; &lt;&lt; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; ngep-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
596
- <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }</div>
597
- <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* <a class="code" href="PAGGrammar_8txt.html#a1181f56ceed612b4d77df931fa4dfaa9">vgep</a> = SVFUtil::dyn_cast&lt;VariantGepCGEdge&gt;(*iter))</div>
598
- <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; {</div>
599
- <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="PAGGrammar_8txt.html#a1181f56ceed612b4d77df931fa4dfaa9">vgep</a>-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- VarintGep --&gt; &quot;</span></div>
600
- <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; &lt;&lt; <a class="code" href="PAGGrammar_8txt.html#a1181f56ceed612b4d77df931fa4dfaa9">vgep</a>-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
601
- <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; }</div>
602
- <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">else</span></div>
603
- <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;wrong constraint edge kind!&quot;</span>);</div>
604
- <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div>
605
- <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; </div>
606
- <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html#ad155e1ed2473cc4f5f57128d282ac541">ConstraintEdge::ConstraintEdgeSetTy</a>&amp; loads = this-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#afb849d8f3425ff36497d062ecefd2cc1">getLoadCGEdges</a>();</div>
607
- <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = loads.begin(),</div>
608
- <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; eiter = loads.end(); iter != eiter; ++iter)</div>
609
- <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; {</div>
610
- <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Load --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div>
611
- <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
612
- <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div>
613
- <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; </div>
614
- <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html#ad155e1ed2473cc4f5f57128d282ac541">ConstraintEdge::ConstraintEdgeSetTy</a>&amp; stores = this-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#a61ef90be6ccc01634e5440f22a0f746e">getStoreCGEdges</a>();</div>
615
- <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = stores.begin(),</div>
616
- <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; eiter = stores.end(); iter != eiter; ++iter)</div>
617
- <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; {</div>
618
- <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Store --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div>
619
- <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
620
- <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; }</div>
621
- <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; </div>
622
- <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>()</div>
623
- <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; &lt;&lt; <span class="stringliteral">&quot;--------------------------------------------------------------\n&quot;</span>;</div>
624
- <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; </div>
625
- <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;}</div>
626
- <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; </div>
627
- <div class="line"><a name="l00627"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a27d8078577d479c84f2a87b44f015d1c"> 627</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a27d8078577d479c84f2a87b44f015d1c">ConstraintGraph::view</a>()</div>
628
- <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;{</div>
629
- <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <a class="code" href="namespaceSVF.html#a4582a7d33a5631a5a38973f50035327e">SVF::ViewGraph</a>(<span class="keyword">this</span>, <span class="stringliteral">&quot;Constraint Graph&quot;</span>);</div>
630
- <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;}</div>
631
- <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; </div>
632
- <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; </div>
633
- <div class="line"><a name="l00634"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#a5be4bd33793fe159397c16a80a05b570"> 634</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#a19ebc316f4fa0246debb1ca61c2b2f3f">ConstraintNode::iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#a5be4bd33793fe159397c16a80a05b570">ConstraintNode::directOutEdgeBegin</a>()</div>
634
- <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;{</div>
635
- <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
636
- <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#affb426040b05678fcbce62002a02bb06">directOutEdges</a>.begin();</div>
637
- <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">else</span></div>
638
- <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a12df688fd9b5b7617daadc7bee0fff40">copyOutEdges</a>.begin();</div>
639
- <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;}</div>
481
+ <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* subInEdge = *it;</div>
482
+ <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ConstraintGraph.html#a39b973543acdcdc5493832cc9d0f586f">sccRepNode</a>(subInEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>()) != rep-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())</div>
483
+ <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; nonSccEdges.push_back(subInEdge);</div>
484
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">else</span></div>
485
+ <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; {</div>
486
+ <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; sccEdges.push_back(subInEdge);</div>
487
+ <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; }</div>
488
+ <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</div>
489
+ <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="comment">// if this edge is outside scc, then re-target edge dst to rep</span></div>
490
+ <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">while</span>(!nonSccEdges.empty())</div>
491
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; {</div>
492
+ <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = nonSccEdges.back();</div>
493
+ <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; nonSccEdges.pop_back();</div>
494
+ <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722">reTargetDstOfEdge</a>(edge,rep);</div>
495
+ <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; }</div>
496
+ <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; </div>
497
+ <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordtype">bool</span> criticalGepInsideSCC = <span class="keyword">false</span>;</div>
498
+ <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="comment">// if this edge is inside scc, then remove this edge and two end nodes</span></div>
499
+ <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">while</span>(!sccEdges.empty())</div>
500
+ <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; {</div>
501
+ <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = sccEdges.back();</div>
502
+ <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; sccEdges.pop_back();</div>
503
+ <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;CopyCGEdge&gt;(edge))</div>
504
+ <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(edge);</div>
505
+ <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;GepCGEdge&gt;(edge))</div>
506
+ <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div>
507
+ <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="comment">// If the GEP is critical (i.e. may have a non-zero offset),</span></div>
508
+ <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="comment">// then it brings impact on field-sensitivity.</span></div>
509
+ <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1ConstraintGraph.html#af790af4146197682dd4f9abfad1434f6">isZeroOffsettedGepCGEdge</a>(edge))</div>
510
+ <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; {</div>
511
+ <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; criticalGepInsideSCC = <span class="keyword">true</span>;</div>
512
+ <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; }</div>
513
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(edge);</div>
514
+ <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div>
515
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadCGEdge, StoreCGEdge&gt;(edge))</div>
516
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722">reTargetDstOfEdge</a>(edge,rep);</div>
517
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr = SVFUtil::dyn_cast&lt;AddrCGEdge&gt;(edge))</div>
518
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; {</div>
519
+ <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">removeAddrEdge</a>(addr);</div>
520
+ <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; }</div>
521
+ <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordflow">else</span></div>
522
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no such edge&quot;</span>);</div>
523
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div>
524
+ <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">return</span> criticalGepInsideSCC;</div>
525
+ <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;}</div>
526
+ <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; </div>
527
+ <div class="line"><a name="l00520"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aa436aac95be84d1946169f4984deae59"> 520</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aa436aac95be84d1946169f4984deae59">ConstraintGraph::moveOutEdgesToRepNode</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>*node, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* rep )</div>
528
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;{</div>
529
+ <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; </div>
530
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; std::vector&lt;ConstraintEdge*&gt; sccEdges;</div>
531
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; std::vector&lt;ConstraintEdge*&gt; nonSccEdges;</div>
532
+ <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; </div>
533
+ <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> it = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it != eit;</div>
534
+ <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; ++it)</div>
535
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; {</div>
536
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* subOutEdge = *it;</div>
537
+ <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ConstraintGraph.html#a39b973543acdcdc5493832cc9d0f586f">sccRepNode</a>(subOutEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>()) != rep-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())</div>
538
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; nonSccEdges.push_back(subOutEdge);</div>
539
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">else</span></div>
540
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; {</div>
541
+ <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; sccEdges.push_back(subOutEdge);</div>
542
+ <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; }</div>
543
+ <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; }</div>
544
+ <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="comment">// if this edge is outside scc, then re-target edge src to rep</span></div>
545
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">while</span>(!nonSccEdges.empty())</div>
546
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; {</div>
547
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = nonSccEdges.back();</div>
548
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; nonSccEdges.pop_back();</div>
549
+ <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#aaae56afed424f7cd59fddb3fcb2f7214">reTargetSrcOfEdge</a>(edge,rep);</div>
550
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; }</div>
551
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordtype">bool</span> criticalGepInsideSCC = <span class="keyword">false</span>;</div>
552
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="comment">// if this edge is inside scc, then remove this edge and two end nodes</span></div>
553
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">while</span>(!sccEdges.empty())</div>
554
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; {</div>
555
+ <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = sccEdges.back();</div>
556
+ <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; sccEdges.pop_back();</div>
557
+ <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;CopyCGEdge&gt;(edge))</div>
558
+ <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(edge);</div>
559
+ <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;GepCGEdge&gt;(edge))</div>
560
+ <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; {</div>
561
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="comment">// If the GEP is critical (i.e. may have a non-zero offset),</span></div>
562
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="comment">// then it brings impact on field-sensitivity.</span></div>
563
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1ConstraintGraph.html#af790af4146197682dd4f9abfad1434f6">isZeroOffsettedGepCGEdge</a>(edge))</div>
564
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; {</div>
565
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; criticalGepInsideSCC = <span class="keyword">true</span>;</div>
566
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; }</div>
567
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(edge);</div>
568
+ <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; }</div>
569
+ <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadCGEdge, StoreCGEdge&gt;(edge))</div>
570
+ <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#aaae56afed424f7cd59fddb3fcb2f7214">reTargetSrcOfEdge</a>(edge,rep);</div>
571
+ <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr = SVFUtil::dyn_cast&lt;AddrCGEdge&gt;(edge))</div>
572
+ <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; {</div>
573
+ <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">removeAddrEdge</a>(addr);</div>
574
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; }</div>
575
+ <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">else</span></div>
576
+ <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no such edge&quot;</span>);</div>
577
+ <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; }</div>
578
+ <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">return</span> criticalGepInsideSCC;</div>
579
+ <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;}</div>
580
+ <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; </div>
581
+ <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; </div>
582
+ <div class="line"><a name="l00579"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#af9fc8308845628fe8900528573e30462"> 579</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#af9fc8308845628fe8900528573e30462">ConstraintGraph::dump</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>)</div>
583
+ <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;{</div>
584
+ <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <a class="code" href="classSVF_1_1GraphPrinter.html#a014217fb0d05c8f2a2f1a6c5b19d3e10">GraphPrinter::WriteGraphToFile</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>(), <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>, <span class="keyword">this</span>);</div>
585
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;}</div>
586
+ <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; </div>
587
+ <div class="line"><a name="l00587"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aa87bf07fc538c2cf425138727e7acbce"> 587</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aa87bf07fc538c2cf425138727e7acbce">ConstraintGraph::print</a>()</div>
588
+ <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;{</div>
589
+ <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; </div>
590
+ <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-----------------ConstraintGraph--------------------------------------\n&quot;</span>;</div>
591
+ <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; </div>
592
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html#ad155e1ed2473cc4f5f57128d282ac541">ConstraintEdge::ConstraintEdgeSetTy</a>&amp; addrs = this-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#adee52f15f5ff58dd455e419c2643f89b">getAddrCGEdges</a>();</div>
593
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = addrs.begin(),</div>
594
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; eiter = addrs.end(); iter != eiter; ++iter)</div>
595
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; {</div>
596
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Addr --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div>
597
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
598
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; }</div>
599
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; </div>
600
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html#ad155e1ed2473cc4f5f57128d282ac541">ConstraintEdge::ConstraintEdgeSetTy</a>&amp; directs = this-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#ad7196d5f05192d9468ee0ca93b6b66ee">getDirectCGEdges</a>();</div>
601
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = directs.begin(),</div>
602
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; eiter = directs.end(); iter != eiter; ++iter)</div>
603
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; {</div>
604
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast&lt;CopyCGEdge&gt;(*iter))</div>
605
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; {</div>
606
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Copy --&gt; &quot;</span> &lt;&lt; <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getDstID()</div>
607
+ <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
608
+ <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; }</div>
609
+ <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* ngep = SVFUtil::dyn_cast&lt;NormalGepCGEdge&gt;(*iter))</div>
610
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; {</div>
611
+ <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; ngep-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- NormalGep (&quot;</span> &lt;&lt; ngep-&gt;getConstantFieldIdx()</div>
612
+ <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; &lt;&lt; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; ngep-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
613
+ <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; }</div>
614
+ <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* <a class="code" href="PAGGrammar_8txt.html#a1181f56ceed612b4d77df931fa4dfaa9">vgep</a> = SVFUtil::dyn_cast&lt;VariantGepCGEdge&gt;(*iter))</div>
615
+ <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; {</div>
616
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="PAGGrammar_8txt.html#a1181f56ceed612b4d77df931fa4dfaa9">vgep</a>-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- VarintGep --&gt; &quot;</span></div>
617
+ <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; &lt;&lt; <a class="code" href="PAGGrammar_8txt.html#a1181f56ceed612b4d77df931fa4dfaa9">vgep</a>-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
618
+ <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; }</div>
619
+ <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">else</span></div>
620
+ <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;wrong constraint edge kind!&quot;</span>);</div>
621
+ <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; }</div>
622
+ <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; </div>
623
+ <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html#ad155e1ed2473cc4f5f57128d282ac541">ConstraintEdge::ConstraintEdgeSetTy</a>&amp; loads = this-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#afb849d8f3425ff36497d062ecefd2cc1">getLoadCGEdges</a>();</div>
624
+ <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = loads.begin(),</div>
625
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; eiter = loads.end(); iter != eiter; ++iter)</div>
626
+ <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; {</div>
627
+ <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Load --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div>
628
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
629
+ <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; }</div>
630
+ <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; </div>
631
+ <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html#ad155e1ed2473cc4f5f57128d282ac541">ConstraintEdge::ConstraintEdgeSetTy</a>&amp; stores = this-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#a61ef90be6ccc01634e5440f22a0f746e">getStoreCGEdges</a>();</div>
632
+ <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = stores.begin(),</div>
633
+ <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; eiter = stores.end(); iter != eiter; ++iter)</div>
634
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; {</div>
635
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Store --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div>
636
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
637
+ <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; }</div>
638
+ <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; </div>
639
+ <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>()</div>
640
+ <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; &lt;&lt; <span class="stringliteral">&quot;--------------------------------------------------------------\n&quot;</span>;</div>
640
641
  <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; </div>
641
- <div class="line"><a name="l00642"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#ae3465d3c949ec59e243b30ad0ecd256d"> 642</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#a19ebc316f4fa0246debb1ca61c2b2f3f">ConstraintNode::iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#ae3465d3c949ec59e243b30ad0ecd256d">ConstraintNode::directOutEdgeEnd</a>()</div>
642
- <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;{</div>
643
- <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
644
- <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#affb426040b05678fcbce62002a02bb06">directOutEdges</a>.end();</div>
645
- <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">else</span></div>
646
- <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a12df688fd9b5b7617daadc7bee0fff40">copyOutEdges</a>.end();</div>
647
- <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;}</div>
648
- <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; </div>
649
- <div class="line"><a name="l00650"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#a66c58fc9e29b9e2c88cb7e3216415c9f"> 650</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#a19ebc316f4fa0246debb1ca61c2b2f3f">ConstraintNode::iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#a66c58fc9e29b9e2c88cb7e3216415c9f">ConstraintNode::directInEdgeBegin</a>()</div>
650
- <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;{</div>
651
- <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
652
- <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a53626700d25b5c004e42354c925df83c">directInEdges</a>.begin();</div>
653
- <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">else</span></div>
654
- <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a4d413d64bf554ecdc72709afeeb85775">copyInEdges</a>.begin();</div>
655
- <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;}</div>
656
- <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; </div>
657
- <div class="line"><a name="l00658"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#aed4e0b2ede72717491747158c2e2702f"> 658</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#a19ebc316f4fa0246debb1ca61c2b2f3f">ConstraintNode::iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#aed4e0b2ede72717491747158c2e2702f">ConstraintNode::directInEdgeEnd</a>()</div>
658
- <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;{</div>
659
- <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
660
- <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a53626700d25b5c004e42354c925df83c">directInEdges</a>.end();</div>
661
- <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">else</span></div>
662
- <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a4d413d64bf554ecdc72709afeeb85775">copyInEdges</a>.end();</div>
663
- <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;}</div>
664
- <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; </div>
665
- <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#a5be4bd33793fe159397c16a80a05b570">ConstraintNode::directOutEdgeBegin</a>()<span class="keyword"> const</span></div>
666
- <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;<span class="keyword"></span>{</div>
667
- <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
668
- <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#affb426040b05678fcbce62002a02bb06">directOutEdges</a>.begin();</div>
669
- <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">else</span></div>
670
- <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a12df688fd9b5b7617daadc7bee0fff40">copyOutEdges</a>.begin();</div>
671
- <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;}</div>
672
- <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; </div>
673
- <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#ae3465d3c949ec59e243b30ad0ecd256d">ConstraintNode::directOutEdgeEnd</a>()<span class="keyword"> const</span></div>
674
- <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;<span class="keyword"></span>{</div>
675
- <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
676
- <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#affb426040b05678fcbce62002a02bb06">directOutEdges</a>.end();</div>
677
- <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">else</span></div>
678
- <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a12df688fd9b5b7617daadc7bee0fff40">copyOutEdges</a>.end();</div>
679
- <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;}</div>
680
- <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; </div>
681
- <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#a66c58fc9e29b9e2c88cb7e3216415c9f">ConstraintNode::directInEdgeBegin</a>()<span class="keyword"> const</span></div>
682
- <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;<span class="keyword"></span>{</div>
683
- <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
684
- <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a53626700d25b5c004e42354c925df83c">directInEdges</a>.begin();</div>
685
- <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">else</span></div>
686
- <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a4d413d64bf554ecdc72709afeeb85775">copyInEdges</a>.begin();</div>
687
- <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;}</div>
688
- <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; </div>
689
- <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#aed4e0b2ede72717491747158c2e2702f">ConstraintNode::directInEdgeEnd</a>()<span class="keyword"> const</span></div>
690
- <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;<span class="keyword"></span>{</div>
691
- <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
692
- <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a53626700d25b5c004e42354c925df83c">directInEdges</a>.end();</div>
693
- <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">else</span></div>
694
- <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a4d413d64bf554ecdc72709afeeb85775">copyInEdges</a>.end();</div>
695
- <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;}</div>
696
- <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; </div>
697
- <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div>
698
- <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;{</div>
699
- <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
700
- <div class="line"><a name="l00705"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html"> 705</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1DOTGraphTraits.html">DOTGraphTraits</a>&lt;<a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*&gt; : <span class="keyword">public</span> <a class="code" href="structSVF_1_1DOTGraphTraits.html">DOTGraphTraits&lt;SVFIR*&gt;</a></div>
701
- <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;{</div>
702
- <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; </div>
703
- <div class="line"><a name="l00708"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a94e74890f433758f3a38238f59400a3f"> 708</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a94e74890f433758f3a38238f59400a3f">NodeType</a>;</div>
704
- <div class="line"><a name="l00709"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#ad816997d240e758f7a2f1f6508048ef3"> 709</a></span>&#160; <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#ad816997d240e758f7a2f1f6508048ef3">DOTGraphTraits</a>(<span class="keywordtype">bool</span> isSimple = <span class="keyword">false</span>) :</div>
705
- <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <a class="code" href="structSVF_1_1DOTGraphTraits.html">DOTGraphTraits</a>&lt;<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>*&gt;(isSimple)</div>
706
- <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; {</div>
707
- <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; }</div>
708
- <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; </div>
709
- <div class="line"><a name="l00715"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a6948926922a5c5378d92c3c6aa0b3ccd"> 715</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a6948926922a5c5378d92c3c6aa0b3ccd">getGraphName</a>(<a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*)</div>
710
- <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; {</div>
711
- <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ConstraintG&quot;</span>;</div>
712
- <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; }</div>
713
- <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; </div>
714
- <div class="line"><a name="l00720"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#aa89ef1fbbc6ff785a933f45201054af6"> 720</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#aa89ef1fbbc6ff785a933f45201054af6">isNodeHidden</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">NodeType</a> *<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>, <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a> *)</div>
715
- <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; {</div>
716
- <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#adee65a3773fbb98532538c938230e1d3">Options::ShowHiddenNode</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
717
- <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">return</span> (<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>-&gt;getInEdges().empty() &amp;&amp; <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>-&gt;getOutEdges().empty());</div>
718
- <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; }</div>
719
- <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; </div>
720
- <div class="line"><a name="l00728"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a9e45113303655dd4b3951f975cc7790f"> 728</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a9e45113303655dd4b3951f975cc7790f">getNodeLabel</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">NodeType</a> *<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>, <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*)</div>
721
- <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; {</div>
722
- <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>-&gt;getId());</div>
723
- <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordtype">bool</span> briefDisplay = <a class="code" href="classSVF_1_1Options.html#a25a3db9daa81a127a8dad86888adea6c">Options::BriefConsCGDotGraph</a>();</div>
724
- <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordtype">bool</span> nameDisplay = <span class="keyword">true</span>;</div>
725
- <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
726
- <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; std::stringstream rawstr(str);</div>
727
- <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; </div>
728
- <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">if</span> (briefDisplay)</div>
729
- <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; {</div>
730
- <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ValVar&gt;(node))</div>
731
- <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; {</div>
732
- <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">if</span> (nameDisplay)</div>
733
- <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a54b2a5ed3ed21e54eaf04182f0338333">getValueName</a>();</div>
734
- <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">else</span></div>
735
- <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div>
736
- <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; }</div>
737
- <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">else</span></div>
738
- <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div>
739
- <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; }</div>
740
- <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordflow">else</span></div>
741
- <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; {</div>
742
- <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="comment">// print the whole value</span></div>
743
- <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;DummyValVar&gt;(node) &amp;&amp; !SVFUtil::isa&lt;DummyObjVar&gt;(node))</div>
744
- <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">toString</a>();</div>
745
- <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordflow">else</span></div>
746
- <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span>;</div>
642
+ <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;}</div>
643
+ <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; </div>
644
+ <div class="line"><a name="l00647"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a27d8078577d479c84f2a87b44f015d1c"> 647</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a27d8078577d479c84f2a87b44f015d1c">ConstraintGraph::view</a>()</div>
645
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;{</div>
646
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <a class="code" href="namespaceSVF.html#a4582a7d33a5631a5a38973f50035327e">SVF::ViewGraph</a>(<span class="keyword">this</span>, <span class="stringliteral">&quot;Constraint Graph&quot;</span>);</div>
647
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;}</div>
648
+ <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; </div>
649
+ <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; </div>
650
+ <div class="line"><a name="l00654"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#a5be4bd33793fe159397c16a80a05b570"> 654</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#a19ebc316f4fa0246debb1ca61c2b2f3f">ConstraintNode::iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#a5be4bd33793fe159397c16a80a05b570">ConstraintNode::directOutEdgeBegin</a>()</div>
651
+ <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;{</div>
652
+ <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
653
+ <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#affb426040b05678fcbce62002a02bb06">directOutEdges</a>.begin();</div>
654
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">else</span></div>
655
+ <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a12df688fd9b5b7617daadc7bee0fff40">copyOutEdges</a>.begin();</div>
656
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;}</div>
657
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; </div>
658
+ <div class="line"><a name="l00662"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#ae3465d3c949ec59e243b30ad0ecd256d"> 662</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#a19ebc316f4fa0246debb1ca61c2b2f3f">ConstraintNode::iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#ae3465d3c949ec59e243b30ad0ecd256d">ConstraintNode::directOutEdgeEnd</a>()</div>
659
+ <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;{</div>
660
+ <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
661
+ <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#affb426040b05678fcbce62002a02bb06">directOutEdges</a>.end();</div>
662
+ <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">else</span></div>
663
+ <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a12df688fd9b5b7617daadc7bee0fff40">copyOutEdges</a>.end();</div>
664
+ <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;}</div>
665
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; </div>
666
+ <div class="line"><a name="l00670"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#a66c58fc9e29b9e2c88cb7e3216415c9f"> 670</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#a19ebc316f4fa0246debb1ca61c2b2f3f">ConstraintNode::iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#a66c58fc9e29b9e2c88cb7e3216415c9f">ConstraintNode::directInEdgeBegin</a>()</div>
667
+ <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;{</div>
668
+ <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
669
+ <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a53626700d25b5c004e42354c925df83c">directInEdges</a>.begin();</div>
670
+ <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">else</span></div>
671
+ <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a4d413d64bf554ecdc72709afeeb85775">copyInEdges</a>.begin();</div>
672
+ <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;}</div>
673
+ <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; </div>
674
+ <div class="line"><a name="l00678"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#aed4e0b2ede72717491747158c2e2702f"> 678</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#a19ebc316f4fa0246debb1ca61c2b2f3f">ConstraintNode::iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#aed4e0b2ede72717491747158c2e2702f">ConstraintNode::directInEdgeEnd</a>()</div>
675
+ <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;{</div>
676
+ <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
677
+ <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a53626700d25b5c004e42354c925df83c">directInEdges</a>.end();</div>
678
+ <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">else</span></div>
679
+ <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a4d413d64bf554ecdc72709afeeb85775">copyInEdges</a>.end();</div>
680
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;}</div>
681
+ <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; </div>
682
+ <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#a5be4bd33793fe159397c16a80a05b570">ConstraintNode::directOutEdgeBegin</a>()<span class="keyword"> const</span></div>
683
+ <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;<span class="keyword"></span>{</div>
684
+ <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
685
+ <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#affb426040b05678fcbce62002a02bb06">directOutEdges</a>.begin();</div>
686
+ <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">else</span></div>
687
+ <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a12df688fd9b5b7617daadc7bee0fff40">copyOutEdges</a>.begin();</div>
688
+ <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;}</div>
689
+ <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; </div>
690
+ <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#ae3465d3c949ec59e243b30ad0ecd256d">ConstraintNode::directOutEdgeEnd</a>()<span class="keyword"> const</span></div>
691
+ <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;<span class="keyword"></span>{</div>
692
+ <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
693
+ <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#affb426040b05678fcbce62002a02bb06">directOutEdges</a>.end();</div>
694
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">else</span></div>
695
+ <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a12df688fd9b5b7617daadc7bee0fff40">copyOutEdges</a>.end();</div>
696
+ <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;}</div>
697
+ <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; </div>
698
+ <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#a66c58fc9e29b9e2c88cb7e3216415c9f">ConstraintNode::directInEdgeBegin</a>()<span class="keyword"> const</span></div>
699
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;<span class="keyword"></span>{</div>
700
+ <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
701
+ <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a53626700d25b5c004e42354c925df83c">directInEdges</a>.begin();</div>
702
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">else</span></div>
703
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a4d413d64bf554ecdc72709afeeb85775">copyInEdges</a>.begin();</div>
704
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;}</div>
705
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; </div>
706
+ <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#aed4e0b2ede72717491747158c2e2702f">ConstraintNode::directInEdgeEnd</a>()<span class="keyword"> const</span></div>
707
+ <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;<span class="keyword"></span>{</div>
708
+ <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
709
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a53626700d25b5c004e42354c925df83c">directInEdges</a>.end();</div>
710
+ <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">else</span></div>
711
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a4d413d64bf554ecdc72709afeeb85775">copyInEdges</a>.end();</div>
712
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;}</div>
713
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; </div>
714
+ <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div>
715
+ <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;{</div>
716
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
717
+ <div class="line"><a name="l00725"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html"> 725</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1DOTGraphTraits.html">DOTGraphTraits</a>&lt;<a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*&gt; : <span class="keyword">public</span> <a class="code" href="structSVF_1_1DOTGraphTraits.html">DOTGraphTraits&lt;SVFIR*&gt;</a></div>
718
+ <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;{</div>
719
+ <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; </div>
720
+ <div class="line"><a name="l00728"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a94e74890f433758f3a38238f59400a3f"> 728</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a94e74890f433758f3a38238f59400a3f">NodeType</a>;</div>
721
+ <div class="line"><a name="l00729"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#ad816997d240e758f7a2f1f6508048ef3"> 729</a></span>&#160; <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#ad816997d240e758f7a2f1f6508048ef3">DOTGraphTraits</a>(<span class="keywordtype">bool</span> isSimple = <span class="keyword">false</span>) :</div>
722
+ <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <a class="code" href="structSVF_1_1DOTGraphTraits.html">DOTGraphTraits</a>&lt;<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>*&gt;(isSimple)</div>
723
+ <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; {</div>
724
+ <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; }</div>
725
+ <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; </div>
726
+ <div class="line"><a name="l00735"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a6948926922a5c5378d92c3c6aa0b3ccd"> 735</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a6948926922a5c5378d92c3c6aa0b3ccd">getGraphName</a>(<a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*)</div>
727
+ <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; {</div>
728
+ <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ConstraintG&quot;</span>;</div>
729
+ <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; }</div>
730
+ <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; </div>
731
+ <div class="line"><a name="l00740"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#aa89ef1fbbc6ff785a933f45201054af6"> 740</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#aa89ef1fbbc6ff785a933f45201054af6">isNodeHidden</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">NodeType</a> *<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>, <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a> *)</div>
732
+ <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; {</div>
733
+ <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#adee65a3773fbb98532538c938230e1d3">Options::ShowHiddenNode</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
734
+ <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">return</span> (<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>-&gt;getInEdges().empty() &amp;&amp; <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>-&gt;getOutEdges().empty());</div>
735
+ <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; }</div>
736
+ <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; </div>
737
+ <div class="line"><a name="l00748"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a9e45113303655dd4b3951f975cc7790f"> 748</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a9e45113303655dd4b3951f975cc7790f">getNodeLabel</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">NodeType</a> *<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>, <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*)</div>
738
+ <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; {</div>
739
+ <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>-&gt;getId());</div>
740
+ <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keywordtype">bool</span> briefDisplay = <a class="code" href="classSVF_1_1Options.html#a25a3db9daa81a127a8dad86888adea6c">Options::BriefConsCGDotGraph</a>();</div>
741
+ <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordtype">bool</span> nameDisplay = <span class="keyword">true</span>;</div>
742
+ <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
743
+ <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; std::stringstream rawstr(str);</div>
747
744
  <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; </div>
748
- <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; }</div>
749
- <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; </div>
750
- <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
751
- <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; }</div>
752
- <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; </div>
753
- <div class="line"><a name="l00761"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a646cb350726d62532cda229aaf6af9cc"> 761</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a646cb350726d62532cda229aaf6af9cc">getNodeAttributes</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">NodeType</a> *<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>, <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*)</div>
754
- <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; {</div>
755
- <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>-&gt;getId());</div>
756
- <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ValVar&gt;(node))</div>
757
- <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; {</div>
758
- <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GepValVar&gt;(node))</div>
759
- <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=hexagon&quot;</span>;</div>
760
- <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyValVar&gt;(node))</div>
761
- <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=diamond&quot;</span>;</div>
762
- <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="keywordflow">else</span></div>
763
- <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=box&quot;</span>;</div>
764
- <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; }</div>
765
- <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ObjVar&gt;(node))</div>
766
- <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; {</div>
767
- <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GepObjVar&gt;(node))</div>
768
- <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=doubleoctagon&quot;</span>;</div>
769
- <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;FIObjVar&gt;(node))</div>
770
- <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=box3d&quot;</span>;</div>
771
- <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyObjVar&gt;(node))</div>
772
- <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=tab&quot;</span>;</div>
773
- <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">else</span></div>
774
- <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=component&quot;</span>;</div>
775
- <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; }</div>
776
- <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetPN&gt;(node))</div>
745
+ <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keywordflow">if</span> (briefDisplay)</div>
746
+ <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; {</div>
747
+ <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ValVar&gt;(node))</div>
748
+ <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; {</div>
749
+ <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">if</span> (nameDisplay)</div>
750
+ <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a54b2a5ed3ed21e54eaf04182f0338333">getValueName</a>();</div>
751
+ <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="keywordflow">else</span></div>
752
+ <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div>
753
+ <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; }</div>
754
+ <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">else</span></div>
755
+ <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div>
756
+ <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; }</div>
757
+ <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">else</span></div>
758
+ <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; {</div>
759
+ <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="comment">// print the whole value</span></div>
760
+ <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;DummyValVar&gt;(node) &amp;&amp; !SVFUtil::isa&lt;DummyObjVar&gt;(node))</div>
761
+ <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">toString</a>();</div>
762
+ <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">else</span></div>
763
+ <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span>;</div>
764
+ <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; </div>
765
+ <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; }</div>
766
+ <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; </div>
767
+ <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
768
+ <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; }</div>
769
+ <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; </div>
770
+ <div class="line"><a name="l00781"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a646cb350726d62532cda229aaf6af9cc"> 781</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a646cb350726d62532cda229aaf6af9cc">getNodeAttributes</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">NodeType</a> *<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>, <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*)</div>
771
+ <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; {</div>
772
+ <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>-&gt;getId());</div>
773
+ <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ValVar&gt;(node))</div>
777
774
  <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; {</div>
778
- <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=Mrecord&quot;</span>;</div>
779
- <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; }</div>
780
- <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;VarArgPN&gt;(node))</div>
781
- <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; {</div>
782
- <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=octagon&quot;</span>;</div>
783
- <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; }</div>
784
- <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="keywordflow">else</span></div>
785
- <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; {</div>
786
- <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; assert(0 &amp;&amp; <span class="stringliteral">&quot;no such kind!!&quot;</span>);</div>
787
- <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; }</div>
788
- <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
789
- <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; }</div>
790
- <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; </div>
791
- <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div>
792
- <div class="line"><a name="l00800"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a74ed73ff248b33b274c87797e61ef15c"> 800</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a74ed73ff248b33b274c87797e61ef15c">getEdgeAttributes</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">NodeType</a>*, EdgeIter EI, <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*)</div>
793
- <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; {</div>
794
- <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = *(EI.getCurrent());</div>
795
- <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; assert(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div>
796
- <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>)</div>
775
+ <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GepValVar&gt;(node))</div>
776
+ <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=hexagon&quot;</span>;</div>
777
+ <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyValVar&gt;(node))</div>
778
+ <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=diamond&quot;</span>;</div>
779
+ <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">else</span></div>
780
+ <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=box&quot;</span>;</div>
781
+ <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; }</div>
782
+ <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ObjVar&gt;(node))</div>
783
+ <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; {</div>
784
+ <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GepObjVar&gt;(node))</div>
785
+ <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=doubleoctagon&quot;</span>;</div>
786
+ <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;FIObjVar&gt;(node))</div>
787
+ <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=box3d&quot;</span>;</div>
788
+ <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyObjVar&gt;(node))</div>
789
+ <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=tab&quot;</span>;</div>
790
+ <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">else</span></div>
791
+ <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=component&quot;</span>;</div>
792
+ <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; }</div>
793
+ <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetPN&gt;(node))</div>
797
794
  <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; {</div>
798
- <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=green&quot;</span>;</div>
795
+ <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=Mrecord&quot;</span>;</div>
799
796
  <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; }</div>
800
- <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>)</div>
797
+ <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;VarArgPN&gt;(node))</div>
801
798
  <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; {</div>
802
- <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=black&quot;</span>;</div>
799
+ <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=octagon&quot;</span>;</div>
803
800
  <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; }</div>
804
- <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375acfd0a194af0da66162545f0089eb4baa">ConstraintEdge::NormalGep</a></div>
805
- <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; || edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375ae5df3ce07dd670b48916f7b8ab33ae5a">ConstraintEdge::VariantGep</a>)</div>
806
- <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; {</div>
807
- <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=purple&quot;</span>;</div>
808
- <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; }</div>
809
- <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a20d6a102ddc06257a822ffffcc5a3b47">ConstraintEdge::Store</a>)</div>
810
- <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; {</div>
811
- <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=blue&quot;</span>;</div>
812
- <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; }</div>
813
- <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2">ConstraintEdge::Load</a>)</div>
814
- <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; {</div>
815
- <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=red&quot;</span>;</div>
816
- <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; }</div>
817
- <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">else</span></div>
818
- <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; {</div>
819
- <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; assert(0 &amp;&amp; <span class="stringliteral">&quot;No such kind edge!!&quot;</span>);</div>
820
- <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; }</div>
821
- <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
822
- <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; }</div>
823
- <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; </div>
824
- <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div>
825
- <div class="line"><a name="l00833"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a651568cd6c1f0771d8633a7ed7b1dfd2"> 833</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a651568cd6c1f0771d8633a7ed7b1dfd2">getEdgeSourceLabel</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">NodeType</a>*, EdgeIter)</div>
826
- <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; {</div>
827
- <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
828
- <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; }</div>
829
- <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160;};</div>
830
- <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;} <span class="comment">// End namespace llvm</span></div>
801
+ <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">else</span></div>
802
+ <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; {</div>
803
+ <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; assert(0 &amp;&amp; <span class="stringliteral">&quot;no such kind!!&quot;</span>);</div>
804
+ <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; }</div>
805
+ <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
806
+ <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; }</div>
807
+ <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; </div>
808
+ <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div>
809
+ <div class="line"><a name="l00820"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a74ed73ff248b33b274c87797e61ef15c"> 820</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a74ed73ff248b33b274c87797e61ef15c">getEdgeAttributes</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">NodeType</a>*, EdgeIter EI, <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*)</div>
810
+ <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; {</div>
811
+ <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = *(EI.getCurrent());</div>
812
+ <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; assert(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div>
813
+ <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>)</div>
814
+ <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; {</div>
815
+ <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=green&quot;</span>;</div>
816
+ <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; }</div>
817
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>)</div>
818
+ <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; {</div>
819
+ <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=black&quot;</span>;</div>
820
+ <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; }</div>
821
+ <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375acfd0a194af0da66162545f0089eb4baa">ConstraintEdge::NormalGep</a></div>
822
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; || edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375ae5df3ce07dd670b48916f7b8ab33ae5a">ConstraintEdge::VariantGep</a>)</div>
823
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; {</div>
824
+ <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=purple&quot;</span>;</div>
825
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; }</div>
826
+ <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a20d6a102ddc06257a822ffffcc5a3b47">ConstraintEdge::Store</a>)</div>
827
+ <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; {</div>
828
+ <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=blue&quot;</span>;</div>
829
+ <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; }</div>
830
+ <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2">ConstraintEdge::Load</a>)</div>
831
+ <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; {</div>
832
+ <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=red&quot;</span>;</div>
833
+ <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; }</div>
834
+ <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">else</span></div>
835
+ <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; {</div>
836
+ <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; assert(0 &amp;&amp; <span class="stringliteral">&quot;No such kind edge!!&quot;</span>);</div>
837
+ <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; }</div>
838
+ <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
839
+ <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; }</div>
840
+ <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; </div>
841
+ <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div>
842
+ <div class="line"><a name="l00853"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a651568cd6c1f0771d8633a7ed7b1dfd2"> 853</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a651568cd6c1f0771d8633a7ed7b1dfd2">getEdgeSourceLabel</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">NodeType</a>*, EdgeIter)</div>
843
+ <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; {</div>
844
+ <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
845
+ <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; }</div>
846
+ <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;};</div>
847
+ <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;} <span class="comment">// End namespace llvm</span></div>
831
848
  </div><!-- fragment --></div><!-- contents -->
832
849
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_a2d0e87fa3174562c97b519b2b144d8ea"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a2d0e87fa3174562c97b519b2b144d8ea">SVF::ConstraintNode::removeIncomingStoreEdge</a></div><div class="ttdeci">bool removeIncomingStoreEdge(StoreCGEdge *inEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00376">ConsGNode.h:376</a></div></div>
833
850
  <div class="ttc" id="aclassSVF_1_1CopyStmt_html"><div class="ttname"><a href="classSVF_1_1CopyStmt.html">SVF::CopyStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00364">SVFStatements.h:364</a></div></div>
834
- <div class="ttc" id="astructSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_aa89ef1fbbc6ff785a933f45201054af6"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#aa89ef1fbbc6ff785a933f45201054af6">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::isNodeHidden</a></div><div class="ttdeci">static bool isNodeHidden(NodeType *n, ConstraintGraph *)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00720">ConsG.cpp:720</a></div></div>
835
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a9fc73676ea133651604e2528fe1d8244"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">SVF::ConstraintGraph::removeDirectEdge</a></div><div class="ttdeci">void removeDirectEdge(ConstraintEdge *edge)</div><div class="ttdoc">Remove direct edge from their src and dst edge sets.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00427">ConsG.cpp:427</a></div></div>
851
+ <div class="ttc" id="astructSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_aa89ef1fbbc6ff785a933f45201054af6"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#aa89ef1fbbc6ff785a933f45201054af6">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::isNodeHidden</a></div><div class="ttdeci">static bool isNodeHidden(NodeType *n, ConstraintGraph *)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00740">ConsG.cpp:740</a></div></div>
852
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a9fc73676ea133651604e2528fe1d8244"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">SVF::ConstraintGraph::removeDirectEdge</a></div><div class="ttdeci">void removeDirectEdge(ConstraintEdge *edge)</div><div class="ttdoc">Remove direct edge from their src and dst edge sets.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00447">ConsG.cpp:447</a></div></div>
836
853
  <div class="ttc" id="aclassSVF_1_1ConstraintEdge_html_ad155e1ed2473cc4f5f57128d282ac541"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#ad155e1ed2473cc4f5f57128d282ac541">SVF::ConstraintEdge::ConstraintEdgeSetTy</a></div><div class="ttdeci">GenericNode&lt; ConstraintNode, ConstraintEdge &gt;::GEdgeSetTy ConstraintEdgeSetTy</div><div class="ttdoc">Constraint edge type.</div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00085">ConsGEdge.h:85</a></div></div>
837
- <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_aed4e0b2ede72717491747158c2e2702f"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#aed4e0b2ede72717491747158c2e2702f">SVF::ConstraintNode::directInEdgeEnd</a></div><div class="ttdeci">iterator directInEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00658">ConsG.cpp:658</a></div></div>
838
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a4db3484e3710c3f5cc86ec32dd643722"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722">SVF::ConstraintGraph::reTargetDstOfEdge</a></div><div class="ttdeci">void reTargetDstOfEdge(ConstraintEdge *edge, ConstraintNode *newDstNode)</div><div class="ttdoc">Used for cycle elimination.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00303">ConsG.cpp:303</a></div></div>
854
+ <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_aed4e0b2ede72717491747158c2e2702f"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#aed4e0b2ede72717491747158c2e2702f">SVF::ConstraintNode::directInEdgeEnd</a></div><div class="ttdeci">iterator directInEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00678">ConsG.cpp:678</a></div></div>
855
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a4db3484e3710c3f5cc86ec32dd643722"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722">SVF::ConstraintGraph::reTargetDstOfEdge</a></div><div class="ttdeci">void reTargetDstOfEdge(ConstraintEdge *edge, ConstraintNode *newDstNode)</div><div class="ttdoc">Used for cycle elimination.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00323">ConsG.cpp:323</a></div></div>
839
856
  <div class="ttc" id="aclassSVF_1_1ConstraintEdge_html"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html">SVF::ConstraintEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00048">ConsGEdge.h:48</a></div></div>
840
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_ab0b4f708097d4b3d92b4513818fef68c"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#ab0b4f708097d4b3d92b4513818fef68c">SVF::ConstraintGraph::addNormalGepCGEdge</a></div><div class="ttdeci">NormalGepCGEdge * addNormalGepCGEdge(NodeID src, NodeID dst, const AccessPath &amp;ap)</div><div class="ttdoc">Add Gep edge.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00213">ConsG.cpp:213</a></div></div>
857
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_ab0b4f708097d4b3d92b4513818fef68c"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#ab0b4f708097d4b3d92b4513818fef68c">SVF::ConstraintGraph::addNormalGepCGEdge</a></div><div class="ttdeci">NormalGepCGEdge * addNormalGepCGEdge(NodeID src, NodeID dst, const AccessPath &amp;ap)</div><div class="ttdoc">Add Gep edge.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00233">ConsG.cpp:233</a></div></div>
841
858
  <div class="ttc" id="aclassSVF_1_1AddrStmt_html"><div class="ttname"><a href="classSVF_1_1AddrStmt.html">SVF::AddrStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00313">SVFStatements.h:313</a></div></div>
842
859
  <div class="ttc" id="aclassSVF_1_1GepStmt_html_a0ddf180a0f7ba64fc8655687910e3788"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">SVF::GepStmt::isVariantFieldGep</a></div><div class="ttdeci">bool isVariantFieldGep() const</div><div class="ttdoc">Gep statement with a variant field index (pointer arithmetic) for struct field access.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00539">SVFStatements.h:539</a></div></div>
843
860
  <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_ac246dc91562d4b1e168b7c39b2c2720f"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#ac246dc91562d4b1e168b7c39b2c2720f">SVF::ConstraintGraph::edgeIndex</a></div><div class="ttdeci">EdgeID edgeIndex</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00059">ConsG.h:59</a></div></div>
844
861
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_a9d1bb95ad5549d7e6030fe07f8e070a2"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a9d1bb95ad5549d7e6030fe07f8e070a2">SVF::ConstraintNode::addIncomingLoadEdge</a></div><div class="ttdeci">void addIncomingLoadEdge(LoadCGEdge *inEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00252">ConsGNode.h:252</a></div></div>
845
862
  <div class="ttc" id="aclassSVF_1_1PhiStmt_html"><div class="ttname"><a href="classSVF_1_1PhiStmt.html">SVF::PhiStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00761">SVFStatements.h:761</a></div></div>
846
863
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_a2395948518a1befb7a3762bbad6adf9f"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a2395948518a1befb7a3762bbad6adf9f">SVF::ConstraintNode::addOutgoingCopyEdge</a></div><div class="ttdeci">void addOutgoingCopyEdge(CopyCGEdge *outEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00237">ConsGNode.h:237</a></div></div>
847
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a60bb27100e8c264be2add004069d1758"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758">SVF::ConstraintGraph::addCopyCGEdge</a></div><div class="ttdeci">CopyCGEdge * addCopyCGEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Copy edge.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00190">ConsG.cpp:190</a></div></div>
864
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a60bb27100e8c264be2add004069d1758"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758">SVF::ConstraintGraph::addCopyCGEdge</a></div><div class="ttdeci">CopyCGEdge * addCopyCGEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Copy edge.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00210">ConsG.cpp:210</a></div></div>
848
865
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVF::SVFStmt::Call</a></div><div class="ttdeci">@ Call</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00067">SVFStatements.h:67</a></div></div>
849
866
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVF::SVFStmt::Addr</a></div><div class="ttdeci">@ Addr</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00063">SVFStatements.h:63</a></div></div>
850
867
  <div class="ttc" id="aclassSVF_1_1GenericNode_html_afe6a7b286d9af4992f41b59612fd2900"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">SVF::GenericNode::InEdgeEnd</a></div><div class="ttdeci">iterator InEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00229">GenericGraph.h:229</a></div></div>
851
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_adee52f15f5ff58dd455e419c2643f89b"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#adee52f15f5ff58dd455e419c2643f89b">SVF::ConstraintGraph::getAddrCGEdges</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy &amp; getAddrCGEdges()</div><div class="ttdoc">Get SVFIR edge.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00194">ConsG.h:194</a></div></div>
852
- <div class="ttc" id="astructSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a94e74890f433758f3a38238f59400a3f"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a94e74890f433758f3a38238f59400a3f">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::NodeType</a></div><div class="ttdeci">ConstraintNode NodeType</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00708">ConsG.cpp:708</a></div></div>
868
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_adee52f15f5ff58dd455e419c2643f89b"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#adee52f15f5ff58dd455e419c2643f89b">SVF::ConstraintGraph::getAddrCGEdges</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy &amp; getAddrCGEdges()</div><div class="ttdoc">Get SVFIR edge.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00196">ConsG.h:196</a></div></div>
869
+ <div class="ttc" id="anamespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00097">SVFType.h:97</a></div></div>
870
+ <div class="ttc" id="astructSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a94e74890f433758f3a38238f59400a3f"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a94e74890f433758f3a38238f59400a3f">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::NodeType</a></div><div class="ttdeci">ConstraintNode NodeType</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00728">ConsG.cpp:728</a></div></div>
853
871
  <div class="ttc" id="aclassSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375acfd0a194af0da66162545f0089eb4baa"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375acfd0a194af0da66162545f0089eb4baa">SVF::ConstraintEdge::NormalGep</a></div><div class="ttdeci">@ NormalGep</div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
854
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_acc23df2db1fa7b8e0270d8a04f08f2ee"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">SVF::ConstraintGraph::removeAddrEdge</a></div><div class="ttdeci">void removeAddrEdge(AddrCGEdge *edge)</div><div class="ttdoc">Remove addr edge from their src and dst edge sets.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00388">ConsG.cpp:388</a></div></div>
872
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_acc23df2db1fa7b8e0270d8a04f08f2ee"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">SVF::ConstraintGraph::removeAddrEdge</a></div><div class="ttdeci">void removeAddrEdge(AddrCGEdge *edge)</div><div class="ttdoc">Remove addr edge from their src and dst edge sets.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00408">ConsG.cpp:408</a></div></div>
855
873
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_affb426040b05678fcbce62002a02bb06"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#affb426040b05678fcbce62002a02bb06">SVF::ConstraintNode::directOutEdges</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy directOutEdges</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00058">ConsGNode.h:58</a></div></div>
856
874
  <div class="ttc" id="anamespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
857
875
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_a18a52c763aa946f06798dc5592f5c1e0"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a18a52c763aa946f06798dc5592f5c1e0">SVF::ConstraintNode::addOutgoingStoreEdge</a></div><div class="ttdeci">bool addOutgoingStoreEdge(StoreCGEdge *outEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00284">ConsGNode.h:284</a></div></div>
@@ -861,26 +879,26 @@ $(function() {
861
879
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_a53626700d25b5c004e42354c925df83c"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a53626700d25b5c004e42354c925df83c">SVF::ConstraintNode::directInEdges</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy directInEdges</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00057">ConsGNode.h:57</a></div></div>
862
880
  <div class="ttc" id="aclassSVF_1_1SVFVar_html_ac2db6304ea5526fb446ae882983beeb0"><div class="ttname"><a href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">SVF::SVFVar::getValue</a></div><div class="ttdeci">const SVFValue * getValue() const</div><div class="ttdoc">Get/has methods of the components.</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00094">SVFVariables.h:94</a></div></div>
863
881
  <div class="ttc" id="acJSON_8h_html_a25d22ecc7e656d2c59332072684e8766"><div class="ttname"><a href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a></div><div class="ttdeci">const char *const name</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00264">cJSON.h:264</a></div></div>
864
- <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_a5be4bd33793fe159397c16a80a05b570"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a5be4bd33793fe159397c16a80a05b570">SVF::ConstraintNode::directOutEdgeBegin</a></div><div class="ttdeci">iterator directOutEdgeBegin()</div><div class="ttdoc">Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00634">ConsG.cpp:634</a></div></div>
882
+ <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_a5be4bd33793fe159397c16a80a05b570"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a5be4bd33793fe159397c16a80a05b570">SVF::ConstraintNode::directOutEdgeBegin</a></div><div class="ttdeci">iterator directOutEdgeBegin()</div><div class="ttdoc">Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00654">ConsG.cpp:654</a></div></div>
865
883
  <div class="ttc" id="aclassSVF_1_1NormalGepCGEdge_html"><div class="ttname"><a href="classSVF_1_1NormalGepCGEdge.html">SVF::NormalGepCGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00265">ConsGEdge.h:265</a></div></div>
866
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a39b973543acdcdc5493832cc9d0f586f"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a39b973543acdcdc5493832cc9d0f586f">SVF::ConstraintGraph::sccRepNode</a></div><div class="ttdeci">NodeID sccRepNode(NodeID id) const</div><div class="ttdoc">SCC rep/sub nodes methods.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00233">ConsG.h:233</a></div></div>
884
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a39b973543acdcdc5493832cc9d0f586f"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a39b973543acdcdc5493832cc9d0f586f">SVF::ConstraintGraph::sccRepNode</a></div><div class="ttdeci">NodeID sccRepNode(NodeID id) const</div><div class="ttdoc">SCC rep/sub nodes methods.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00235">ConsG.h:235</a></div></div>
867
885
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a8cd7b6c6fd8b030b1421d95a086359f4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVF::SVFStmt::SVFStmtSetTy</a></div><div class="ttdeci">GenericNode&lt; SVFVar, SVFStmt &gt;::GEdgeSetTy SVFStmtSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00217">SVFStatements.h:217</a></div></div>
868
886
  <div class="ttc" id="aclassSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">SVF::ConstraintEdge::Copy</a></div><div class="ttdeci">@ Copy</div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
869
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a61ef90be6ccc01634e5440f22a0f746e"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a61ef90be6ccc01634e5440f22a0f746e">SVF::ConstraintGraph::getStoreCGEdges</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy &amp; getStoreCGEdges()</div><div class="ttdoc">Get Store edges.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00209">ConsG.h:209</a></div></div>
887
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a61ef90be6ccc01634e5440f22a0f746e"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a61ef90be6ccc01634e5440f22a0f746e">SVF::ConstraintGraph::getStoreCGEdges</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy &amp; getStoreCGEdges()</div><div class="ttdoc">Get Store edges.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00211">ConsG.h:211</a></div></div>
870
888
  <div class="ttc" id="aclassSVF_1_1CallPE_html"><div class="ttname"><a href="classSVF_1_1CallPE.html">SVF::CallPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00558">SVFStatements.h:558</a></div></div>
871
889
  <div class="ttc" id="acJSON_8cpp_html_ab6e2ea6dc7bd57d1483413449998230a"><div class="ttname"><a href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a></div><div class="ttdeci">cJSON * n</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02558">cJSON.cpp:2558</a></div></div>
872
890
  <div class="ttc" id="aclassSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00180">GenericGraph.h:180</a></div></div>
873
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_aa4bca2422049413439cb0c3400f2ce28"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#aa4bca2422049413439cb0c3400f2ce28">SVF::ConstraintGraph::removeLoadEdge</a></div><div class="ttdeci">void removeLoadEdge(LoadCGEdge *edge)</div><div class="ttdoc">Remove load edge from their src and dst edge sets.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00401">ConsG.cpp:401</a></div></div>
891
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_aa4bca2422049413439cb0c3400f2ce28"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#aa4bca2422049413439cb0c3400f2ce28">SVF::ConstraintGraph::removeLoadEdge</a></div><div class="ttdeci">void removeLoadEdge(LoadCGEdge *edge)</div><div class="ttdoc">Remove load edge from their src and dst edge sets.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00421">ConsG.cpp:421</a></div></div>
874
892
  <div class="ttc" id="aclassSVF_1_1GenericEdge_html_ad9edb45e74ae675d9da82f5acf02d56e"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">SVF::GenericEdge::getDstID</a></div><div class="ttdeci">NodeID getDstID() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00085">GenericGraph.h:85</a></div></div>
875
893
  <div class="ttc" id="anamespaceSVF_html_a4582a7d33a5631a5a38973f50035327e"><div class="ttname"><a href="namespaceSVF.html#a4582a7d33a5631a5a38973f50035327e">SVF::ViewGraph</a></div><div class="ttdeci">void ViewGraph(const GraphType &amp;G, const std::string &amp;name, bool ShortNames=false, GraphProgram::Name Program=GraphProgram::DOT)</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00371">GraphWriter.h:371</a></div></div>
876
894
  <div class="ttc" id="aOptions_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
877
895
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_abc56843c51c00a9018473f415f73e9f6"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#abc56843c51c00a9018473f415f73e9f6">SVF::ConstraintNode::addOutgoingGepEdge</a></div><div class="ttdeci">void addOutgoingGepEdge(GepCGEdge *outEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00242">ConsGNode.h:242</a></div></div>
878
896
  <div class="ttc" id="aclassSVF_1_1AssignStmt_html_a4cec89489e82c60c287cae3327f3f01d"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">SVF::AssignStmt::getRHSVarID</a></div><div class="ttdeci">NodeID getRHSVarID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00298">SVFStatements.h:298</a></div></div>
879
897
  <div class="ttc" id="aclassSVF_1_1CopyCGEdge_html"><div class="ttname"><a href="classSVF_1_1CopyCGEdge.html">SVF::CopyCGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00124">ConsGEdge.h:124</a></div></div>
880
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_af790af4146197682dd4f9abfad1434f6"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#af790af4146197682dd4f9abfad1434f6">SVF::ConstraintGraph::isZeroOffsettedGepCGEdge</a></div><div class="ttdeci">bool isZeroOffsettedGepCGEdge(ConstraintEdge *edge) const</div><div class="ttdoc">Check if a given edge is a NormalGepCGEdge with 0 offset.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00292">ConsG.h:292</a></div></div>
881
- <div class="ttc" id="astructSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a651568cd6c1f0771d8633a7ed7b1dfd2"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a651568cd6c1f0771d8633a7ed7b1dfd2">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::getEdgeSourceLabel</a></div><div class="ttdeci">static std::string getEdgeSourceLabel(NodeType *, EdgeIter)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00833">ConsG.cpp:833</a></div></div>
898
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_af790af4146197682dd4f9abfad1434f6"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#af790af4146197682dd4f9abfad1434f6">SVF::ConstraintGraph::isZeroOffsettedGepCGEdge</a></div><div class="ttdeci">bool isZeroOffsettedGepCGEdge(ConstraintEdge *edge) const</div><div class="ttdoc">Check if a given edge is a NormalGepCGEdge with 0 offset.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00294">ConsG.h:294</a></div></div>
899
+ <div class="ttc" id="astructSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a651568cd6c1f0771d8633a7ed7b1dfd2"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a651568cd6c1f0771d8633a7ed7b1dfd2">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::getEdgeSourceLabel</a></div><div class="ttdeci">static std::string getEdgeSourceLabel(NodeType *, EdgeIter)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00853">ConsG.cpp:853</a></div></div>
882
900
  <div class="ttc" id="aclassSVF_1_1TDJoinPE_html"><div class="ttname"><a href="classSVF_1_1TDJoinPE.html">SVF::TDJoinPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01238">SVFStatements.h:1238</a></div></div>
883
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_afb849d8f3425ff36497d062ecefd2cc1"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#afb849d8f3425ff36497d062ecefd2cc1">SVF::ConstraintGraph::getLoadCGEdges</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy &amp; getLoadCGEdges()</div><div class="ttdoc">Get Load edges.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00204">ConsG.h:204</a></div></div>
901
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_afb849d8f3425ff36497d062ecefd2cc1"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#afb849d8f3425ff36497d062ecefd2cc1">SVF::ConstraintGraph::getLoadCGEdges</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy &amp; getLoadCGEdges()</div><div class="ttdoc">Get Load edges.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00206">ConsG.h:206</a></div></div>
884
902
  <div class="ttc" id="aclassSVF_1_1GenericEdge_html_ae6792506a0150a9400d635eceab7f9e7"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">SVF::GenericEdge::getSrcID</a></div><div class="ttdeci">NodeID getSrcID() const</div><div class="ttdoc">get methods of the components</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00081">GenericGraph.h:81</a></div></div>
885
903
  <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a1be3ebb84b3d334daf98f7e6f5b82256"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a1be3ebb84b3d334daf98f7e6f5b82256">SVF::ConstraintGraph::directEdgeSet</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy directEdgeSet</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00062">ConsG.h:62</a></div></div>
886
904
  <div class="ttc" id="aclassSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00400">SVFStatements.h:400</a></div></div>
@@ -890,24 +908,25 @@ $(function() {
890
908
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_a73b8c0967cde518a2ea7dfea2a7dc32f"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a73b8c0967cde518a2ea7dfea2a7dc32f">SVF::ConstraintNode::removeOutgoingDirectEdge</a></div><div class="ttdeci">bool removeOutgoingDirectEdge(ConstraintEdge *outEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00323">ConsGNode.h:323</a></div></div>
891
909
  <div class="ttc" id="aPAGGrammar_8txt_html_a1181f56ceed612b4d77df931fa4dfaa9"><div class="ttname"><a href="PAGGrammar_8txt.html#a1181f56ceed612b4d77df931fa4dfaa9">vgep</a></div><div class="ttdeci">copy vgep</div><div class="ttdef"><b>Definition:</b> <a href="PAGGrammar_8txt_source.html#l00009">PAGGrammar.txt:9</a></div></div>
892
910
  <div class="ttc" id="aclassSVF_1_1AccessPath_html"><div class="ttname"><a href="classSVF_1_1AccessPath.html">SVF::AccessPath</a></div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00052">AccessPath.h:52</a></div></div>
893
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_af9fc8308845628fe8900528573e30462"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#af9fc8308845628fe8900528573e30462">SVF::ConstraintGraph::dump</a></div><div class="ttdeci">void dump(std::string name)</div><div class="ttdoc">Dump graph into dot file.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00559">ConsG.cpp:559</a></div></div>
894
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a26722666cc8f2fce61bed73f086a0e87"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">SVF::ConstraintGraph::getConstraintNode</a></div><div class="ttdeci">ConstraintNode * getConstraintNode(NodeID id) const</div><div class="ttdoc">Get/add/remove constraint node.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00107">ConsG.h:107</a></div></div>
911
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_af9fc8308845628fe8900528573e30462"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#af9fc8308845628fe8900528573e30462">SVF::ConstraintGraph::dump</a></div><div class="ttdeci">void dump(std::string name)</div><div class="ttdoc">Dump graph into dot file.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00579">ConsG.cpp:579</a></div></div>
912
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a26722666cc8f2fce61bed73f086a0e87"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">SVF::ConstraintGraph::getConstraintNode</a></div><div class="ttdeci">ConstraintNode * getConstraintNode(NodeID id) const</div><div class="ttdoc">Get/add/remove constraint node.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00109">ConsG.h:109</a></div></div>
895
913
  <div class="ttc" id="aclassSVF_1_1GepStmt_html_a6c74f234a6b40bc5292bb14874c2e600"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">SVF::GepStmt::getAccessPath</a></div><div class="ttdeci">const AccessPath &amp; getAccessPath() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00504">SVFStatements.h:504</a></div></div>
896
914
  <div class="ttc" id="aclassSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00221">GenericGraph.h:221</a></div></div>
897
915
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVF::SVFStmt::ThreadJoin</a></div><div class="ttdeci">@ ThreadJoin</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00077">SVFStatements.h:77</a></div></div>
898
916
  <div class="ttc" id="aclassSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375ae5df3ce07dd670b48916f7b8ab33ae5a"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375ae5df3ce07dd670b48916f7b8ab33ae5a">SVF::ConstraintEdge::VariantGep</a></div><div class="ttdeci">@ VariantGep</div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
899
917
  <div class="ttc" id="aclassSVF_1_1LoadCGEdge_html"><div class="ttname"><a href="classSVF_1_1LoadCGEdge.html">SVF::LoadCGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00191">ConsGEdge.h:191</a></div></div>
900
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_aaae56afed424f7cd59fddb3fcb2f7214"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#aaae56afed424f7cd59fddb3fcb2f7214">SVF::ConstraintGraph::reTargetSrcOfEdge</a></div><div class="ttdeci">void reTargetSrcOfEdge(ConstraintEdge *edge, ConstraintNode *newSrcNode)</div><div class="ttdoc">Remove edge from old src target, change edge dst id and add modified edge into new src.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00347">ConsG.cpp:347</a></div></div>
918
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_aaae56afed424f7cd59fddb3fcb2f7214"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#aaae56afed424f7cd59fddb3fcb2f7214">SVF::ConstraintGraph::reTargetSrcOfEdge</a></div><div class="ttdeci">void reTargetSrcOfEdge(ConstraintEdge *edge, ConstraintNode *newSrcNode)</div><div class="ttdoc">Remove edge from old src target, change edge dst id and add modified edge into new src.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00367">ConsG.cpp:367</a></div></div>
901
919
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_a24ef3eedb218283d106eceb8a73ca1b4"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a24ef3eedb218283d106eceb8a73ca1b4">SVF::ConstraintNode::removeOutgoingStoreEdge</a></div><div class="ttdeci">bool removeOutgoingStoreEdge(StoreCGEdge *outEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00367">ConsGNode.h:367</a></div></div>
902
920
  <div class="ttc" id="astructSVF_1_1DOTGraphTraits_html"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits.html">SVF::DOTGraphTraits</a></div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00181">DOTGraphTraits.h:181</a></div></div>
903
- <div class="ttc" id="astructSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a6948926922a5c5378d92c3c6aa0b3ccd"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a6948926922a5c5378d92c3c6aa0b3ccd">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::getGraphName</a></div><div class="ttdeci">static std::string getGraphName(ConstraintGraph *)</div><div class="ttdoc">Return name of the graph.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00715">ConsG.cpp:715</a></div></div>
904
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_aad3d05c949c33a587b3ac6d627f5a0a2"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#aad3d05c949c33a587b3ac6d627f5a0a2">SVF::ConstraintGraph::removeStoreEdge</a></div><div class="ttdeci">void removeStoreEdge(StoreCGEdge *edge)</div><div class="ttdoc">Remove store edge from their src and dst edge sets.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00414">ConsG.cpp:414</a></div></div>
921
+ <div class="ttc" id="astructSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a6948926922a5c5378d92c3c6aa0b3ccd"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a6948926922a5c5378d92c3c6aa0b3ccd">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::getGraphName</a></div><div class="ttdeci">static std::string getGraphName(ConstraintGraph *)</div><div class="ttdoc">Return name of the graph.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00735">ConsG.cpp:735</a></div></div>
922
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_aad3d05c949c33a587b3ac6d627f5a0a2"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#aad3d05c949c33a587b3ac6d627f5a0a2">SVF::ConstraintGraph::removeStoreEdge</a></div><div class="ttdeci">void removeStoreEdge(StoreCGEdge *edge)</div><div class="ttdoc">Remove store edge from their src and dst edge sets.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00434">ConsG.cpp:434</a></div></div>
923
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a65c96cdd904e4240fbc7a044f89b91a1"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a65c96cdd904e4240fbc7a044f89b91a1">SVF::ConstraintGraph::clearSolitaries</a></div><div class="ttdeci">void clearSolitaries()</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00149">ConsG.cpp:149</a></div></div>
905
924
  <div class="ttc" id="aclassSVF_1_1GenericNode_html_ae5b113921530eee6afe58a65d8e5b3a7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">SVF::GenericNode::InEdgeBegin</a></div><div class="ttdeci">iterator InEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00225">GenericGraph.h:225</a></div></div>
906
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a56cfcc39637cf5208f65297a63dde266"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a56cfcc39637cf5208f65297a63dde266">SVF::ConstraintGraph::addAddrCGEdge</a></div><div class="ttdeci">AddrCGEdge * addAddrCGEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add a SVFIR edge into Edge map.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00170">ConsG.cpp:170</a></div></div>
925
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a56cfcc39637cf5208f65297a63dde266"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a56cfcc39637cf5208f65297a63dde266">SVF::ConstraintGraph::addAddrCGEdge</a></div><div class="ttdeci">AddrCGEdge * addAddrCGEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add a SVFIR edge into Edge map.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00190">ConsG.cpp:190</a></div></div>
907
926
  <div class="ttc" id="aclassSVF_1_1MultiOpndStmt_html_a0441f2646fed28830439c41a0704ed4b"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">SVF::MultiOpndStmt::getOpndVars</a></div><div class="ttdeci">const OPVars &amp; getOpndVars() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00742">SVFStatements.h:742</a></div></div>
908
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a6902cabb252b1eaadb3c8220b4581a2f"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a6902cabb252b1eaadb3c8220b4581a2f">SVF::ConstraintGraph::addVariantGepCGEdge</a></div><div class="ttdeci">VariantGepCGEdge * addVariantGepCGEdge(NodeID src, NodeID dst)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00235">ConsG.cpp:235</a></div></div>
927
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a6902cabb252b1eaadb3c8220b4581a2f"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a6902cabb252b1eaadb3c8220b4581a2f">SVF::ConstraintGraph::addVariantGepCGEdge</a></div><div class="ttdeci">VariantGepCGEdge * addVariantGepCGEdge(NodeID src, NodeID dst)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00255">ConsG.cpp:255</a></div></div>
909
928
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVF::SVFStmt::Copy</a></div><div class="ttdeci">@ Copy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00064">SVFStatements.h:64</a></div></div>
910
- <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_a66c58fc9e29b9e2c88cb7e3216415c9f"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a66c58fc9e29b9e2c88cb7e3216415c9f">SVF::ConstraintNode::directInEdgeBegin</a></div><div class="ttdeci">iterator directInEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00650">ConsG.cpp:650</a></div></div>
929
+ <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_a66c58fc9e29b9e2c88cb7e3216415c9f"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a66c58fc9e29b9e2c88cb7e3216415c9f">SVF::ConstraintNode::directInEdgeBegin</a></div><div class="ttdeci">iterator directInEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00670">ConsG.cpp:670</a></div></div>
911
930
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_a202193059dd3122d969561080b82c504"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a202193059dd3122d969561080b82c504">SVF::ConstraintNode::addIncomingStoreEdge</a></div><div class="ttdeci">void addIncomingStoreEdge(StoreCGEdge *inEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00257">ConsGNode.h:257</a></div></div>
912
931
  <div class="ttc" id="anamespaceSVF_html_ae71551d6a1fc300e0403297aa25ddf94"><div class="ttname"><a href="namespaceSVF.html#ae71551d6a1fc300e0403297aa25ddf94">SVF::EdgeID</a></div><div class="ttdeci">u32_t EdgeID</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00057">SVFType.h:57</a></div></div>
913
932
  <div class="ttc" id="aclassSVF_1_1SVFModule_html_a1357c876eccedd58b3abe68875b3a570"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVF::SVFModule::pagReadFromTXT</a></div><div class="ttdeci">static bool pagReadFromTXT()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00098">SVFModule.h:98</a></div></div>
@@ -920,47 +939,47 @@ $(function() {
920
939
  <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a1973126243ff619033a78a3782944278"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a1973126243ff619033a78a3782944278">SVF::ConstraintGraph::buildCG</a></div><div class="ttdeci">void buildCG()</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00040">ConsG.cpp:40</a></div></div>
921
940
  <div class="ttc" id="aclassSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2">SVF::ConstraintEdge::Load</a></div><div class="ttdeci">@ Load</div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
922
941
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVF::SVFStmt::Select</a></div><div class="ttdeci">@ Select</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00071">SVFStatements.h:71</a></div></div>
923
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_ad7196d5f05192d9468ee0ca93b6b66ee"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#ad7196d5f05192d9468ee0ca93b6b66ee">SVF::ConstraintGraph::getDirectCGEdges</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy &amp; getDirectCGEdges()</div><div class="ttdoc">Get Copy/call/ret/gep edges.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00199">ConsG.h:199</a></div></div>
942
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_ad7196d5f05192d9468ee0ca93b6b66ee"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#ad7196d5f05192d9468ee0ca93b6b66ee">SVF::ConstraintGraph::getDirectCGEdges</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy &amp; getDirectCGEdges()</div><div class="ttdoc">Get Copy/call/ret/gep edges.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00201">ConsG.h:201</a></div></div>
924
943
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_aa95df9972daaf3a2f92480a5fdc5b3a1"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#aa95df9972daaf3a2f92480a5fdc5b3a1">SVF::ConstraintNode::addOutgoingLoadEdge</a></div><div class="ttdeci">bool addOutgoingLoadEdge(LoadCGEdge *outEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00276">ConsGNode.h:276</a></div></div>
925
- <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_ae3465d3c949ec59e243b30ad0ecd256d"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#ae3465d3c949ec59e243b30ad0ecd256d">SVF::ConstraintNode::directOutEdgeEnd</a></div><div class="ttdeci">iterator directOutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00642">ConsG.cpp:642</a></div></div>
944
+ <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_ae3465d3c949ec59e243b30ad0ecd256d"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#ae3465d3c949ec59e243b30ad0ecd256d">SVF::ConstraintNode::directOutEdgeEnd</a></div><div class="ttdeci">iterator directOutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00662">ConsG.cpp:662</a></div></div>
926
945
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_aeff08dd512d0a97fb14069b37386e9fe"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#aeff08dd512d0a97fb14069b37386e9fe">SVF::ConstraintNode::addIncomingAddrEdge</a></div><div class="ttdeci">void addIncomingAddrEdge(AddrCGEdge *inEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00247">ConsGNode.h:247</a></div></div>
927
946
  <div class="ttc" id="aclassSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00406">GenericGraph.h:406</a></div></div>
928
- <div class="ttc" id="astructSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a646cb350726d62532cda229aaf6af9cc"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a646cb350726d62532cda229aaf6af9cc">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::getNodeAttributes</a></div><div class="ttdeci">static std::string getNodeAttributes(NodeType *n, ConstraintGraph *)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00761">ConsG.cpp:761</a></div></div>
947
+ <div class="ttc" id="astructSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a646cb350726d62532cda229aaf6af9cc"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a646cb350726d62532cda229aaf6af9cc">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::getNodeAttributes</a></div><div class="ttdeci">static std::string getNodeAttributes(NodeType *n, ConstraintGraph *)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00781">ConsG.cpp:781</a></div></div>
929
948
  <div class="ttc" id="aclassSVF_1_1Options_html_a3fc22d0a45be551110d1e326380f3202"><div class="ttname"><a href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">SVF::Options::DetectPWC</a></div><div class="ttdeci">static Option&lt; bool &gt; DetectPWC</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00234">Options.h:234</a></div></div>
930
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a27d8078577d479c84f2a87b44f015d1c"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a27d8078577d479c84f2a87b44f015d1c">SVF::ConstraintGraph::view</a></div><div class="ttdeci">void view()</div><div class="ttdoc">View graph from the debugger.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00627">ConsG.cpp:627</a></div></div>
949
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a27d8078577d479c84f2a87b44f015d1c"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a27d8078577d479c84f2a87b44f015d1c">SVF::ConstraintGraph::view</a></div><div class="ttdeci">void view()</div><div class="ttdoc">View graph from the debugger.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00647">ConsG.cpp:647</a></div></div>
931
950
  <div class="ttc" id="aclassSVF_1_1GepStmt_html"><div class="ttname"><a href="classSVF_1_1GepStmt.html">SVF::GepStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00474">SVFStatements.h:474</a></div></div>
932
951
  <div class="ttc" id="aclassSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00217">GenericGraph.h:217</a></div></div>
933
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a633666953f8d6675961981c4eab1adb0"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0">SVF::ConstraintGraph::addStoreCGEdge</a></div><div class="ttdeci">StoreCGEdge * addStoreCGEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Store edge.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00277">ConsG.cpp:277</a></div></div>
952
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a633666953f8d6675961981c4eab1adb0"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0">SVF::ConstraintGraph::addStoreCGEdge</a></div><div class="ttdeci">StoreCGEdge * addStoreCGEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Store edge.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00297">ConsG.cpp:297</a></div></div>
934
953
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_a7d810ec9abc8817a938a557ac78dc8c0"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a7d810ec9abc8817a938a557ac78dc8c0">SVF::ConstraintNode::removeOutgoingLoadEdge</a></div><div class="ttdeci">bool removeOutgoingLoadEdge(LoadCGEdge *outEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00349">ConsGNode.h:349</a></div></div>
935
954
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html">SVF::ConstraintNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00040">ConsGNode.h:40</a></div></div>
936
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a5f57823a4918f6c6bfee9c18beddda51"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a5f57823a4918f6c6bfee9c18beddda51">SVF::ConstraintGraph::hasEdge</a></div><div class="ttdeci">bool hasEdge(ConstraintNode *src, ConstraintNode *dst, ConstraintEdge::ConstraintEdgeK kind)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00128">ConsG.h:128</a></div></div>
955
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a5f57823a4918f6c6bfee9c18beddda51"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a5f57823a4918f6c6bfee9c18beddda51">SVF::ConstraintGraph::hasEdge</a></div><div class="ttdeci">bool hasEdge(ConstraintNode *src, ConstraintNode *dst, ConstraintEdge::ConstraintEdgeK kind)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00130">ConsG.h:130</a></div></div>
937
956
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVF::SVFStmt::ThreadFork</a></div><div class="ttdeci">@ ThreadFork</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00076">SVFStatements.h:76</a></div></div>
938
957
  <div class="ttc" id="anamespaceSVF_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#l00050">SVFUtil.h:50</a></div></div>
939
958
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_ab1868f04de44f6fe1e9ac14f3d4ee56b"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">SVF::ConstraintNode::const_iterator</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00045">ConsGNode.h:45</a></div></div>
940
- <div class="ttc" id="astructSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a74ed73ff248b33b274c87797e61ef15c"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a74ed73ff248b33b274c87797e61ef15c">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::getEdgeAttributes</a></div><div class="ttdeci">static std::string getEdgeAttributes(NodeType *, EdgeIter EI, ConstraintGraph *)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00800">ConsG.cpp:800</a></div></div>
959
+ <div class="ttc" id="astructSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a74ed73ff248b33b274c87797e61ef15c"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a74ed73ff248b33b274c87797e61ef15c">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::getEdgeAttributes</a></div><div class="ttdeci">static std::string getEdgeAttributes(NodeType *, EdgeIter EI, ConstraintGraph *)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00820">ConsG.cpp:820</a></div></div>
941
960
  <div class="ttc" id="aclassSVF_1_1StoreCGEdge_html"><div class="ttname"><a href="classSVF_1_1StoreCGEdge.html">SVF::StoreCGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00157">ConsGEdge.h:157</a></div></div>
942
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a1e5a23fbd08cf4186775baffbd6a7934"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a1e5a23fbd08cf4186775baffbd6a7934">SVF::ConstraintGraph::addLoadCGEdge</a></div><div class="ttdeci">LoadCGEdge * addLoadCGEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00256">ConsG.cpp:256</a></div></div>
961
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a1e5a23fbd08cf4186775baffbd6a7934"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a1e5a23fbd08cf4186775baffbd6a7934">SVF::ConstraintGraph::addLoadCGEdge</a></div><div class="ttdeci">LoadCGEdge * addLoadCGEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00276">ConsG.cpp:276</a></div></div>
943
962
  <div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01296">LLVMUtil.cpp:1296</a></div></div>
944
- <div class="ttc" id="astructSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_ad816997d240e758f7a2f1f6508048ef3"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#ad816997d240e758f7a2f1f6508048ef3">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::DOTGraphTraits</a></div><div class="ttdeci">DOTGraphTraits(bool isSimple=false)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00709">ConsG.cpp:709</a></div></div>
963
+ <div class="ttc" id="astructSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_ad816997d240e758f7a2f1f6508048ef3"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#ad816997d240e758f7a2f1f6508048ef3">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::DOTGraphTraits</a></div><div class="ttdeci">DOTGraphTraits(bool isSimple=false)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00729">ConsG.cpp:729</a></div></div>
945
964
  <div class="ttc" id="aclassSVF_1_1Options_html_adee65a3773fbb98532538c938230e1d3"><div class="ttname"><a href="classSVF_1_1Options.html#adee65a3773fbb98532538c938230e1d3">SVF::Options::ShowHiddenNode</a></div><div class="ttdeci">static const Option&lt; bool &gt; ShowHiddenNode</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00246">Options.h:246</a></div></div>
946
965
  <div class="ttc" id="aclassSVF_1_1GenericGraph_html_ac213302cf5c7cdf3b66f7b18649d0fbc"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::iterator</a></div><div class="ttdeci">IDToNodeMapTy::iterator iterator</div><div class="ttdoc">Node Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00359">GenericGraph.h:359</a></div></div>
947
966
  <div class="ttc" id="aclassSVF_1_1AddrCGEdge_html"><div class="ttname"><a href="classSVF_1_1AddrCGEdge.html">SVF::AddrCGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00093">ConsGEdge.h:93</a></div></div>
948
967
  <div class="ttc" id="aclassSVF_1_1Options_html_a25a3db9daa81a127a8dad86888adea6c"><div class="ttname"><a href="classSVF_1_1Options.html#a25a3db9daa81a127a8dad86888adea6c">SVF::Options::BriefConsCGDotGraph</a></div><div class="ttdeci">static const Option&lt; bool &gt; BriefConsCGDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00227">Options.h:227</a></div></div>
949
968
  <div class="ttc" id="aclassSVF_1_1GraphPrinter_html_a014217fb0d05c8f2a2f1a6c5b19d3e10"><div class="ttname"><a href="classSVF_1_1GraphPrinter.html#a014217fb0d05c8f2a2f1a6c5b19d3e10">SVF::GraphPrinter::WriteGraphToFile</a></div><div class="ttdeci">static void WriteGraphToFile(SVF::OutStream &amp;O, const std::string &amp;GraphName, const GraphType &amp;GT, bool simple=false)</div><div class="ttdef"><b>Definition:</b> <a href="GraphPrinter_8h_source.html#l00056">GraphPrinter.h:56</a></div></div>
950
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_aa436aac95be84d1946169f4984deae59"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#aa436aac95be84d1946169f4984deae59">SVF::ConstraintGraph::moveOutEdgesToRepNode</a></div><div class="ttdeci">bool moveOutEdgesToRepNode(ConstraintNode *node, ConstraintNode *rep)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00500">ConsG.cpp:500</a></div></div>
969
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_aa436aac95be84d1946169f4984deae59"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#aa436aac95be84d1946169f4984deae59">SVF::ConstraintGraph::moveOutEdgesToRepNode</a></div><div class="ttdeci">bool moveOutEdgesToRepNode(ConstraintNode *node, ConstraintNode *rep)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00520">ConsG.cpp:520</a></div></div>
951
970
  <div class="ttc" id="acJSON_8cpp_html_a7669ee67a0563250c1efaa24d130e1ac"><div class="ttname"><a href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a></div><div class="ttdeci">copy</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00414">cJSON.cpp:414</a></div></div>
952
971
  <div class="ttc" id="aclassSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
953
972
  <div class="ttc" id="aclassSVF_1_1TDForkPE_html"><div class="ttname"><a href="classSVF_1_1TDForkPE.html">SVF::TDForkPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01197">SVFStatements.h:1197</a></div></div>
954
973
  <div class="ttc" id="aclassSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">SVF::ConstraintEdge::Addr</a></div><div class="ttdeci">@ Addr</div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
955
974
  <div class="ttc" id="aclassSVF_1_1AssignStmt_html_a98f731be7be9bc8e7fd09f5c2204c840"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">SVF::AssignStmt::getLHSVarID</a></div><div class="ttdeci">NodeID getLHSVarID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00302">SVFStatements.h:302</a></div></div>
956
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a081bf1238121eb52a0c9ad60f77ecbcd"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a081bf1238121eb52a0c9ad60f77ecbcd">SVF::ConstraintGraph::moveInEdgesToRepNode</a></div><div class="ttdeci">bool moveInEdgesToRepNode(ConstraintNode *node, ConstraintNode *rep)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00442">ConsG.cpp:442</a></div></div>
975
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a081bf1238121eb52a0c9ad60f77ecbcd"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a081bf1238121eb52a0c9ad60f77ecbcd">SVF::ConstraintGraph::moveInEdgesToRepNode</a></div><div class="ttdeci">bool moveInEdgesToRepNode(ConstraintNode *node, ConstraintNode *rep)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00462">ConsG.cpp:462</a></div></div>
957
976
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVF::SVFStmt::Store</a></div><div class="ttdeci">@ Store</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00065">SVFStatements.h:65</a></div></div>
958
977
  <div class="ttc" id="anamespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
959
978
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_aaf0b98573a980aea1151a837580a40a5"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#aaf0b98573a980aea1151a837580a40a5">SVF::ConstraintNode::addIncomingGepEdge</a></div><div class="ttdeci">void addIncomingGepEdge(GepCGEdge *inEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00232">ConsGNode.h:232</a></div></div>
960
979
  <div class="ttc" id="aclassSVF_1_1MultiOpndStmt_html_a71a530eb9fa9f7e273e471b4a75a039e"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">SVF::MultiOpndStmt::getResID</a></div><div class="ttdeci">NodeID getResID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00289">SVFStatements.cpp:289</a></div></div>
961
980
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_a12df688fd9b5b7617daadc7bee0fff40"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a12df688fd9b5b7617daadc7bee0fff40">SVF::ConstraintNode::copyOutEdges</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy copyOutEdges</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00061">ConsGNode.h:61</a></div></div>
962
981
  <div class="ttc" id="aclassSVF_1_1GenericEdge_html_abe8525c542def8162b094c169a01993b"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">SVF::GenericEdge::getEdgeKind</a></div><div class="ttdeci">GEdgeKind getEdgeKind() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
963
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_aa87bf07fc538c2cf425138727e7acbce"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#aa87bf07fc538c2cf425138727e7acbce">SVF::ConstraintGraph::print</a></div><div class="ttdeci">void print()</div><div class="ttdoc">Print CG into terminal.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00567">ConsG.cpp:567</a></div></div>
982
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_aa87bf07fc538c2cf425138727e7acbce"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#aa87bf07fc538c2cf425138727e7acbce">SVF::ConstraintGraph::print</a></div><div class="ttdeci">void print()</div><div class="ttdoc">Print CG into terminal.</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00587">ConsG.cpp:587</a></div></div>
964
983
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_a5a97f47f5a65550dce11341c6f8d9ae6"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a5a97f47f5a65550dce11341c6f8d9ae6">SVF::ConstraintNode::removeIncomingAddrEdge</a></div><div class="ttdeci">bool removeIncomingAddrEdge(AddrCGEdge *inEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00314">ConsGNode.h:314</a></div></div>
965
984
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_a19ebc316f4fa0246debb1ca61c2b2f3f"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a19ebc316f4fa0246debb1ca61c2b2f3f">SVF::ConstraintNode::iterator</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00044">ConsGNode.h:44</a></div></div>
966
985
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_abaf196bcce496fbdee6740c42ca9dd71"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#abaf196bcce496fbdee6740c42ca9dd71">SVF::ConstraintNode::removeOutgoingAddrEdge</a></div><div class="ttdeci">bool removeOutgoingAddrEdge(AddrCGEdge *outEdge)</div><div class="ttdoc">Remove constraint graph edges.</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00305">ConsGNode.h:305</a></div></div>
@@ -976,9 +995,9 @@ $(function() {
976
995
  <div class="ttc" id="aclassSVF_1_1VariantGepCGEdge_html"><div class="ttname"><a href="classSVF_1_1VariantGepCGEdge.html">SVF::VariantGepCGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00319">ConsGEdge.h:319</a></div></div>
977
996
  <div class="ttc" id="anamespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
978
997
  <div class="ttc" id="aclassSVF_1_1SVFVar_html_a54b2a5ed3ed21e54eaf04182f0338333"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a54b2a5ed3ed21e54eaf04182f0338333">SVF::SVFVar::getValueName</a></div><div class="ttdeci">virtual const std::string getValueName() const =0</div><div class="ttdoc">Get name of the LLVM value.</div></div>
979
- <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a77ba38543b1ee164f1ae95589d5dbc44"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a77ba38543b1ee164f1ae95589d5dbc44">SVF::ConstraintGraph::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00148">ConsG.cpp:148</a></div></div>
998
+ <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a77ba38543b1ee164f1ae95589d5dbc44"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a77ba38543b1ee164f1ae95589d5dbc44">SVF::ConstraintGraph::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00168">ConsG.cpp:168</a></div></div>
980
999
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_ad54cc825bb7f5642671e75b90b2633a2"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#ad54cc825bb7f5642671e75b90b2633a2">SVF::ConstraintNode::addIncomingCopyEdge</a></div><div class="ttdeci">void addIncomingCopyEdge(CopyCGEdge *inEdge)</div><div class="ttdoc">Add constraint graph edges.</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00227">ConsGNode.h:227</a></div></div>
981
- <div class="ttc" id="astructSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a9e45113303655dd4b3951f975cc7790f"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a9e45113303655dd4b3951f975cc7790f">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::getNodeLabel</a></div><div class="ttdeci">static std::string getNodeLabel(NodeType *n, ConstraintGraph *)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00728">ConsG.cpp:728</a></div></div>
1000
+ <div class="ttc" id="astructSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a9e45113303655dd4b3951f975cc7790f"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a9e45113303655dd4b3951f975cc7790f">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::getNodeLabel</a></div><div class="ttdeci">static std::string getNodeLabel(NodeType *n, ConstraintGraph *)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00748">ConsG.cpp:748</a></div></div>
982
1001
  <!-- start footer part -->
983
1002
  <hr class="footer"/><address class="footer"><small>
984
1003
  Generated by &#160;<a href="http://www.doxygen.org/index.html">