svf-tools 1.0.901 → 1.0.902

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 (311) hide show
  1. package/SVF-doxygen/html/AbstractExecution_8cpp_source.html +10 -10
  2. package/SVF-doxygen/html/AbstractExecution_8h_source.html +2 -2
  3. package/SVF-doxygen/html/Andersen_8h_source.html +1 -1
  4. package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +2 -2
  5. package/SVF-doxygen/html/CSC_8cpp_source.html +2 -2
  6. package/SVF-doxygen/html/ConsGNode_8h_source.html +4 -4
  7. package/SVF-doxygen/html/ConsG_8cpp_source.html +760 -757
  8. package/SVF-doxygen/html/ConsG_8h_source.html +19 -19
  9. package/SVF-doxygen/html/ContextDDA_8cpp_source.html +3 -3
  10. package/SVF-doxygen/html/FlowDDA_8cpp_source.html +3 -3
  11. package/SVF-doxygen/html/FlowSensitive_8cpp_source.html +3 -3
  12. package/SVF-doxygen/html/ICFGEdge_8h_source.html +2 -2
  13. package/SVF-doxygen/html/ICFG_8cpp_source.html +2 -2
  14. package/SVF-doxygen/html/IRGraph_8cpp_source.html +2 -2
  15. package/SVF-doxygen/html/MSSAMuChi_8h_source.html +2 -2
  16. package/SVF-doxygen/html/MemRegion_8cpp_source.html +2 -2
  17. package/SVF-doxygen/html/MemRegion_8h_source.html +2 -2
  18. package/SVF-doxygen/html/MemSSA_8cpp_source.html +2 -2
  19. package/SVF-doxygen/html/MemSSA_8h_source.html +2 -2
  20. package/SVF-doxygen/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  21. package/SVF-doxygen/html/SVFFileSystem_8cpp_source.html +14 -14
  22. package/SVF-doxygen/html/SVFFileSystem_8h_source.html +14 -14
  23. package/SVF-doxygen/html/SVFGReadWrite_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/SVFG_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +60 -60
  26. package/SVF-doxygen/html/SVFIR2ConsExeState_8h_source.html +9 -9
  27. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +216 -206
  28. package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +14 -14
  29. package/SVF-doxygen/html/SVFIR2Relation_8cpp_source.html +35 -35
  30. package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +800 -804
  31. package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +59 -59
  32. package/SVF-doxygen/html/SVFIR_8cpp_source.html +20 -20
  33. package/SVF-doxygen/html/SVFIR_8h_source.html +197 -197
  34. package/SVF-doxygen/html/SVFStatements_8cpp_source.html +20 -20
  35. package/SVF-doxygen/html/SVFStatements_8h_source.html +1001 -953
  36. package/SVF-doxygen/html/SaberCondAllocator_8cpp_source.html +7 -7
  37. package/SVF-doxygen/html/SaberCondAllocator_8h_source.html +2 -2
  38. package/SVF-doxygen/html/Steensgaard_8h_source.html +1 -1
  39. package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +485 -483
  40. package/SVF-doxygen/html/SymbolTableBuilder_8h_source.html +14 -14
  41. package/SVF-doxygen/html/VFGNode_8h_source.html +10 -10
  42. package/SVF-doxygen/html/VFG_8cpp_source.html +16 -16
  43. package/SVF-doxygen/html/VFG_8h_source.html +13 -13
  44. package/SVF-doxygen/html/ae_8cpp_source.html +1 -1
  45. package/SVF-doxygen/html/classSVF_1_1AbstractExecution.html +15 -15
  46. package/SVF-doxygen/html/classSVF_1_1AddrCGEdge.html +11 -11
  47. package/SVF-doxygen/html/classSVF_1_1Andersen.html +1 -1
  48. package/SVF-doxygen/html/classSVF_1_1AndersenBase.html +2 -2
  49. package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +68 -68
  50. package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +51 -51
  51. package/SVF-doxygen/html/classSVF_1_1BranchVFGNode.html +3 -3
  52. package/SVF-doxygen/html/classSVF_1_1CSC.html +2 -2
  53. package/SVF-doxygen/html/classSVF_1_1CallPE.html +35 -35
  54. package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +97 -97
  55. package/SVF-doxygen/html/classSVF_1_1ConstraintGraph.html +514 -511
  56. package/SVF-doxygen/html/classSVF_1_1ConstraintNode.html +28 -28
  57. package/SVF-doxygen/html/classSVF_1_1ContextDDA.html +3 -3
  58. package/SVF-doxygen/html/classSVF_1_1CopyStmt-members.html +8 -2
  59. package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +238 -35
  60. package/SVF-doxygen/html/classSVF_1_1FlowDDA.html +3 -3
  61. package/SVF-doxygen/html/classSVF_1_1FlowSensitive.html +3 -3
  62. package/SVF-doxygen/html/classSVF_1_1GepStmt.html +56 -56
  63. package/SVF-doxygen/html/classSVF_1_1ICFG.html +2 -2
  64. package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +19 -19
  65. package/SVF-doxygen/html/classSVF_1_1MRGenerator.html +2 -2
  66. package/SVF-doxygen/html/classSVF_1_1MemSSA.html +2 -2
  67. package/SVF-doxygen/html/classSVF_1_1MultiOpndStmt.html +48 -48
  68. package/SVF-doxygen/html/classSVF_1_1PAGBuilderFromFile.html +15 -15
  69. package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +46 -46
  70. package/SVF-doxygen/html/classSVF_1_1RetPE.html +35 -35
  71. package/SVF-doxygen/html/classSVF_1_1SVFG.html +1 -1
  72. package/SVF-doxygen/html/classSVF_1_1SVFIR.html +137 -136
  73. package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +51 -51
  74. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +197 -187
  75. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +770 -775
  76. package/SVF-doxygen/html/classSVF_1_1SVFIRReader.html +1 -1
  77. package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator.html +7 -7
  78. package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +38 -38
  79. package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +1 -1
  80. package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +17 -17
  81. package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +466 -464
  82. package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +22 -22
  83. package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +21 -21
  84. package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +44 -44
  85. package/SVF-doxygen/html/classSVF_1_1VFG.html +16 -16
  86. package/SVF-doxygen/html/functions_func_i.html +28 -10
  87. package/SVF-doxygen/html/functions_i.html +30 -12
  88. package/SVF-doxygen/html/functions_l.html +3 -3
  89. package/SVF-doxygen/html/functions_p.html +15 -11
  90. package/SVF-doxygen/html/functions_r.html +1 -1
  91. package/SVF-doxygen/html/functions_s.html +7 -7
  92. package/SVF-doxygen/html/functions_t.html +3 -3
  93. package/SVF-doxygen/html/functions_v.html +6 -6
  94. package/SVF-doxygen/html/functions_w.html +7 -13
  95. package/SVF-doxygen/html/namespaceSVF.html +1 -1
  96. package/SVF-doxygen/html/search/all_10.js +326 -326
  97. package/SVF-doxygen/html/search/all_11.js +226 -226
  98. package/SVF-doxygen/html/search/all_12.js +574 -574
  99. package/SVF-doxygen/html/search/all_13.js +208 -208
  100. package/SVF-doxygen/html/search/all_14.js +73 -73
  101. package/SVF-doxygen/html/search/all_15.js +176 -176
  102. package/SVF-doxygen/html/search/all_16.js +77 -77
  103. package/SVF-doxygen/html/search/all_17.js +1 -1
  104. package/SVF-doxygen/html/search/all_18.js +1 -1
  105. package/SVF-doxygen/html/search/all_19.js +27 -27
  106. package/SVF-doxygen/html/search/all_1a.js +179 -179
  107. package/SVF-doxygen/html/search/all_9.js +308 -302
  108. package/SVF-doxygen/html/search/all_a.js +46 -46
  109. package/SVF-doxygen/html/search/all_b.js +26 -26
  110. package/SVF-doxygen/html/search/all_c.js +115 -115
  111. package/SVF-doxygen/html/search/all_d.js +204 -204
  112. package/SVF-doxygen/html/search/all_e.js +209 -209
  113. package/SVF-doxygen/html/search/all_f.js +122 -122
  114. package/SVF-doxygen/html/search/classes_0.js +28 -28
  115. package/SVF-doxygen/html/search/classes_1.js +11 -11
  116. package/SVF-doxygen/html/search/classes_10.js +74 -74
  117. package/SVF-doxygen/html/search/classes_11.js +14 -14
  118. package/SVF-doxygen/html/search/classes_12.js +2 -2
  119. package/SVF-doxygen/html/search/classes_13.js +10 -10
  120. package/SVF-doxygen/html/search/classes_14.js +19 -19
  121. package/SVF-doxygen/html/search/classes_15.js +1 -1
  122. package/SVF-doxygen/html/search/classes_2.js +73 -73
  123. package/SVF-doxygen/html/search/classes_3.js +35 -35
  124. package/SVF-doxygen/html/search/classes_4.js +8 -8
  125. package/SVF-doxygen/html/search/classes_5.js +28 -28
  126. package/SVF-doxygen/html/search/classes_6.js +98 -98
  127. package/SVF-doxygen/html/search/classes_7.js +38 -38
  128. package/SVF-doxygen/html/search/classes_8.js +59 -59
  129. package/SVF-doxygen/html/search/classes_9.js +1 -1
  130. package/SVF-doxygen/html/search/classes_a.js +12 -12
  131. package/SVF-doxygen/html/search/classes_b.js +29 -29
  132. package/SVF-doxygen/html/search/classes_c.js +6 -6
  133. package/SVF-doxygen/html/search/classes_d.js +19 -19
  134. package/SVF-doxygen/html/search/classes_e.js +36 -36
  135. package/SVF-doxygen/html/search/classes_f.js +25 -25
  136. package/SVF-doxygen/html/search/defines_0.js +3 -3
  137. package/SVF-doxygen/html/search/defines_1.js +3 -3
  138. package/SVF-doxygen/html/search/defines_10.js +2 -2
  139. package/SVF-doxygen/html/search/defines_2.js +30 -30
  140. package/SVF-doxygen/html/search/defines_3.js +20 -20
  141. package/SVF-doxygen/html/search/defines_4.js +3 -3
  142. package/SVF-doxygen/html/search/defines_5.js +4 -4
  143. package/SVF-doxygen/html/search/defines_6.js +2 -2
  144. package/SVF-doxygen/html/search/defines_7.js +5 -5
  145. package/SVF-doxygen/html/search/defines_8.js +11 -11
  146. package/SVF-doxygen/html/search/defines_9.js +9 -9
  147. package/SVF-doxygen/html/search/defines_a.js +2 -2
  148. package/SVF-doxygen/html/search/defines_b.js +1 -1
  149. package/SVF-doxygen/html/search/defines_c.js +4 -4
  150. package/SVF-doxygen/html/search/defines_d.js +2 -2
  151. package/SVF-doxygen/html/search/defines_e.js +8 -8
  152. package/SVF-doxygen/html/search/defines_f.js +4 -4
  153. package/SVF-doxygen/html/search/enums_0.js +4 -4
  154. package/SVF-doxygen/html/search/enums_1.js +2 -2
  155. package/SVF-doxygen/html/search/enums_10.js +1 -1
  156. package/SVF-doxygen/html/search/enums_11.js +1 -1
  157. package/SVF-doxygen/html/search/enums_2.js +9 -9
  158. package/SVF-doxygen/html/search/enums_3.js +1 -1
  159. package/SVF-doxygen/html/search/enums_4.js +4 -4
  160. package/SVF-doxygen/html/search/enums_5.js +1 -1
  161. package/SVF-doxygen/html/search/enums_6.js +2 -2
  162. package/SVF-doxygen/html/search/enums_7.js +2 -2
  163. package/SVF-doxygen/html/search/enums_8.js +4 -4
  164. package/SVF-doxygen/html/search/enums_9.js +1 -1
  165. package/SVF-doxygen/html/search/enums_a.js +1 -1
  166. package/SVF-doxygen/html/search/enums_b.js +7 -7
  167. package/SVF-doxygen/html/search/enums_c.js +1 -1
  168. package/SVF-doxygen/html/search/enums_d.js +4 -4
  169. package/SVF-doxygen/html/search/enums_e.js +2 -2
  170. package/SVF-doxygen/html/search/enums_f.js +4 -4
  171. package/SVF-doxygen/html/search/enumvalues_0.js +15 -15
  172. package/SVF-doxygen/html/search/enumvalues_1.js +16 -16
  173. package/SVF-doxygen/html/search/enumvalues_10.js +36 -36
  174. package/SVF-doxygen/html/search/enumvalues_11.js +5 -5
  175. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  176. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  177. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  178. package/SVF-doxygen/html/search/enumvalues_15.js +4 -4
  179. package/SVF-doxygen/html/search/enumvalues_2.js +37 -37
  180. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  181. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  182. package/SVF-doxygen/html/search/enumvalues_5.js +50 -50
  183. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  184. package/SVF-doxygen/html/search/enumvalues_7.js +8 -8
  185. package/SVF-doxygen/html/search/enumvalues_8.js +24 -24
  186. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  187. package/SVF-doxygen/html/search/enumvalues_a.js +17 -17
  188. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  189. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  190. package/SVF-doxygen/html/search/enumvalues_d.js +19 -19
  191. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  192. package/SVF-doxygen/html/search/enumvalues_f.js +49 -49
  193. package/SVF-doxygen/html/search/files_0.js +16 -16
  194. package/SVF-doxygen/html/search/files_1.js +9 -9
  195. package/SVF-doxygen/html/search/files_10.js +8 -8
  196. package/SVF-doxygen/html/search/files_11.js +8 -8
  197. package/SVF-doxygen/html/search/files_12.js +2 -2
  198. package/SVF-doxygen/html/search/files_2.js +53 -53
  199. package/SVF-doxygen/html/search/files_3.js +14 -14
  200. package/SVF-doxygen/html/search/files_4.js +5 -5
  201. package/SVF-doxygen/html/search/files_5.js +13 -13
  202. package/SVF-doxygen/html/search/files_6.js +10 -10
  203. package/SVF-doxygen/html/search/files_7.js +17 -17
  204. package/SVF-doxygen/html/search/files_8.js +13 -13
  205. package/SVF-doxygen/html/search/files_9.js +18 -18
  206. package/SVF-doxygen/html/search/files_a.js +3 -3
  207. package/SVF-doxygen/html/search/files_b.js +4 -4
  208. package/SVF-doxygen/html/search/files_c.js +20 -20
  209. package/SVF-doxygen/html/search/files_d.js +4 -4
  210. package/SVF-doxygen/html/search/files_e.js +62 -62
  211. package/SVF-doxygen/html/search/files_f.js +8 -8
  212. package/SVF-doxygen/html/search/functions_0.js +13 -13
  213. package/SVF-doxygen/html/search/functions_1.js +368 -368
  214. package/SVF-doxygen/html/search/functions_10.js +140 -140
  215. package/SVF-doxygen/html/search/functions_11.js +140 -140
  216. package/SVF-doxygen/html/search/functions_12.js +299 -299
  217. package/SVF-doxygen/html/search/functions_13.js +73 -73
  218. package/SVF-doxygen/html/search/functions_14.js +41 -41
  219. package/SVF-doxygen/html/search/functions_15.js +72 -72
  220. package/SVF-doxygen/html/search/functions_16.js +38 -38
  221. package/SVF-doxygen/html/search/functions_17.js +3 -3
  222. package/SVF-doxygen/html/search/functions_18.js +179 -179
  223. package/SVF-doxygen/html/search/functions_2.js +94 -94
  224. package/SVF-doxygen/html/search/functions_3.js +261 -261
  225. package/SVF-doxygen/html/search/functions_4.js +85 -85
  226. package/SVF-doxygen/html/search/functions_5.js +57 -57
  227. package/SVF-doxygen/html/search/functions_6.js +65 -65
  228. package/SVF-doxygen/html/search/functions_7.js +872 -872
  229. package/SVF-doxygen/html/search/functions_8.js +162 -162
  230. package/SVF-doxygen/html/search/functions_9.js +446 -440
  231. package/SVF-doxygen/html/search/functions_a.js +30 -30
  232. package/SVF-doxygen/html/search/functions_b.js +2 -2
  233. package/SVF-doxygen/html/search/functions_c.js +25 -25
  234. package/SVF-doxygen/html/search/functions_d.js +82 -82
  235. package/SVF-doxygen/html/search/functions_e.js +36 -36
  236. package/SVF-doxygen/html/search/functions_f.js +58 -58
  237. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  238. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  239. package/SVF-doxygen/html/search/related_0.js +4 -4
  240. package/SVF-doxygen/html/search/related_1.js +2 -2
  241. package/SVF-doxygen/html/search/related_2.js +2 -2
  242. package/SVF-doxygen/html/search/related_3.js +2 -2
  243. package/SVF-doxygen/html/search/related_4.js +2 -2
  244. package/SVF-doxygen/html/search/related_5.js +1 -1
  245. package/SVF-doxygen/html/search/related_6.js +2 -2
  246. package/SVF-doxygen/html/search/related_7.js +5 -5
  247. package/SVF-doxygen/html/search/related_8.js +2 -2
  248. package/SVF-doxygen/html/search/related_9.js +4 -4
  249. package/SVF-doxygen/html/search/related_a.js +19 -19
  250. package/SVF-doxygen/html/search/related_b.js +4 -4
  251. package/SVF-doxygen/html/search/related_c.js +2 -2
  252. package/SVF-doxygen/html/search/related_d.js +12 -12
  253. package/SVF-doxygen/html/search/related_e.js +2 -2
  254. package/SVF-doxygen/html/search/related_f.js +2 -2
  255. package/SVF-doxygen/html/search/typedefs_0.js +19 -19
  256. package/SVF-doxygen/html/search/typedefs_1.js +27 -27
  257. package/SVF-doxygen/html/search/typedefs_10.js +65 -65
  258. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  259. package/SVF-doxygen/html/search/typedefs_12.js +13 -13
  260. package/SVF-doxygen/html/search/typedefs_13.js +40 -40
  261. package/SVF-doxygen/html/search/typedefs_14.js +11 -11
  262. package/SVF-doxygen/html/search/typedefs_2.js +125 -125
  263. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  264. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  265. package/SVF-doxygen/html/search/typedefs_5.js +42 -42
  266. package/SVF-doxygen/html/search/typedefs_6.js +54 -54
  267. package/SVF-doxygen/html/search/typedefs_7.js +47 -47
  268. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  269. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  270. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  271. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  272. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  273. package/SVF-doxygen/html/search/typedefs_d.js +15 -15
  274. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  275. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  276. package/SVF-doxygen/html/search/variables_0.js +177 -177
  277. package/SVF-doxygen/html/search/variables_1.js +77 -77
  278. package/SVF-doxygen/html/search/variables_10.js +98 -98
  279. package/SVF-doxygen/html/search/variables_11.js +46 -46
  280. package/SVF-doxygen/html/search/variables_12.js +93 -93
  281. package/SVF-doxygen/html/search/variables_13.js +76 -76
  282. package/SVF-doxygen/html/search/variables_14.js +14 -14
  283. package/SVF-doxygen/html/search/variables_15.js +49 -49
  284. package/SVF-doxygen/html/search/variables_16.js +11 -11
  285. package/SVF-doxygen/html/search/variables_17.js +1 -1
  286. package/SVF-doxygen/html/search/variables_18.js +17 -17
  287. package/SVF-doxygen/html/search/variables_2.js +40 -40
  288. package/SVF-doxygen/html/search/variables_3.js +143 -143
  289. package/SVF-doxygen/html/search/variables_4.js +51 -51
  290. package/SVF-doxygen/html/search/variables_5.js +39 -39
  291. package/SVF-doxygen/html/search/variables_6.js +66 -66
  292. package/SVF-doxygen/html/search/variables_7.js +34 -34
  293. package/SVF-doxygen/html/search/variables_8.js +8 -8
  294. package/SVF-doxygen/html/search/variables_9.js +79 -79
  295. package/SVF-doxygen/html/search/variables_a.js +4 -4
  296. package/SVF-doxygen/html/search/variables_b.js +10 -10
  297. package/SVF-doxygen/html/search/variables_c.js +45 -45
  298. package/SVF-doxygen/html/search/variables_d.js +57 -57
  299. package/SVF-doxygen/html/search/variables_e.js +123 -123
  300. package/SVF-doxygen/html/search/variables_f.js +31 -31
  301. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +120 -120
  302. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  303. package/SVF-doxygen/html/svf-ex_8cpp.html +14 -14
  304. package/SVF-doxygen/html/svf-ex_8cpp_source.html +14 -14
  305. package/package.json +1 -1
  306. package/svf/include/SVFIR/SVFIR.h +2 -1
  307. package/svf/include/SVFIR/SVFStatements.h +45 -3
  308. package/svf/lib/AE/Svfexe/SVFIR2ItvExeState.cpp +8 -0
  309. package/svf/lib/Graphs/ConsG.cpp +2 -1
  310. package/svf-llvm/lib/SVFIRBuilder.cpp +10 -14
  311. package/svf-llvm/lib/SymbolTableBuilder.cpp +2 -0
@@ -128,805 +128,808 @@ $(function() {
128
128
  <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; copys.end(); iter != eiter; ++iter)</div>
129
129
  <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div>
130
130
  <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>* edge = SVFUtil::cast&lt;CopyStmt&gt;(*iter);</div>
131
- <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; addCopyCGEdge(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>
132
- <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div>
133
- <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; </div>
134
- <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; phis = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">SVFStmt::Phi</a>);</div>
135
- <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = phis.begin(), eiter =</div>
136
- <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; phis.end(); iter != eiter; ++iter)</div>
137
- <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div>
138
- <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>* edge = SVFUtil::cast&lt;PhiStmt&gt;(*iter);</div>
139
- <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> opVar : edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>())</div>
140
- <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; addCopyCGEdge(opVar-&gt;getId(),edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>());</div>
141
- <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div>
142
- <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
143
- <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; selects = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVFStmt::Select</a>);</div>
144
- <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = selects.begin(), eiter =</div>
145
- <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; selects.end(); iter != eiter; ++iter)</div>
146
- <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div>
147
- <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>* edge = SVFUtil::cast&lt;SelectStmt&gt;(*iter);</div>
148
- <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> opVar : edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>())</div>
149
- <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; addCopyCGEdge(opVar-&gt;getId(),edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>());</div>
150
- <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div>
151
- <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
152
- <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; calls = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a>);</div>
153
- <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = calls.begin(), eiter =</div>
154
- <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; calls.end(); iter != eiter; ++iter)</div>
155
- <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div>
156
- <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* edge = SVFUtil::cast&lt;CallPE&gt;(*iter);</div>
157
- <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; addCopyCGEdge(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>
158
- <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div>
159
- <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; </div>
160
- <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; rets = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a>);</div>
161
- <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = rets.begin(), eiter =</div>
162
- <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; rets.end(); iter != eiter; ++iter)</div>
163
- <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div>
164
- <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* edge = SVFUtil::cast&lt;RetPE&gt;(*iter);</div>
165
- <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; addCopyCGEdge(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>
166
- <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div>
167
- <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
168
- <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; tdfks = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>);</div>
169
- <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = tdfks.begin(), eiter =</div>
170
- <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; tdfks.end(); iter != eiter; ++iter)</div>
171
- <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div>
172
- <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>* edge = SVFUtil::cast&lt;TDForkPE&gt;(*iter);</div>
173
- <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; addCopyCGEdge(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>
174
- <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div>
175
- <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
176
- <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; tdjns = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>);</div>
177
- <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = tdjns.begin(), eiter =</div>
178
- <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; tdjns.end(); iter != eiter; ++iter)</div>
179
- <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; {</div>
180
- <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>* edge = SVFUtil::cast&lt;TDJoinPE&gt;(*iter);</div>
181
- <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; addCopyCGEdge(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>
182
- <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div>
183
- <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; </div>
184
- <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; ngeps = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div>
185
- <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = ngeps.begin(), eiter =</div>
186
- <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; ngeps.end(); iter != eiter; ++iter)</div>
187
- <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div>
188
- <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* edge = SVFUtil::cast&lt;GepStmt&gt;(*iter);</div>
189
- <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span>(edge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div>
190
- <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; addVariantGepCGEdge(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>
191
- <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">else</span></div>
192
- <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; addNormalGepCGEdge(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>(),edge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>());</div>
193
- <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div>
194
- <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; </div>
195
- <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; loads = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>);</div>
196
- <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = loads.begin(), eiter =</div>
197
- <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; loads.end(); iter != eiter; ++iter)</div>
198
- <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div>
199
- <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* edge = SVFUtil::cast&lt;LoadStmt&gt;(*iter);</div>
200
- <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; addLoadCGEdge(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>
201
- <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div>
202
- <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; </div>
203
- <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; stores = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>);</div>
204
- <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = stores.begin(), eiter =</div>
205
- <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; stores.end(); iter != eiter; ++iter)</div>
206
- <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div>
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
- <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
- <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; 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
- <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;}</div>
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#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
- <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; <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
- <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; <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
- <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; <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>
131
+ <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span>(edge-&gt;<a class="code" href="classSVF_1_1CopyStmt.html#a8d6022251e0206d91bb7118fb98934aa">isBitCast</a>() || edge-&gt;<a class="code" href="classSVF_1_1CopyStmt.html#ac05a1827caf102cb00c4605ba2ccd807">isValueCopy</a>())</div>
132
+ <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; addCopyCGEdge(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>
133
+ <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div>
134
+ <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; </div>
135
+ <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; phis = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">SVFStmt::Phi</a>);</div>
136
+ <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = phis.begin(), eiter =</div>
137
+ <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; phis.end(); iter != eiter; ++iter)</div>
138
+ <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div>
139
+ <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>* edge = SVFUtil::cast&lt;PhiStmt&gt;(*iter);</div>
140
+ <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> opVar : edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>())</div>
141
+ <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; addCopyCGEdge(opVar-&gt;getId(),edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>());</div>
142
+ <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div>
143
+ <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
144
+ <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; selects = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVFStmt::Select</a>);</div>
145
+ <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = selects.begin(), eiter =</div>
146
+ <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; selects.end(); iter != eiter; ++iter)</div>
147
+ <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div>
148
+ <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>* edge = SVFUtil::cast&lt;SelectStmt&gt;(*iter);</div>
149
+ <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> opVar : edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>())</div>
150
+ <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; addCopyCGEdge(opVar-&gt;getId(),edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>());</div>
151
+ <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div>
152
+ <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; </div>
153
+ <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; calls = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a>);</div>
154
+ <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = calls.begin(), eiter =</div>
155
+ <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; calls.end(); iter != eiter; ++iter)</div>
156
+ <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div>
157
+ <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* edge = SVFUtil::cast&lt;CallPE&gt;(*iter);</div>
158
+ <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; addCopyCGEdge(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>
159
+ <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div>
160
+ <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; </div>
161
+ <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; rets = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a>);</div>
162
+ <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = rets.begin(), eiter =</div>
163
+ <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; rets.end(); iter != eiter; ++iter)</div>
164
+ <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div>
165
+ <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* edge = SVFUtil::cast&lt;RetPE&gt;(*iter);</div>
166
+ <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; addCopyCGEdge(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>
167
+ <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div>
168
+ <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div>
169
+ <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; tdfks = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>);</div>
170
+ <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = tdfks.begin(), eiter =</div>
171
+ <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; tdfks.end(); iter != eiter; ++iter)</div>
172
+ <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div>
173
+ <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>* edge = SVFUtil::cast&lt;TDForkPE&gt;(*iter);</div>
174
+ <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; addCopyCGEdge(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>
175
+ <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div>
176
+ <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; </div>
177
+ <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; tdjns = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>);</div>
178
+ <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = tdjns.begin(), eiter =</div>
179
+ <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; tdjns.end(); iter != eiter; ++iter)</div>
180
+ <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div>
181
+ <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>* edge = SVFUtil::cast&lt;TDJoinPE&gt;(*iter);</div>
182
+ <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; addCopyCGEdge(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>
183
+ <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div>
184
+ <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; </div>
185
+ <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; ngeps = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div>
186
+ <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = ngeps.begin(), eiter =</div>
187
+ <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; ngeps.end(); iter != eiter; ++iter)</div>
188
+ <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div>
189
+ <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* edge = SVFUtil::cast&lt;GepStmt&gt;(*iter);</div>
190
+ <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span>(edge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div>
191
+ <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; addVariantGepCGEdge(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>
192
+ <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">else</span></div>
193
+ <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; addNormalGepCGEdge(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>(),edge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>());</div>
194
+ <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div>
195
+ <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; </div>
196
+ <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; loads = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>);</div>
197
+ <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = loads.begin(), eiter =</div>
198
+ <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; loads.end(); iter != eiter; ++iter)</div>
199
+ <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div>
200
+ <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* edge = SVFUtil::cast&lt;LoadStmt&gt;(*iter);</div>
201
+ <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; addLoadCGEdge(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>
202
+ <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div>
203
+ <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; </div>
204
+ <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; stores = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>);</div>
205
+ <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = stores.begin(), eiter =</div>
206
+ <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; stores.end(); iter != eiter; ++iter)</div>
207
+ <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div>
208
+ <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* edge = SVFUtil::cast&lt;StoreStmt&gt;(*iter);</div>
209
+ <div class="line"><a name="l00141"></a><span class="lineno"> 141</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>
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; clearSolitaries();</div>
213
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;}</div>
214
+ <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; </div>
215
+ <div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a65c96cdd904e4240fbc7a044f89b91a1"> 150</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a65c96cdd904e4240fbc7a044f89b91a1">ConstraintGraph::clearSolitaries</a>()</div>
216
+ <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;{</div>
217
+ <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;ConstraintNode*&gt;</a> nodesToRemove;</div>
218
+ <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = this-&gt;begin(); it != this-&gt;end(); ++it)</div>
219
+ <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; {</div>
220
+ <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> (it-&gt;second-&gt;hasIncomingEdge() || it-&gt;second-&gt;hasOutgoingEdge())</div>
221
+ <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">continue</span>;</div>
222
+ <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span> (pag-&gt;getGNode(it-&gt;first)-&gt;isPointer())</div>
223
+ <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">continue</span>;</div>
224
+ <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; nodesToRemove.insert(it-&gt;second);</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; </div>
227
+ <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> node : nodesToRemove)</div>
228
+ <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; removeConstraintNode(node);</div>
229
+ <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;}</div>
230
+ <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; </div>
231
+ <div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a77ba38543b1ee164f1ae95589d5dbc44"> 169</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a77ba38543b1ee164f1ae95589d5dbc44">ConstraintGraph::destroy</a>()</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="l00172"></a><span class="lineno"> 172</span>&#160; </div>
235
+ <div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrCGEdge.html#a131779667553499b85423e1932664252"> 176</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>
236
+ <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; : <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>(s,d,Addr,id)</div>
237
+ <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;{</div>
238
+ <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="comment">// Retarget addr edges may lead s to be a dummy node</span></div>
239
+ <div class="line"><a name="l00180"></a><span class="lineno"> 180</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>
240
+ <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; (void)node; <span class="comment">// Suppress warning of unused variable under release build</span></div>
241
+ <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>())</div>
242
+ <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div>
243
+ <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; assert(!SVFUtil::isa&lt;DummyValVar&gt;(node) &amp;&amp; <span class="stringliteral">&quot;a dummy node??&quot;</span>);</div>
244
+ <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div>
245
+ <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;}</div>
246
+ <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; </div>
247
+ <div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a56cfcc39637cf5208f65297a63dde266"> 191</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>
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#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>))</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>
253
+ <div class="line"><a name="l00197"></a><span class="lineno"> 197</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>
254
+ <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; </div>
255
+ <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1ConstraintGraph.html#a5bbd6df25027d26911f5d8d6a10881dc">AddrCGEdgeSet</a>.insert(edge).second;</div>
256
+ <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div>
257
+ <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new AddrCGEdge not added??&quot;</span>);</div>
258
+ <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; </div>
259
+ <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#af129941c522dbc1b0fe94f84eea0d97a">addOutgoingAddrEdge</a>(edge);</div>
260
+ <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aeff08dd512d0a97fb14069b37386e9fe">addIncomingAddrEdge</a>(edge);</div>
261
+ <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span> edge;</div>
262
+ <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;}</div>
263
+ <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; </div>
264
+ <div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758"> 211</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>
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; </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>* srcNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(src);</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>* dstNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(dst);</div>
269
+ <div class="line"><a name="l00216"></a><span class="lineno"> 216</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>
270
+ <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
271
+ <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; </div>
272
+ <div class="line"><a name="l00219"></a><span class="lineno"> 219</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>
273
+ <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; </div>
274
+ <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1ConstraintGraph.html#a1be3ebb84b3d334daf98f7e6f5b82256">directEdgeSet</a>.insert(edge).second;</div>
275
+ <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div>
276
+ <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new CopyCGEdge not added??&quot;</span>);</div>
277
+ <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; </div>
278
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a2395948518a1befb7a3762bbad6adf9f">addOutgoingCopyEdge</a>(edge);</div>
279
+ <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#ad54cc825bb7f5642671e75b90b2633a2">addIncomingCopyEdge</a>(edge);</div>
280
+ <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">return</span> edge;</div>
281
+ <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;}</div>
282
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>
283
+ <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; </div>
284
+ <div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#ab0b4f708097d4b3d92b4513818fef68c"> 234</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>
285
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;{</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>* srcNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(src);</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>* dstNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(dst);</div>
288
+ <div class="line"><a name="l00238"></a><span class="lineno"> 238</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>
289
+ <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
290
+ <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; </div>
291
+ <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* edge =</div>
292
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</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>
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 NormalGepCGEdge 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#a6902cabb252b1eaadb3c8220b4581a2f"> 256</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>
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#a663af27955ba0c545f34fa1f076b7375ae5df3ce07dd670b48916f7b8ab33ae5a">ConstraintEdge::VariantGep</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_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>
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#a1be3ebb84b3d334daf98f7e6f5b82256">directEdgeSet</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 VariantGepCGEdge 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#abc56843c51c00a9018473f415f73e9f6">addOutgoingGepEdge</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#aaf0b98573a980aea1151a837580a40a5">addIncomingGepEdge</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#a1e5a23fbd08cf4186775baffbd6a7934"> 277</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>
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#a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2">ConstraintEdge::Load</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_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>
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#a1cb9124b29720e7a5b39d83419f9cc17">LoadCGEdgeSet</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 LoadCGEdge 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#aa95df9972daaf3a2f92480a5fdc5b3a1">addOutgoingLoadEdge</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#a9d1bb95ad5549d7e6030fe07f8e070a2">addIncomingLoadEdge</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="l00298"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0"> 298</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>
340
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;{</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>* srcNode = <a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(src);</div>
342
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</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>
343
+ <div class="line"><a name="l00302"></a><span class="lineno"> 302</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>
344
+ <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
345
+ <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; </div>
346
+ <div class="line"><a name="l00305"></a><span class="lineno"> 305</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>
347
+ <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; </div>
348
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordtype">bool</span> inserted = <a class="code" href="classSVF_1_1ConstraintGraph.html#a0f9d5eef25827ac1d380e5d8bd225025">StoreCGEdgeSet</a>.insert(edge).second;</div>
349
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div>
350
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new StoreCGEdge not added??&quot;</span>);</div>
351
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; </div>
352
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a18a52c763aa946f06798dc5592f5c1e0">addOutgoingStoreEdge</a>(edge);</div>
353
+ <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a202193059dd3122d969561080b82c504">addIncomingStoreEdge</a>(edge);</div>
354
+ <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">return</span> edge;</div>
355
+ <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;}</div>
356
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>
370
- <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</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>
408
- <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</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>
480
- <div class="line"><a name="l00468"></a><span class="lineno"> 468</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>
357
+ <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; </div>
358
+ <div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722"> 324</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>
359
+ <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;{</div>
360
+ <div class="line"><a name="l00326"></a><span class="lineno"> 326</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>
361
+ <div class="line"><a name="l00327"></a><span class="lineno"> 327</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>
362
+ <div class="line"><a name="l00328"></a><span class="lineno"> 328</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>
363
+ <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div>
364
+ <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#aa4bca2422049413439cb0c3400f2ce28">removeLoadEdge</a>(load);</div>
365
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a1e5a23fbd08cf4186775baffbd6a7934">addLoadCGEdge</a>(srcId,newDstNodeID);</div>
366
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div>
367
+ <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_1StoreCGEdge.html">StoreCGEdge</a>* store = SVFUtil::dyn_cast&lt;StoreCGEdge&gt;(edge))</div>
368
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div>
369
+ <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#aad3d05c949c33a587b3ac6d627f5a0a2">removeStoreEdge</a>(store);</div>
370
+ <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0">addStoreCGEdge</a>(srcId,newDstNodeID);</div>
371
+ <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div>
372
+ <div class="line"><a name="l00338"></a><span class="lineno"> 338</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>
373
+ <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; {</div>
374
+ <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>);</div>
375
+ <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758">addCopyCGEdge</a>(srcId,newDstNodeID);</div>
376
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div>
377
+ <div class="line"><a name="l00343"></a><span class="lineno"> 343</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>
378
+ <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; {</div>
379
+ <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> ap = gep-&gt;getAccessPath();</div>
380
+ <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(gep);</div>
381
+ <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#ab0b4f708097d4b3d92b4513818fef68c">addNormalGepCGEdge</a>(srcId,newDstNodeID, ap);</div>
382
+ <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div>
383
+ <div class="line"><a name="l00349"></a><span class="lineno"> 349</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>
384
+ <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div>
385
+ <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(gep);</div>
386
+ <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a6902cabb252b1eaadb3c8220b4581a2f">addVariantGepCGEdge</a>(srcId,newDstNodeID);</div>
387
+ <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div>
388
+ <div class="line"><a name="l00354"></a><span class="lineno"> 354</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>
389
+ <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div>
390
+ <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">removeAddrEdge</a>(addr);</div>
391
+ <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div>
392
+ <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">else</span></div>
393
+ <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no other edge type!!&quot;</span>);</div>
394
+ <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;}</div>
395
+ <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; </div>
396
+ <div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aaae56afed424f7cd59fddb3fcb2f7214"> 368</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>
397
+ <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;{</div>
398
+ <div class="line"><a name="l00370"></a><span class="lineno"> 370</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>
399
+ <div class="line"><a name="l00371"></a><span class="lineno"> 371</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>
400
+ <div class="line"><a name="l00372"></a><span class="lineno"> 372</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>
401
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; {</div>
402
+ <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#aa4bca2422049413439cb0c3400f2ce28">removeLoadEdge</a>(load);</div>
403
+ <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a1e5a23fbd08cf4186775baffbd6a7934">addLoadCGEdge</a>(newSrcNodeID,dstId);</div>
404
+ <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div>
405
+ <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_1StoreCGEdge.html">StoreCGEdge</a>* store = SVFUtil::dyn_cast&lt;StoreCGEdge&gt;(edge))</div>
406
+ <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; {</div>
407
+ <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#aad3d05c949c33a587b3ac6d627f5a0a2">removeStoreEdge</a>(store);</div>
408
+ <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0">addStoreCGEdge</a>(newSrcNodeID,dstId);</div>
409
+ <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div>
410
+ <div class="line"><a name="l00382"></a><span class="lineno"> 382</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>
411
+ <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; {</div>
412
+ <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>);</div>
413
+ <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758">addCopyCGEdge</a>(newSrcNodeID,dstId);</div>
414
+ <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; }</div>
415
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</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>
416
+ <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div>
417
+ <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> ap = gep-&gt;getAccessPath();</div>
418
+ <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(gep);</div>
419
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#ab0b4f708097d4b3d92b4513818fef68c">addNormalGepCGEdge</a>(newSrcNodeID, dstId, ap);</div>
420
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div>
421
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</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>
422
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; {</div>
423
+ <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(gep);</div>
424
+ <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a6902cabb252b1eaadb3c8220b4581a2f">addVariantGepCGEdge</a>(newSrcNodeID,dstId);</div>
425
+ <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div>
426
+ <div class="line"><a name="l00398"></a><span class="lineno"> 398</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>
427
+ <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; {</div>
428
+ <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">removeAddrEdge</a>(addr);</div>
429
+ <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div>
430
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">else</span></div>
431
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no other edge type!!&quot;</span>);</div>
432
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;}</div>
433
+ <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; </div>
434
+ <div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee"> 409</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>
435
+ <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;{</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#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#abaf196bcce496fbdee6740c42ca9dd71">removeOutgoingAddrEdge</a>(edge);</div>
437
+ <div class="line"><a name="l00412"></a><span class="lineno"> 412</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>
438
+ <div class="line"><a name="l00413"></a><span class="lineno"> 413</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>
439
+ <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div>
440
+ <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div>
441
+ <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keyword">delete</span> edge;</div>
442
+ <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;}</div>
443
+ <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; </div>
444
+ <div class="line"><a name="l00422"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aa4bca2422049413439cb0c3400f2ce28"> 422</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>
445
+ <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;{</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#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a7d810ec9abc8817a938a557ac78dc8c0">removeOutgoingLoadEdge</a>(edge);</div>
447
+ <div class="line"><a name="l00425"></a><span class="lineno"> 425</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>
448
+ <div class="line"><a name="l00426"></a><span class="lineno"> 426</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>
449
+ <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div>
450
+ <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div>
451
+ <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keyword">delete</span> edge;</div>
452
+ <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;}</div>
453
+ <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; </div>
454
+ <div class="line"><a name="l00435"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aad3d05c949c33a587b3ac6d627f5a0a2"> 435</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>
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; <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>
457
+ <div class="line"><a name="l00438"></a><span class="lineno"> 438</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>
458
+ <div class="line"><a name="l00439"></a><span class="lineno"> 439</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>
459
+ <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div>
460
+ <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div>
461
+ <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keyword">delete</span> edge;</div>
462
+ <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;}</div>
463
+ <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; </div>
464
+ <div class="line"><a name="l00448"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244"> 448</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>
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; </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#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a73b8c0967cde518a2ea7dfea2a7dc32f">removeOutgoingDirectEdge</a>(edge);</div>
468
+ <div class="line"><a name="l00452"></a><span class="lineno"> 452</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>
469
+ <div class="line"><a name="l00453"></a><span class="lineno"> 453</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>
470
+ <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div>
471
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div>
472
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keyword">delete</span> edge;</div>
473
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;}</div>
474
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; </div>
475
+ <div class="line"><a name="l00463"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a081bf1238121eb52a0c9ad60f77ecbcd"> 463</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>
476
+ <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;{</div>
477
+ <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; std::vector&lt;ConstraintEdge*&gt; sccEdges;</div>
478
+ <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; std::vector&lt;ConstraintEdge*&gt; nonSccEdges;</div>
479
+ <div class="line"><a name="l00467"></a><span class="lineno"> 467</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>
480
+ <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; ++it)</div>
481
+ <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; {</div>
482
+ <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* subInEdge = *it;</div>
483
+ <div class="line"><a name="l00471"></a><span class="lineno"> 471</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>
484
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; nonSccEdges.push_back(subInEdge);</div>
485
+ <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">else</span></div>
486
+ <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; {</div>
487
+ <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; sccEdges.push_back(subInEdge);</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; }</div>
490
+ <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="comment">// if this edge is outside scc, then re-target edge dst to rep</span></div>
491
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">while</span>(!nonSccEdges.empty())</div>
492
+ <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; {</div>
493
+ <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = nonSccEdges.back();</div>
494
+ <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; nonSccEdges.pop_back();</div>
495
+ <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722">reTargetDstOfEdge</a>(edge,rep);</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; </div>
498
+ <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordtype">bool</span> criticalGepInsideSCC = <span class="keyword">false</span>;</div>
499
+ <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="comment">// if this edge is inside scc, then remove this edge and two end nodes</span></div>
500
+ <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">while</span>(!sccEdges.empty())</div>
501
+ <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; {</div>
502
+ <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = sccEdges.back();</div>
503
+ <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; sccEdges.pop_back();</div>
504
+ <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;CopyCGEdge&gt;(edge))</div>
505
+ <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(edge);</div>
506
+ <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;GepCGEdge&gt;(edge))</div>
507
+ <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; {</div>
508
+ <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="comment">// If the GEP is critical (i.e. may have a non-zero offset),</span></div>
509
+ <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="comment">// then it brings impact on field-sensitivity.</span></div>
510
+ <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1ConstraintGraph.html#af790af4146197682dd4f9abfad1434f6">isZeroOffsettedGepCGEdge</a>(edge))</div>
511
+ <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; {</div>
512
+ <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; criticalGepInsideSCC = <span class="keyword">true</span>;</div>
513
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div>
514
+ <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(edge);</div>
515
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div>
516
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadCGEdge, StoreCGEdge&gt;(edge))</div>
517
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722">reTargetDstOfEdge</a>(edge,rep);</div>
518
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr = SVFUtil::dyn_cast&lt;AddrCGEdge&gt;(edge))</div>
519
+ <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; {</div>
520
+ <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">removeAddrEdge</a>(addr);</div>
521
+ <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; }</div>
522
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">else</span></div>
523
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no such edge&quot;</span>);</div>
524
+ <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; }</div>
525
+ <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">return</span> criticalGepInsideSCC;</div>
526
+ <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;}</div>
527
+ <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; </div>
528
+ <div class="line"><a name="l00521"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aa436aac95be84d1946169f4984deae59"> 521</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>
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; </div>
531
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; std::vector&lt;ConstraintEdge*&gt; sccEdges;</div>
532
+ <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; std::vector&lt;ConstraintEdge*&gt; nonSccEdges;</div>
533
+ <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; </div>
534
+ <div class="line"><a name="l00527"></a><span class="lineno"> 527</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>
535
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; ++it)</div>
536
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; {</div>
537
+ <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* subOutEdge = *it;</div>
538
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</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>
539
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; nonSccEdges.push_back(subOutEdge);</div>
540
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">else</span></div>
541
+ <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; {</div>
542
+ <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; sccEdges.push_back(subOutEdge);</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; }</div>
545
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="comment">// if this edge is outside scc, then re-target edge src to rep</span></div>
546
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">while</span>(!nonSccEdges.empty())</div>
547
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div>
548
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = nonSccEdges.back();</div>
549
+ <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; nonSccEdges.pop_back();</div>
550
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#aaae56afed424f7cd59fddb3fcb2f7214">reTargetSrcOfEdge</a>(edge,rep);</div>
551
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; }</div>
552
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordtype">bool</span> criticalGepInsideSCC = <span class="keyword">false</span>;</div>
553
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="comment">// if this edge is inside scc, then remove this edge and two end nodes</span></div>
554
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">while</span>(!sccEdges.empty())</div>
555
+ <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; {</div>
556
+ <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = sccEdges.back();</div>
557
+ <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; sccEdges.pop_back();</div>
558
+ <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;CopyCGEdge&gt;(edge))</div>
559
+ <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(edge);</div>
560
+ <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;GepCGEdge&gt;(edge))</div>
561
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; {</div>
562
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="comment">// If the GEP is critical (i.e. may have a non-zero offset),</span></div>
563
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="comment">// then it brings impact on field-sensitivity.</span></div>
564
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1ConstraintGraph.html#af790af4146197682dd4f9abfad1434f6">isZeroOffsettedGepCGEdge</a>(edge))</div>
565
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; {</div>
566
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; criticalGepInsideSCC = <span class="keyword">true</span>;</div>
567
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; }</div>
568
+ <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">removeDirectEdge</a>(edge);</div>
569
+ <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; }</div>
570
+ <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadCGEdge, StoreCGEdge&gt;(edge))</div>
571
+ <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#aaae56afed424f7cd59fddb3fcb2f7214">reTargetSrcOfEdge</a>(edge,rep);</div>
572
+ <div class="line"><a name="l00566"></a><span class="lineno"> 566</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>
573
+ <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; {</div>
574
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">removeAddrEdge</a>(addr);</div>
575
+ <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; }</div>
576
+ <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">else</span></div>
577
+ <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no such edge&quot;</span>);</div>
578
+ <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; }</div>
579
+ <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">return</span> criticalGepInsideSCC;</div>
580
+ <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;}</div>
581
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>
641
- <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; </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>
744
- <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; </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>
774
- <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; {</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>
794
- <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; {</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>
796
- <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; }</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>
798
- <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; {</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>
800
- <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; }</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>
582
+ <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; </div>
583
+ <div class="line"><a name="l00580"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#af9fc8308845628fe8900528573e30462"> 580</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>
584
+ <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;{</div>
585
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</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>
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; </div>
588
+ <div class="line"><a name="l00588"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aa87bf07fc538c2cf425138727e7acbce"> 588</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aa87bf07fc538c2cf425138727e7acbce">ConstraintGraph::print</a>()</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; </div>
591
+ <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; <span class="stringliteral">&quot;-----------------ConstraintGraph--------------------------------------\n&quot;</span>;</div>
592
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; </div>
593
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</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>
594
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = addrs.begin(),</div>
595
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; eiter = addrs.end(); iter != eiter; ++iter)</div>
596
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; {</div>
597
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</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>
598
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</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; </div>
601
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</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>
602
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = directs.begin(),</div>
603
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; eiter = directs.end(); iter != eiter; ++iter)</div>
604
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; {</div>
605
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</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>
606
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; {</div>
607
+ <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; <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>
608
+ <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
609
+ <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div>
610
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</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>
611
+ <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; {</div>
612
+ <div class="line"><a name="l00612"></a><span class="lineno"> 612</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>
613
+ <div class="line"><a name="l00613"></a><span class="lineno"> 613</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>
614
+ <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; }</div>
615
+ <div class="line"><a name="l00615"></a><span class="lineno"> 615</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>
616
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; {</div>
617
+ <div class="line"><a name="l00617"></a><span class="lineno"> 617</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>
618
+ <div class="line"><a name="l00618"></a><span class="lineno"> 618</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>
619
+ <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; }</div>
620
+ <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">else</span></div>
621
+ <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;wrong constraint edge kind!&quot;</span>);</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; </div>
624
+ <div class="line"><a name="l00624"></a><span class="lineno"> 624</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>
625
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = loads.begin(),</div>
626
+ <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; eiter = loads.end(); iter != eiter; ++iter)</div>
627
+ <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; {</div>
628
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</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>
629
+ <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&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="l00632"></a><span class="lineno"> 632</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>
633
+ <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = stores.begin(),</div>
634
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; eiter = stores.end(); iter != eiter; ++iter)</div>
635
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; {</div>
636
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</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>
637
+ <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</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; </div>
640
+ <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>()</div>
641
+ <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; &lt;&lt; <span class="stringliteral">&quot;--------------------------------------------------------------\n&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="l00644"></a><span class="lineno"> 644</span>&#160; </div>
645
+ <div class="line"><a name="l00648"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a27d8078577d479c84f2a87b44f015d1c"> 648</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a27d8078577d479c84f2a87b44f015d1c">ConstraintGraph::view</a>()</div>
646
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;{</div>
647
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</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>
648
+ <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;}</div>
649
+ <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; </div>
650
+ <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; </div>
651
+ <div class="line"><a name="l00655"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#a5be4bd33793fe159397c16a80a05b570"> 655</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>
652
+ <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;{</div>
653
+ <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
654
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#affb426040b05678fcbce62002a02bb06">directOutEdges</a>.begin();</div>
655
+ <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">else</span></div>
656
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a12df688fd9b5b7617daadc7bee0fff40">copyOutEdges</a>.begin();</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"> 662</span>&#160; </div>
659
+ <div class="line"><a name="l00663"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#ae3465d3c949ec59e243b30ad0ecd256d"> 663</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>
660
+ <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;{</div>
661
+ <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
662
+ <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#affb426040b05678fcbce62002a02bb06">directOutEdges</a>.end();</div>
663
+ <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">else</span></div>
664
+ <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a12df688fd9b5b7617daadc7bee0fff40">copyOutEdges</a>.end();</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"> 670</span>&#160; </div>
667
+ <div class="line"><a name="l00671"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#a66c58fc9e29b9e2c88cb7e3216415c9f"> 671</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>
668
+ <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;{</div>
669
+ <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
670
+ <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a53626700d25b5c004e42354c925df83c">directInEdges</a>.begin();</div>
671
+ <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">else</span></div>
672
+ <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a4d413d64bf554ecdc72709afeeb85775">copyInEdges</a>.begin();</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"> 678</span>&#160; </div>
675
+ <div class="line"><a name="l00679"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#aed4e0b2ede72717491747158c2e2702f"> 679</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>
676
+ <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;{</div>
677
+ <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
678
+ <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a53626700d25b5c004e42354c925df83c">directInEdges</a>.end();</div>
679
+ <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordflow">else</span></div>
680
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a4d413d64bf554ecdc72709afeeb85775">copyInEdges</a>.end();</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; </div>
683
+ <div class="line"><a name="l00687"></a><span class="lineno"> 687</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>
684
+ <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="keyword"></span>{</div>
685
+ <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
686
+ <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#affb426040b05678fcbce62002a02bb06">directOutEdges</a>.begin();</div>
687
+ <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">else</span></div>
688
+ <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a12df688fd9b5b7617daadc7bee0fff40">copyOutEdges</a>.begin();</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; </div>
691
+ <div class="line"><a name="l00695"></a><span class="lineno"> 695</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>
692
+ <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;<span class="keyword"></span>{</div>
693
+ <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
694
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#affb426040b05678fcbce62002a02bb06">directOutEdges</a>.end();</div>
695
+ <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">else</span></div>
696
+ <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a12df688fd9b5b7617daadc7bee0fff40">copyOutEdges</a>.end();</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; </div>
699
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</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>
700
+ <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;<span class="keyword"></span>{</div>
701
+ <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
702
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a53626700d25b5c004e42354c925df83c">directInEdges</a>.begin();</div>
703
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">else</span></div>
704
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a4d413d64bf554ecdc72709afeeb85775">copyInEdges</a>.begin();</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; </div>
707
+ <div class="line"><a name="l00711"></a><span class="lineno"> 711</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>
708
+ <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;<span class="keyword"></span>{</div>
709
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3fc22d0a45be551110d1e326380f3202">Options::DetectPWC</a>())</div>
710
+ <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a53626700d25b5c004e42354c925df83c">directInEdges</a>.end();</div>
711
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">else</span></div>
712
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ConstraintNode.html#a4d413d64bf554ecdc72709afeeb85775">copyInEdges</a>.end();</div>
713
+ <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;}</div>
714
+ <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; </div>
715
+ <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div>
716
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;{</div>
717
+ <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
718
+ <div class="line"><a name="l00726"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html"> 726</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>
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"> 728</span>&#160; </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#a94e74890f433758f3a38238f59400a3f"> 729</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>
722
+ <div class="line"><a name="l00730"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#ad816997d240e758f7a2f1f6508048ef3"> 730</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>
723
+ <div class="line"><a name="l00731"></a><span class="lineno"> 731</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>
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="l00734"></a><span class="lineno"> 734</span>&#160; </div>
727
+ <div class="line"><a name="l00736"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a6948926922a5c5378d92c3c6aa0b3ccd"> 736</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>
728
+ <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; {</div>
729
+ <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ConstraintG&quot;</span>;</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"> 740</span>&#160; </div>
732
+ <div class="line"><a name="l00741"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#aa89ef1fbbc6ff785a933f45201054af6"> 741</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>
733
+ <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; {</div>
734
+ <div class="line"><a name="l00743"></a><span class="lineno"> 743</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>
735
+ <div class="line"><a name="l00744"></a><span class="lineno"> 744</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>
736
+ <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; }</div>
737
+ <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; </div>
738
+ <div class="line"><a name="l00749"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a9e45113303655dd4b3951f975cc7790f"> 749</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>
739
+ <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; {</div>
740
+ <div class="line"><a name="l00751"></a><span class="lineno"> 751</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>
741
+ <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordtype">bool</span> briefDisplay = <a class="code" href="classSVF_1_1Options.html#a25a3db9daa81a127a8dad86888adea6c">Options::BriefConsCGDotGraph</a>();</div>
742
+ <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordtype">bool</span> nameDisplay = <span class="keyword">true</span>;</div>
743
+ <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
744
+ <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; std::stringstream rawstr(str);</div>
745
+ <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; </div>
746
+ <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">if</span> (briefDisplay)</div>
747
+ <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; {</div>
748
+ <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ValVar&gt;(node))</div>
749
+ <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; {</div>
750
+ <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keywordflow">if</span> (nameDisplay)</div>
751
+ <div class="line"><a name="l00762"></a><span class="lineno"> 762</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>
752
+ <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">else</span></div>
753
+ <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div>
754
+ <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; }</div>
755
+ <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">else</span></div>
756
+ <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div>
757
+ <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; }</div>
758
+ <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">else</span></div>
759
+ <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; {</div>
760
+ <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="comment">// print the whole value</span></div>
761
+ <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;DummyValVar&gt;(node) &amp;&amp; !SVFUtil::isa&lt;DummyObjVar&gt;(node))</div>
762
+ <div class="line"><a name="l00773"></a><span class="lineno"> 773</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>
763
+ <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">else</span></div>
764
+ <div class="line"><a name="l00775"></a><span class="lineno"> 775</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>
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; </div>
768
+ <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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"> 781</span>&#160; </div>
771
+ <div class="line"><a name="l00782"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a646cb350726d62532cda229aaf6af9cc"> 782</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>
772
+ <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; {</div>
773
+ <div class="line"><a name="l00784"></a><span class="lineno"> 784</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>
774
+ <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ValVar&gt;(node))</div>
775
+ <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; {</div>
776
+ <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GepValVar&gt;(node))</div>
777
+ <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=hexagon&quot;</span>;</div>
778
+ <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyValVar&gt;(node))</div>
779
+ <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=diamond&quot;</span>;</div>
780
+ <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">else</span></div>
781
+ <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=box&quot;</span>;</div>
782
+ <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; }</div>
783
+ <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ObjVar&gt;(node))</div>
784
+ <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; {</div>
785
+ <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GepObjVar&gt;(node))</div>
786
+ <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=doubleoctagon&quot;</span>;</div>
787
+ <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;FIObjVar&gt;(node))</div>
788
+ <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=box3d&quot;</span>;</div>
789
+ <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyObjVar&gt;(node))</div>
790
+ <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=tab&quot;</span>;</div>
791
+ <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keywordflow">else</span></div>
792
+ <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=component&quot;</span>;</div>
793
+ <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; }</div>
794
+ <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetPN&gt;(node))</div>
795
+ <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; {</div>
796
+ <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=Mrecord&quot;</span>;</div>
797
+ <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; }</div>
798
+ <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;VarArgPN&gt;(node))</div>
799
+ <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; {</div>
800
+ <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=octagon&quot;</span>;</div>
801
+ <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; }</div>
802
+ <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keywordflow">else</span></div>
803
+ <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; {</div>
804
+ <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; assert(0 &amp;&amp; <span class="stringliteral">&quot;no such kind!!&quot;</span>);</div>
805
+ <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; }</div>
806
+ <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</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; </div>
809
+ <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div>
810
+ <div class="line"><a name="l00821"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a74ed73ff248b33b274c87797e61ef15c"> 821</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>
811
+ <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; {</div>
812
+ <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = *(EI.getCurrent());</div>
813
+ <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; assert(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div>
814
+ <div class="line"><a name="l00825"></a><span class="lineno"> 825</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>
815
+ <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; {</div>
816
+ <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=green&quot;</span>;</div>
817
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; }</div>
818
+ <div class="line"><a name="l00829"></a><span class="lineno"> 829</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>
819
+ <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; {</div>
820
+ <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=black&quot;</span>;</div>
821
+ <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; }</div>
822
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</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>
823
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</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>
824
+ <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; {</div>
825
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=purple&quot;</span>;</div>
826
+ <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; }</div>
827
+ <div class="line"><a name="l00838"></a><span class="lineno"> 838</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>
828
+ <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; {</div>
829
+ <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=blue&quot;</span>;</div>
830
+ <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; }</div>
831
+ <div class="line"><a name="l00842"></a><span class="lineno"> 842</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>
832
+ <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; {</div>
833
+ <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=red&quot;</span>;</div>
834
+ <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; }</div>
835
+ <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">else</span></div>
836
+ <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; {</div>
837
+ <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; assert(0 &amp;&amp; <span class="stringliteral">&quot;No such kind edge!!&quot;</span>);</div>
838
+ <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; }</div>
839
+ <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</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; </div>
842
+ <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div>
843
+ <div class="line"><a name="l00854"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a651568cd6c1f0771d8633a7ed7b1dfd2"> 854</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>
844
+ <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; {</div>
845
+ <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</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;};</div>
848
+ <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160;} <span class="comment">// End namespace llvm</span></div>
848
849
  </div><!-- fragment --></div><!-- contents -->
849
850
  <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>
850
851
  <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>
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>
852
+ <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#l00741">ConsG.cpp:741</a></div></div>
853
+ <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#l00448">ConsG.cpp:448</a></div></div>
853
854
  <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>
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>
855
+ <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#l00679">ConsG.cpp:679</a></div></div>
856
+ <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#l00324">ConsG.cpp:324</a></div></div>
856
857
  <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>
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>
858
+ <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#l00234">ConsG.cpp:234</a></div></div>
858
859
  <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>
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#l00549">SVFStatements.h:549</a></div></div>
860
+ <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#l00591">SVFStatements.h:591</a></div></div>
860
861
  <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>
861
862
  <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>
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#l00771">SVFStatements.h:771</a></div></div>
863
+ <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#l00813">SVFStatements.h:813</a></div></div>
863
864
  <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>
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>
865
+ <div class="ttc" id="aclassSVF_1_1CopyStmt_html_ac05a1827caf102cb00c4605ba2ccd807"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ac05a1827caf102cb00c4605ba2ccd807">SVF::CopyStmt::isValueCopy</a></div><div class="ttdeci">bool isValueCopy() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00416">SVFStatements.h:416</a></div></div>
866
+ <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#l00211">ConsG.cpp:211</a></div></div>
865
867
  <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>
866
868
  <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>
867
869
  <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>
868
870
  <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
871
  <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="GeneralType_8h_source.html#l00096">GeneralType.h:96</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>
872
+ <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#l00729">ConsG.cpp:729</a></div></div>
871
873
  <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>
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>
874
+ <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#l00409">ConsG.cpp:409</a></div></div>
873
875
  <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>
874
876
  <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#l00067">BasicTypes.h:67</a></div></div>
875
877
  <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>
876
- <div class="ttc" id="aclassSVF_1_1SelectStmt_html"><div class="ttname"><a href="classSVF_1_1SelectStmt.html">SVF::SelectStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00839">SVFStatements.h:839</a></div></div>
878
+ <div class="ttc" id="aclassSVF_1_1SelectStmt_html"><div class="ttname"><a href="classSVF_1_1SelectStmt.html">SVF::SelectStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00881">SVFStatements.h:881</a></div></div>
877
879
  <div class="ttc" id="aclassSVF_1_1ConstraintNode_html_a4d413d64bf554ecdc72709afeeb85775"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a4d413d64bf554ecdc72709afeeb85775">SVF::ConstraintNode::copyInEdges</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy copyInEdges</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00060">ConsGNode.h:60</a></div></div>
878
- <div class="ttc" id="aclassSVF_1_1RetPE_html"><div class="ttname"><a href="classSVF_1_1RetPE.html">SVF::RetPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00628">SVFStatements.h:628</a></div></div>
880
+ <div class="ttc" id="aclassSVF_1_1RetPE_html"><div class="ttname"><a href="classSVF_1_1RetPE.html">SVF::RetPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00670">SVFStatements.h:670</a></div></div>
879
881
  <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>
880
882
  <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>
881
883
  <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>
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>
884
+ <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#l00655">ConsG.cpp:655</a></div></div>
883
885
  <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>
884
886
  <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>
885
887
  <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>
886
888
  <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>
887
889
  <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>
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#l00568">SVFStatements.h:568</a></div></div>
890
+ <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#l00610">SVFStatements.h:610</a></div></div>
889
891
  <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>
890
892
  <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>
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>
893
+ <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#l00422">ConsG.cpp:422</a></div></div>
892
894
  <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>
895
+ <div class="ttc" id="aclassSVF_1_1CopyStmt_html_a8d6022251e0206d91bb7118fb98934aa"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#a8d6022251e0206d91bb7118fb98934aa">SVF::CopyStmt::isBitCast</a></div><div class="ttdeci">bool isBitCast() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00411">SVFStatements.h:411</a></div></div>
893
896
  <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>
894
897
  <div class="ttc" id="aOptions_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
895
898
  <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>
896
899
  <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>
897
900
  <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>
898
901
  <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>
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#l01248">SVFStatements.h:1248</a></div></div>
902
+ <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#l00854">ConsG.cpp:854</a></div></div>
903
+ <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#l01290">SVFStatements.h:1290</a></div></div>
901
904
  <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>
902
905
  <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>
903
906
  <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>
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#l00410">SVFStatements.h:410</a></div></div>
907
+ <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#l00452">SVFStatements.h:452</a></div></div>
905
908
  <div class="ttc" id="acJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
906
909
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a37cfa2aa4e7b98ef9dc8179f581a2362"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVF::SVFIR::getPAG</a></div><div class="ttdeci">static SVFIR * getPAG(bool buildFromFile=false)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00114">SVFIR.h:114</a></div></div>
907
910
  <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a1cb9124b29720e7a5b39d83419f9cc17"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a1cb9124b29720e7a5b39d83419f9cc17">SVF::ConstraintGraph::LoadCGEdgeSet</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy LoadCGEdgeSet</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00063">ConsG.h:63</a></div></div>
908
911
  <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>
909
912
  <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>
910
913
  <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>
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>
914
+ <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#l00580">ConsG.cpp:580</a></div></div>
912
915
  <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>
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#l00514">SVFStatements.h:514</a></div></div>
916
+ <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#l00556">SVFStatements.h:556</a></div></div>
914
917
  <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>
915
918
  <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>
916
919
  <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>
917
920
  <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>
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>
921
+ <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#l00368">ConsG.cpp:368</a></div></div>
919
922
  <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>
920
923
  <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>
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>
924
+ <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#l00736">ConsG.cpp:736</a></div></div>
925
+ <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#l00435">ConsG.cpp:435</a></div></div>
926
+ <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#l00150">ConsG.cpp:150</a></div></div>
924
927
  <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>
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>
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#l00752">SVFStatements.h:752</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>
928
+ <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#l00191">ConsG.cpp:191</a></div></div>
929
+ <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#l00794">SVFStatements.h:794</a></div></div>
930
+ <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#l00256">ConsG.cpp:256</a></div></div>
928
931
  <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>
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>
932
+ <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#l00671">ConsG.cpp:671</a></div></div>
930
933
  <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>
931
934
  <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="GeneralType_8h_source.html#l00056">GeneralType.h:56</a></div></div>
932
935
  <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>
@@ -934,52 +937,52 @@ $(function() {
934
937
  <div class="ttc" id="aclassSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375a20d6a102ddc06257a822ffffcc5a3b47"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a20d6a102ddc06257a822ffffcc5a3b47">SVF::ConstraintEdge::Store</a></div><div class="ttdeci">@ Store</div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
935
938
  <div class="ttc" id="aclassSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
936
939
  <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html">SVF::ConstraintGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00044">ConsG.h:44</a></div></div>
937
- <div class="ttc" id="aclassSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00447">SVFStatements.h:447</a></div></div>
940
+ <div class="ttc" id="aclassSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00489">SVFStatements.h:489</a></div></div>
938
941
  <div class="ttc" id="aclassSVF_1_1ConstraintGraph_html_a0f9d5eef25827ac1d380e5d8bd225025"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a0f9d5eef25827ac1d380e5d8bd225025">SVF::ConstraintGraph::StoreCGEdgeSet</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy StoreCGEdgeSet</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00064">ConsG.h:64</a></div></div>
939
942
  <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>
940
943
  <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>
941
944
  <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>
942
945
  <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>
943
946
  <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>
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>
947
+ <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#l00663">ConsG.cpp:663</a></div></div>
945
948
  <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>
946
949
  <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>
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>
950
+ <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#l00782">ConsG.cpp:782</a></div></div>
948
951
  <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#l00235">Options.h:235</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>
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#l00484">SVFStatements.h:484</a></div></div>
952
+ <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#l00648">ConsG.cpp:648</a></div></div>
953
+ <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#l00526">SVFStatements.h:526</a></div></div>
951
954
  <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>
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>
955
+ <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#l00298">ConsG.cpp:298</a></div></div>
953
956
  <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>
954
957
  <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>
955
958
  <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>
956
959
  <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>
957
960
  <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>
958
961
  <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>
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>
962
+ <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#l00821">ConsG.cpp:821</a></div></div>
960
963
  <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>
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>
964
+ <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#l00277">ConsG.cpp:277</a></div></div>
962
965
  <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#l00931">LLVMUtil.cpp:931</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>
966
+ <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#l00730">ConsG.cpp:730</a></div></div>
964
967
  <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#l00247">Options.h:247</a></div></div>
965
968
  <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>
966
969
  <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>
967
970
  <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#l00228">Options.h:228</a></div></div>
968
971
  <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>
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>
972
+ <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#l00521">ConsG.cpp:521</a></div></div>
970
973
  <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>
971
974
  <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>
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#l01207">SVFStatements.h:1207</a></div></div>
975
+ <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#l01249">SVFStatements.h:1249</a></div></div>
973
976
  <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>
974
977
  <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>
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>
978
+ <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#l00463">ConsG.cpp:463</a></div></div>
976
979
  <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>
977
980
  <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>
978
981
  <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>
979
982
  <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>
980
983
  <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>
981
984
  <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>
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>
985
+ <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#l00588">ConsG.cpp:588</a></div></div>
983
986
  <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>
984
987
  <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>
985
988
  <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>
@@ -995,9 +998,9 @@ $(function() {
995
998
  <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>
996
999
  <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="GeneralType_8h_source.html#l00046">GeneralType.h:46</a></div></div>
997
1000
  <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>
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>
1001
+ <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#l00169">ConsG.cpp:169</a></div></div>
999
1002
  <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>
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>
1003
+ <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#l00749">ConsG.cpp:749</a></div></div>
1001
1004
  <!-- start footer part -->
1002
1005
  <hr class="footer"/><address class="footer"><small>
1003
1006
  Generated by &#160;<a href="http://www.doxygen.org/index.html">