svf-tools 1.0.745 → 1.0.747

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 (270) hide show
  1. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +4 -4
  3. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +4 -4
  5. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +111 -110
  9. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h_source.html +2 -2
  10. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1180 -1101
  11. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +45 -41
  12. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  13. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/html/Options_8cpp_source.html +228 -225
  15. package/SVF-doxygen/html/html/Options_8h_source.html +46 -44
  16. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +501 -499
  18. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +17 -17
  19. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -2
  21. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
  22. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +2 -2
  23. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +4 -4
  24. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
  25. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +4 -4
  26. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +1 -1
  27. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +108 -107
  28. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +59 -57
  29. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1224 -1085
  30. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
  31. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +89 -88
  32. package/SVF-doxygen/html/html/classSVF_1_1Options.html +43 -17
  33. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +1 -1
  34. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +480 -478
  35. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
  36. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +2 -2
  37. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +4 -4
  38. package/SVF-doxygen/html/html/functions_c.html +20 -17
  39. package/SVF-doxygen/html/html/functions_e.html +5 -2
  40. package/SVF-doxygen/html/html/functions_func_c.html +14 -11
  41. package/SVF-doxygen/html/html/functions_func_l.html +4 -1
  42. package/SVF-doxygen/html/html/functions_l.html +3 -0
  43. package/SVF-doxygen/html/html/functions_n.html +4 -4
  44. package/SVF-doxygen/html/html/functions_o.html +13 -13
  45. package/SVF-doxygen/html/html/functions_p.html +15 -17
  46. package/SVF-doxygen/html/html/functions_r.html +2 -2
  47. package/SVF-doxygen/html/html/functions_s.html +12 -12
  48. package/SVF-doxygen/html/html/functions_v.html +6 -6
  49. package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
  50. package/SVF-doxygen/html/html/functions_w.html +9 -9
  51. package/SVF-doxygen/html/html/search/all_10.js +323 -323
  52. package/SVF-doxygen/html/html/search/all_11.js +208 -208
  53. package/SVF-doxygen/html/html/search/all_12.js +546 -546
  54. package/SVF-doxygen/html/html/search/all_13.js +189 -189
  55. package/SVF-doxygen/html/html/search/all_14.js +66 -66
  56. package/SVF-doxygen/html/html/search/all_15.js +170 -170
  57. package/SVF-doxygen/html/html/search/all_16.js +60 -60
  58. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  59. package/SVF-doxygen/html/html/search/all_18.js +1 -1
  60. package/SVF-doxygen/html/html/search/all_19.js +10 -10
  61. package/SVF-doxygen/html/html/search/all_1a.js +169 -169
  62. package/SVF-doxygen/html/html/search/all_3.js +100 -99
  63. package/SVF-doxygen/html/html/search/all_4.js +228 -228
  64. package/SVF-doxygen/html/html/search/all_5.js +156 -155
  65. package/SVF-doxygen/html/html/search/all_6.js +221 -221
  66. package/SVF-doxygen/html/html/search/all_7.js +1012 -1012
  67. package/SVF-doxygen/html/html/search/all_8.js +192 -192
  68. package/SVF-doxygen/html/html/search/all_9.js +597 -597
  69. package/SVF-doxygen/html/html/search/all_a.js +47 -47
  70. package/SVF-doxygen/html/html/search/all_b.js +26 -26
  71. package/SVF-doxygen/html/html/search/all_c.js +113 -112
  72. package/SVF-doxygen/html/html/search/all_d.js +196 -196
  73. package/SVF-doxygen/html/html/search/all_e.js +206 -206
  74. package/SVF-doxygen/html/html/search/all_f.js +122 -122
  75. package/SVF-doxygen/html/html/search/classes_0.js +26 -26
  76. package/SVF-doxygen/html/html/search/classes_1.js +9 -9
  77. package/SVF-doxygen/html/html/search/classes_10.js +73 -73
  78. package/SVF-doxygen/html/html/search/classes_11.js +15 -15
  79. package/SVF-doxygen/html/html/search/classes_12.js +2 -2
  80. package/SVF-doxygen/html/html/search/classes_13.js +10 -10
  81. package/SVF-doxygen/html/html/search/classes_14.js +14 -14
  82. package/SVF-doxygen/html/html/search/classes_15.js +1 -1
  83. package/SVF-doxygen/html/html/search/classes_2.js +76 -76
  84. package/SVF-doxygen/html/html/search/classes_3.js +35 -35
  85. package/SVF-doxygen/html/html/search/classes_4.js +10 -10
  86. package/SVF-doxygen/html/html/search/classes_5.js +27 -27
  87. package/SVF-doxygen/html/html/search/classes_6.js +98 -98
  88. package/SVF-doxygen/html/html/search/classes_7.js +33 -33
  89. package/SVF-doxygen/html/html/search/classes_8.js +56 -56
  90. package/SVF-doxygen/html/html/search/classes_9.js +1 -1
  91. package/SVF-doxygen/html/html/search/classes_a.js +12 -12
  92. package/SVF-doxygen/html/html/search/classes_b.js +29 -29
  93. package/SVF-doxygen/html/html/search/classes_c.js +6 -6
  94. package/SVF-doxygen/html/html/search/classes_d.js +19 -19
  95. package/SVF-doxygen/html/html/search/classes_e.js +35 -35
  96. package/SVF-doxygen/html/html/search/classes_f.js +25 -25
  97. package/SVF-doxygen/html/html/search/defines_0.js +3 -3
  98. package/SVF-doxygen/html/html/search/defines_1.js +2 -2
  99. package/SVF-doxygen/html/html/search/defines_2.js +30 -30
  100. package/SVF-doxygen/html/html/search/defines_3.js +20 -20
  101. package/SVF-doxygen/html/html/search/defines_4.js +3 -3
  102. package/SVF-doxygen/html/html/search/defines_5.js +4 -4
  103. package/SVF-doxygen/html/html/search/defines_6.js +2 -2
  104. package/SVF-doxygen/html/html/search/defines_7.js +5 -5
  105. package/SVF-doxygen/html/html/search/defines_8.js +13 -13
  106. package/SVF-doxygen/html/html/search/defines_9.js +9 -9
  107. package/SVF-doxygen/html/html/search/defines_a.js +2 -2
  108. package/SVF-doxygen/html/html/search/defines_b.js +2 -2
  109. package/SVF-doxygen/html/html/search/defines_c.js +2 -2
  110. package/SVF-doxygen/html/html/search/defines_d.js +6 -6
  111. package/SVF-doxygen/html/html/search/defines_e.js +3 -3
  112. package/SVF-doxygen/html/html/search/enums_0.js +3 -3
  113. package/SVF-doxygen/html/html/search/enums_1.js +1 -1
  114. package/SVF-doxygen/html/html/search/enums_10.js +1 -1
  115. package/SVF-doxygen/html/html/search/enums_11.js +1 -1
  116. package/SVF-doxygen/html/html/search/enums_2.js +8 -8
  117. package/SVF-doxygen/html/html/search/enums_3.js +1 -1
  118. package/SVF-doxygen/html/html/search/enums_4.js +4 -4
  119. package/SVF-doxygen/html/html/search/enums_5.js +1 -1
  120. package/SVF-doxygen/html/html/search/enums_6.js +2 -2
  121. package/SVF-doxygen/html/html/search/enums_7.js +2 -2
  122. package/SVF-doxygen/html/html/search/enums_8.js +4 -4
  123. package/SVF-doxygen/html/html/search/enums_9.js +1 -1
  124. package/SVF-doxygen/html/html/search/enums_a.js +2 -2
  125. package/SVF-doxygen/html/html/search/enums_b.js +7 -7
  126. package/SVF-doxygen/html/html/search/enums_c.js +1 -1
  127. package/SVF-doxygen/html/html/search/enums_d.js +4 -4
  128. package/SVF-doxygen/html/html/search/enums_e.js +2 -2
  129. package/SVF-doxygen/html/html/search/enums_f.js +4 -4
  130. package/SVF-doxygen/html/html/search/enumvalues_0.js +14 -14
  131. package/SVF-doxygen/html/html/search/enumvalues_1.js +13 -13
  132. package/SVF-doxygen/html/html/search/enumvalues_10.js +35 -35
  133. package/SVF-doxygen/html/html/search/enumvalues_11.js +3 -3
  134. package/SVF-doxygen/html/html/search/enumvalues_12.js +10 -10
  135. package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
  136. package/SVF-doxygen/html/html/search/enumvalues_14.js +1 -1
  137. package/SVF-doxygen/html/html/search/enumvalues_15.js +3 -3
  138. package/SVF-doxygen/html/html/search/enumvalues_2.js +40 -40
  139. package/SVF-doxygen/html/html/search/enumvalues_3.js +13 -13
  140. package/SVF-doxygen/html/html/search/enumvalues_4.js +34 -34
  141. package/SVF-doxygen/html/html/search/enumvalues_5.js +47 -47
  142. package/SVF-doxygen/html/html/search/enumvalues_6.js +6 -6
  143. package/SVF-doxygen/html/html/search/enumvalues_7.js +9 -9
  144. package/SVF-doxygen/html/html/search/enumvalues_8.js +23 -23
  145. package/SVF-doxygen/html/html/search/enumvalues_9.js +6 -6
  146. package/SVF-doxygen/html/html/search/enumvalues_a.js +17 -17
  147. package/SVF-doxygen/html/html/search/enumvalues_b.js +11 -11
  148. package/SVF-doxygen/html/html/search/enumvalues_c.js +6 -6
  149. package/SVF-doxygen/html/html/search/enumvalues_d.js +16 -16
  150. package/SVF-doxygen/html/html/search/enumvalues_e.js +11 -11
  151. package/SVF-doxygen/html/html/search/enumvalues_f.js +45 -45
  152. package/SVF-doxygen/html/html/search/files_0.js +13 -13
  153. package/SVF-doxygen/html/html/search/files_1.js +7 -7
  154. package/SVF-doxygen/html/html/search/files_10.js +8 -8
  155. package/SVF-doxygen/html/html/search/files_11.js +8 -8
  156. package/SVF-doxygen/html/html/search/files_12.js +2 -2
  157. package/SVF-doxygen/html/html/search/files_2.js +50 -50
  158. package/SVF-doxygen/html/html/search/files_3.js +14 -14
  159. package/SVF-doxygen/html/html/search/files_4.js +4 -4
  160. package/SVF-doxygen/html/html/search/files_5.js +13 -13
  161. package/SVF-doxygen/html/html/search/files_6.js +9 -9
  162. package/SVF-doxygen/html/html/search/files_7.js +14 -14
  163. package/SVF-doxygen/html/html/search/files_8.js +13 -13
  164. package/SVF-doxygen/html/html/search/files_9.js +18 -18
  165. package/SVF-doxygen/html/html/search/files_a.js +3 -3
  166. package/SVF-doxygen/html/html/search/files_b.js +2 -2
  167. package/SVF-doxygen/html/html/search/files_c.js +19 -19
  168. package/SVF-doxygen/html/html/search/files_d.js +4 -4
  169. package/SVF-doxygen/html/html/search/files_e.js +62 -62
  170. package/SVF-doxygen/html/html/search/files_f.js +8 -8
  171. package/SVF-doxygen/html/html/search/functions_0.js +351 -351
  172. package/SVF-doxygen/html/html/search/functions_1.js +80 -80
  173. package/SVF-doxygen/html/html/search/functions_10.js +121 -121
  174. package/SVF-doxygen/html/html/search/functions_11.js +282 -282
  175. package/SVF-doxygen/html/html/search/functions_12.js +55 -55
  176. package/SVF-doxygen/html/html/search/functions_13.js +38 -38
  177. package/SVF-doxygen/html/html/search/functions_14.js +71 -71
  178. package/SVF-doxygen/html/html/search/functions_15.js +29 -29
  179. package/SVF-doxygen/html/html/search/functions_16.js +2 -2
  180. package/SVF-doxygen/html/html/search/functions_17.js +169 -169
  181. package/SVF-doxygen/html/html/search/functions_2.js +251 -250
  182. package/SVF-doxygen/html/html/search/functions_3.js +72 -72
  183. package/SVF-doxygen/html/html/search/functions_4.js +55 -55
  184. package/SVF-doxygen/html/html/search/functions_5.js +54 -54
  185. package/SVF-doxygen/html/html/search/functions_6.js +832 -832
  186. package/SVF-doxygen/html/html/search/functions_7.js +144 -144
  187. package/SVF-doxygen/html/html/search/functions_8.js +417 -417
  188. package/SVF-doxygen/html/html/search/functions_9.js +29 -29
  189. package/SVF-doxygen/html/html/search/functions_a.js +2 -2
  190. package/SVF-doxygen/html/html/search/functions_b.js +23 -22
  191. package/SVF-doxygen/html/html/search/functions_c.js +75 -75
  192. package/SVF-doxygen/html/html/search/functions_d.js +35 -35
  193. package/SVF-doxygen/html/html/search/functions_e.js +56 -56
  194. package/SVF-doxygen/html/html/search/functions_f.js +142 -142
  195. package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
  196. package/SVF-doxygen/html/html/search/namespaces_1.js +7 -7
  197. package/SVF-doxygen/html/html/search/related_0.js +2 -2
  198. package/SVF-doxygen/html/html/search/related_1.js +1 -1
  199. package/SVF-doxygen/html/html/search/related_2.js +2 -2
  200. package/SVF-doxygen/html/html/search/related_3.js +2 -2
  201. package/SVF-doxygen/html/html/search/related_4.js +2 -2
  202. package/SVF-doxygen/html/html/search/related_5.js +1 -1
  203. package/SVF-doxygen/html/html/search/related_6.js +2 -2
  204. package/SVF-doxygen/html/html/search/related_7.js +4 -4
  205. package/SVF-doxygen/html/html/search/related_8.js +2 -2
  206. package/SVF-doxygen/html/html/search/related_9.js +4 -4
  207. package/SVF-doxygen/html/html/search/related_a.js +19 -19
  208. package/SVF-doxygen/html/html/search/related_b.js +4 -4
  209. package/SVF-doxygen/html/html/search/related_c.js +1 -1
  210. package/SVF-doxygen/html/html/search/related_d.js +11 -11
  211. package/SVF-doxygen/html/html/search/related_e.js +2 -2
  212. package/SVF-doxygen/html/html/search/related_f.js +2 -2
  213. package/SVF-doxygen/html/html/search/typedefs_0.js +18 -18
  214. package/SVF-doxygen/html/html/search/typedefs_1.js +25 -25
  215. package/SVF-doxygen/html/html/search/typedefs_10.js +60 -60
  216. package/SVF-doxygen/html/html/search/typedefs_11.js +13 -13
  217. package/SVF-doxygen/html/html/search/typedefs_12.js +11 -11
  218. package/SVF-doxygen/html/html/search/typedefs_13.js +35 -35
  219. package/SVF-doxygen/html/html/search/typedefs_14.js +8 -8
  220. package/SVF-doxygen/html/html/search/typedefs_2.js +126 -126
  221. package/SVF-doxygen/html/html/search/typedefs_3.js +39 -39
  222. package/SVF-doxygen/html/html/search/typedefs_4.js +16 -16
  223. package/SVF-doxygen/html/html/search/typedefs_5.js +41 -41
  224. package/SVF-doxygen/html/html/search/typedefs_6.js +52 -52
  225. package/SVF-doxygen/html/html/search/typedefs_7.js +40 -40
  226. package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
  227. package/SVF-doxygen/html/html/search/typedefs_9.js +6 -6
  228. package/SVF-doxygen/html/html/search/typedefs_a.js +29 -29
  229. package/SVF-doxygen/html/html/search/typedefs_b.js +29 -29
  230. package/SVF-doxygen/html/html/search/typedefs_c.js +40 -40
  231. package/SVF-doxygen/html/html/search/typedefs_d.js +15 -15
  232. package/SVF-doxygen/html/html/search/typedefs_e.js +52 -52
  233. package/SVF-doxygen/html/html/search/typedefs_f.js +14 -14
  234. package/SVF-doxygen/html/html/search/variables_0.js +146 -146
  235. package/SVF-doxygen/html/html/search/variables_1.js +74 -74
  236. package/SVF-doxygen/html/html/search/variables_10.js +97 -97
  237. package/SVF-doxygen/html/html/search/variables_11.js +46 -46
  238. package/SVF-doxygen/html/html/search/variables_12.js +93 -93
  239. package/SVF-doxygen/html/html/search/variables_13.js +77 -77
  240. package/SVF-doxygen/html/html/search/variables_14.js +14 -14
  241. package/SVF-doxygen/html/html/search/variables_15.js +48 -48
  242. package/SVF-doxygen/html/html/search/variables_16.js +9 -9
  243. package/SVF-doxygen/html/html/search/variables_17.js +1 -1
  244. package/SVF-doxygen/html/html/search/variables_18.js +2 -2
  245. package/SVF-doxygen/html/html/search/variables_2.js +35 -35
  246. package/SVF-doxygen/html/html/search/variables_3.js +148 -148
  247. package/SVF-doxygen/html/html/search/variables_4.js +56 -56
  248. package/SVF-doxygen/html/html/search/variables_5.js +40 -39
  249. package/SVF-doxygen/html/html/search/variables_6.js +67 -67
  250. package/SVF-doxygen/html/html/search/variables_7.js +33 -33
  251. package/SVF-doxygen/html/html/search/variables_8.js +7 -7
  252. package/SVF-doxygen/html/html/search/variables_9.js +77 -77
  253. package/SVF-doxygen/html/html/search/variables_a.js +4 -4
  254. package/SVF-doxygen/html/html/search/variables_b.js +10 -10
  255. package/SVF-doxygen/html/html/search/variables_c.js +45 -45
  256. package/SVF-doxygen/html/html/search/variables_d.js +56 -56
  257. package/SVF-doxygen/html/html/search/variables_e.js +123 -123
  258. package/SVF-doxygen/html/html/search/variables_f.js +33 -33
  259. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  260. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
  261. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +1 -1
  262. package/SVF-doxygen/html/html/svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
  263. package/SVF-doxygen/html/html/svf_2include_2MTA_2MTAResultValidator_8h_source.html +1 -1
  264. package/package.json +1 -1
  265. package/svf/include/Util/Options.h +1 -0
  266. package/svf/lib/Util/Options.cpp +4 -2
  267. package/svf-llvm/include/SVF-LLVM/LLVMModule.h +2 -0
  268. package/svf-llvm/lib/LLVMLoopAnalysis.cpp +1 -0
  269. package/svf-llvm/lib/LLVMModule.cpp +155 -73
  270. package/svf-llvm/lib/SVFIRBuilder.cpp +1 -0
@@ -120,113 +120,114 @@ $(function() {
120
120
  <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div>
121
121
  <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = &amp;*<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>;</div>
122
122
  <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(func);</div>
123
- <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// do not analyze external call</span></div>
124
- <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(svffun)) <span class="keywordflow">continue</span>;</div>
125
- <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; DT.recalculate(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp;<span class="keyword">&gt;</span>(*func));</div>
126
- <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; llvm::LoopInfoBase&lt;llvm::BasicBlock, llvm::Loop&gt; loopInfo;</div>
127
- <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; std::vector&lt;const Loop*&gt; llvmLoops;</div>
128
- <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; loopInfo.analyze(DT);</div>
129
- <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;loop: loopInfo)</div>
130
- <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div>
131
- <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; loop_stack.push_back(loop);</div>
132
- <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div>
133
- <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="comment">// pre-order traversal on loop-subloop tree</span></div>
134
- <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">while</span> (!loop_stack.empty())</div>
135
- <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div>
136
- <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a> *loop = loop_stack.<a class="code" href="classSVF_1_1SVFFunction.html#a60797e9e8b9cbd6b32cc71fa5d00d80c">back</a>();</div>
137
- <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; loop_stack.pop_back();</div>
138
- <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; llvmLoops.push_back(loop);</div>
139
- <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;subloop: loop-&gt;getSubLoops())</div>
140
- <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div>
141
- <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; loop_stack.push_back(subloop);</div>
142
- <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div>
143
- <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div>
144
- <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; buildSVFLoops(icfg, llvmLoops);</div>
145
- <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div>
146
- <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div>
147
- <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;}</div>
148
- <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; </div>
149
- <div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMLoopAnalysis.html#a17e4805c2db146430c58af35625a388d"> 87</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LLVMLoopAnalysis.html#a17e4805c2db146430c58af35625a388d">LLVMLoopAnalysis::build</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg)</div>
150
- <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div>
151
- <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; std::vector&lt;const Loop *&gt; llvmLoops;</div>
152
- <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; buildLLVMLoops(<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-&gt;getModule(), icfg);</div>
153
- <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;}</div>
154
- <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; </div>
155
- <div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMLoopAnalysis.html#ad036bf2b7354dd106edce47939b64c78"> 98</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LLVMLoopAnalysis.html#ad036bf2b7354dd106edce47939b64c78">LLVMLoopAnalysis::buildSVFLoops</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg, std::vector&lt;const Loop *&gt; &amp;llvmLoops)</div>
156
- <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;{</div>
157
- <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;llvmLoop: llvmLoops)</div>
158
- <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div>
159
- <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;loop name: &quot;</span> &lt;&lt; llvmLoop-&gt;getName().data() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
160
- <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="comment">// count all node id in loop</span></div>
161
- <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;ICFGNode *&gt;</a> loop_ids;</div>
162
- <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const ICFGNode *&gt;</a> <a class="code" href="namespaceSVF.html#ae6c7046834fe00382052ece7d06eb0ac">nodes</a>;</div>
163
- <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;BB: llvmLoop-&gt;getBlocks())</div>
164
- <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div>
165
- <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;ins: *BB)</div>
166
- <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div>
167
- <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&amp;ins);</div>
168
- <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; loop_ids.insert(icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfInst));</div>
169
- <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="namespaceSVF.html#ae6c7046834fe00382052ece7d06eb0ac">nodes</a>.insert(icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfInst));</div>
170
- <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div>
171
- <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div>
172
- <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="classSVF_1_1SVFLoop.html">SVFLoop</a> *svf_loop = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFLoop.html">SVFLoop</a>(<a class="code" href="namespaceSVF.html#ae6c7046834fe00382052ece7d06eb0ac">nodes</a>, <a class="code" href="classSVF_1_1Options.html#a17f11eb3e9a3178395e8574a027b181e">Options::LoopBound</a>());</div>
173
- <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;node: <a class="code" href="namespaceSVF.html#ae6c7046834fe00382052ece7d06eb0ac">nodes</a>)</div>
174
- <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div>
175
- <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a8cecaf4341ad2f943dc040c8e6d0dec4">addNodeToSVFLoop</a>(node, svf_loop);</div>
176
- <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div>
177
- <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">// mark loop header&#39;s first inst</span></div>
178
- <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* header_blk = llvmLoop-&gt;getHeader();</div>
179
- <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> &amp;in_ins = *header_blk-&gt;begin();</div>
180
- <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&amp;in_ins);</div>
181
- <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *in_node = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfInInst);</div>
182
- <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;edge: in_node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>())</div>
183
- <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div>
184
- <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (loop_ids.find(edge-&gt;getSrcNode()) == loop_ids.end())</div>
185
- <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div>
186
- <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="comment">// entry edge</span></div>
187
- <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; svf_loop-&gt;<a class="code" href="classSVF_1_1SVFLoop.html#a774d05838ad9b3cac8d2fb6d7b7edd00">addEntryICFGEdge</a>(edge);</div>
188
- <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; entry edge: &quot;</span> &lt;&lt; edge-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
189
- <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div>
190
- <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">else</span></div>
191
- <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; {</div>
192
- <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// back edge</span></div>
193
- <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; svf_loop-&gt;<a class="code" href="classSVF_1_1SVFLoop.html#a03c6de676a1d8f99687ea973b9b25d58">addBackICFGEdge</a>(edge);</div>
194
- <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; back edge: &quot;</span> &lt;&lt; edge-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
195
- <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div>
196
- <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div>
197
- <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">// handle in edge</span></div>
198
- <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">llvm::Instruction</a> &amp;br_ins = header_blk-&gt;back();</div>
199
- <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfBrInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&amp;br_ins);</div>
200
- <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *br_node = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfBrInst);</div>
201
- <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;edge: br_node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>())</div>
202
- <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {</div>
203
- <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">if</span> (loop_ids.find(edge-&gt;getDstNode()) != loop_ids.end())</div>
204
- <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div>
205
- <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; svf_loop-&gt;<a class="code" href="classSVF_1_1SVFLoop.html#ae55b0dee93fb4298a1544d09312a258d">addInICFGEdge</a>(edge);</div>
206
- <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; in edge: &quot;</span> &lt;&lt; edge-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
207
- <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div>
208
- <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">else</span></div>
209
- <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div>
210
- <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">continue</span>;</div>
211
- <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div>
212
- <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div>
213
- <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="comment">// mark loop end&#39;s first inst</span></div>
214
- <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; llvm::SmallVector&lt;BasicBlock*, 8&gt; ExitBlocks;</div>
215
- <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; llvmLoop-&gt;getExitBlocks(ExitBlocks);</div>
216
- <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; exit_blk: ExitBlocks)</div>
217
- <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div>
218
- <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; assert(!exit_blk-&gt;empty() &amp;&amp; <span class="stringliteral">&quot;exit block is empty?&quot;</span>);</div>
219
- <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">llvm::Instruction</a> &amp;out_ins = *exit_blk-&gt;begin();</div>
220
- <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfOutInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&amp;out_ins);</div>
221
- <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *out_node = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfOutInst);</div>
222
- <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;edge: out_node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>())</div>
223
- <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; {</div>
224
- <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; svf_loop-&gt;<a class="code" href="classSVF_1_1SVFLoop.html#a585d03a1ba76d63ae1dfa689b23b9835">addOutICFGEdge</a>(edge);</div>
225
- <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; out edge: &quot;</span> &lt;&lt; edge-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
226
- <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div>
227
- <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div>
228
- <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div>
229
- <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;}</div>
123
+ <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span> (func-&gt;isDeclaration()) <span class="keywordflow">continue</span>;</div>
124
+ <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">// do not analyze external call</span></div>
125
+ <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(svffun)) <span class="keywordflow">continue</span>;</div>
126
+ <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; DT.recalculate(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp;<span class="keyword">&gt;</span>(*func));</div>
127
+ <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; llvm::LoopInfoBase&lt;llvm::BasicBlock, llvm::Loop&gt; loopInfo;</div>
128
+ <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; std::vector&lt;const Loop*&gt; llvmLoops;</div>
129
+ <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; loopInfo.analyze(DT);</div>
130
+ <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;loop: loopInfo)</div>
131
+ <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; {</div>
132
+ <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; loop_stack.push_back(loop);</div>
133
+ <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div>
134
+ <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="comment">// pre-order traversal on loop-subloop tree</span></div>
135
+ <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">while</span> (!loop_stack.empty())</div>
136
+ <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div>
137
+ <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a> *loop = loop_stack.<a class="code" href="classSVF_1_1SVFFunction.html#a60797e9e8b9cbd6b32cc71fa5d00d80c">back</a>();</div>
138
+ <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; loop_stack.pop_back();</div>
139
+ <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; llvmLoops.push_back(loop);</div>
140
+ <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;subloop: loop-&gt;getSubLoops())</div>
141
+ <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div>
142
+ <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; loop_stack.push_back(subloop);</div>
143
+ <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div>
144
+ <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div>
145
+ <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; buildSVFLoops(icfg, llvmLoops);</div>
146
+ <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div>
147
+ <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div>
148
+ <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;}</div>
149
+ <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
150
+ <div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMLoopAnalysis.html#a17e4805c2db146430c58af35625a388d"> 88</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LLVMLoopAnalysis.html#a17e4805c2db146430c58af35625a388d">LLVMLoopAnalysis::build</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg)</div>
151
+ <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;{</div>
152
+ <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; std::vector&lt;const Loop *&gt; llvmLoops;</div>
153
+ <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; buildLLVMLoops(<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-&gt;getModule(), icfg);</div>
154
+ <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div>
155
+ <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; </div>
156
+ <div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMLoopAnalysis.html#ad036bf2b7354dd106edce47939b64c78"> 99</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LLVMLoopAnalysis.html#ad036bf2b7354dd106edce47939b64c78">LLVMLoopAnalysis::buildSVFLoops</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg, std::vector&lt;const Loop *&gt; &amp;llvmLoops)</div>
157
+ <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;{</div>
158
+ <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;llvmLoop: llvmLoops)</div>
159
+ <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div>
160
+ <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;loop name: &quot;</span> &lt;&lt; llvmLoop-&gt;getName().data() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
161
+ <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="comment">// count all node id in loop</span></div>
162
+ <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;ICFGNode *&gt;</a> loop_ids;</div>
163
+ <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const ICFGNode *&gt;</a> <a class="code" href="namespaceSVF.html#ae6c7046834fe00382052ece7d06eb0ac">nodes</a>;</div>
164
+ <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;BB: llvmLoop-&gt;getBlocks())</div>
165
+ <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div>
166
+ <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;ins: *BB)</div>
167
+ <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div>
168
+ <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&amp;ins);</div>
169
+ <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; loop_ids.insert(icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfInst));</div>
170
+ <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="namespaceSVF.html#ae6c7046834fe00382052ece7d06eb0ac">nodes</a>.insert(icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfInst));</div>
171
+ <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div>
172
+ <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div>
173
+ <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="classSVF_1_1SVFLoop.html">SVFLoop</a> *svf_loop = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFLoop.html">SVFLoop</a>(<a class="code" href="namespaceSVF.html#ae6c7046834fe00382052ece7d06eb0ac">nodes</a>, <a class="code" href="classSVF_1_1Options.html#a17f11eb3e9a3178395e8574a027b181e">Options::LoopBound</a>());</div>
174
+ <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;node: <a class="code" href="namespaceSVF.html#ae6c7046834fe00382052ece7d06eb0ac">nodes</a>)</div>
175
+ <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div>
176
+ <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a8cecaf4341ad2f943dc040c8e6d0dec4">addNodeToSVFLoop</a>(node, svf_loop);</div>
177
+ <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div>
178
+ <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="comment">// mark loop header&#39;s first inst</span></div>
179
+ <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* header_blk = llvmLoop-&gt;getHeader();</div>
180
+ <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> &amp;in_ins = *header_blk-&gt;begin();</div>
181
+ <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&amp;in_ins);</div>
182
+ <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *in_node = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfInInst);</div>
183
+ <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;edge: in_node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>())</div>
184
+ <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div>
185
+ <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (loop_ids.find(edge-&gt;getSrcNode()) == loop_ids.end())</div>
186
+ <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div>
187
+ <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="comment">// entry edge</span></div>
188
+ <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; svf_loop-&gt;<a class="code" href="classSVF_1_1SVFLoop.html#a774d05838ad9b3cac8d2fb6d7b7edd00">addEntryICFGEdge</a>(edge);</div>
189
+ <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; entry edge: &quot;</span> &lt;&lt; edge-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
190
+ <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div>
191
+ <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">else</span></div>
192
+ <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div>
193
+ <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// back edge</span></div>
194
+ <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; svf_loop-&gt;<a class="code" href="classSVF_1_1SVFLoop.html#a03c6de676a1d8f99687ea973b9b25d58">addBackICFGEdge</a>(edge);</div>
195
+ <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; back edge: &quot;</span> &lt;&lt; edge-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
196
+ <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div>
197
+ <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div>
198
+ <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// handle in edge</span></div>
199
+ <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">llvm::Instruction</a> &amp;br_ins = header_blk-&gt;back();</div>
200
+ <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfBrInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&amp;br_ins);</div>
201
+ <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *br_node = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfBrInst);</div>
202
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;edge: br_node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>())</div>
203
+ <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div>
204
+ <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span> (loop_ids.find(edge-&gt;getDstNode()) != loop_ids.end())</div>
205
+ <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div>
206
+ <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; svf_loop-&gt;<a class="code" href="classSVF_1_1SVFLoop.html#ae55b0dee93fb4298a1544d09312a258d">addInICFGEdge</a>(edge);</div>
207
+ <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; in edge: &quot;</span> &lt;&lt; edge-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
208
+ <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div>
209
+ <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">else</span></div>
210
+ <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div>
211
+ <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">continue</span>;</div>
212
+ <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div>
213
+ <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; }</div>
214
+ <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">// mark loop end&#39;s first inst</span></div>
215
+ <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; llvm::SmallVector&lt;BasicBlock*, 8&gt; ExitBlocks;</div>
216
+ <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; llvmLoop-&gt;getExitBlocks(ExitBlocks);</div>
217
+ <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; exit_blk: ExitBlocks)</div>
218
+ <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div>
219
+ <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; assert(!exit_blk-&gt;empty() &amp;&amp; <span class="stringliteral">&quot;exit block is empty?&quot;</span>);</div>
220
+ <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">llvm::Instruction</a> &amp;out_ins = *exit_blk-&gt;begin();</div>
221
+ <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfOutInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&amp;out_ins);</div>
222
+ <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *out_node = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfOutInst);</div>
223
+ <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;edge: out_node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>())</div>
224
+ <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; {</div>
225
+ <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; svf_loop-&gt;<a class="code" href="classSVF_1_1SVFLoop.html#a585d03a1ba76d63ae1dfa689b23b9835">addOutICFGEdge</a>(edge);</div>
226
+ <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; out edge: &quot;</span> &lt;&lt; edge-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
227
+ <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div>
228
+ <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div>
229
+ <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div>
230
+ <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;}</div>
230
231
  </div><!-- fragment --></div><!-- contents -->
231
232
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00098">LLVMModule.h:98</a></div></div>
232
233
  <div class="ttc" id="anamespaceSVF_html_aecbb42b8e9d17fa0189c50dda9fd5fdd"><div class="ttname"><a href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">SVF::DominatorTree</a></div><div class="ttdeci">llvm::DominatorTree DominatorTree</div><div class="ttdoc">LLVM Dominators.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00131">BasicTypes.h:131</a></div></div>
@@ -241,7 +242,7 @@ $(function() {
241
242
  <div class="ttc" id="anamespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
242
243
  <div class="ttc" id="aLLVMLoopAnalysis_8h_html"><div class="ttname"><a href="LLVMLoopAnalysis_8h.html">LLVMLoopAnalysis.h</a></div></div>
243
244
  <div class="ttc" id="aOptions_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
244
- <div class="ttc" id="aclassSVF_1_1Options_html_a17f11eb3e9a3178395e8574a027b181e"><div class="ttname"><a href="classSVF_1_1Options.html#a17f11eb3e9a3178395e8574a027b181e">SVF::Options::LoopBound</a></div><div class="ttdeci">static const Option&lt; u32_t &gt; LoopBound</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00273">Options.h:273</a></div></div>
245
+ <div class="ttc" id="aclassSVF_1_1Options_html_a17f11eb3e9a3178395e8574a027b181e"><div class="ttname"><a href="classSVF_1_1Options.html#a17f11eb3e9a3178395e8574a027b181e">SVF::Options::LoopBound</a></div><div class="ttdeci">static const Option&lt; u32_t &gt; LoopBound</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00274">Options.h:274</a></div></div>
245
246
  <div class="ttc" id="aclassSVF_1_1SVFLoop_html_a585d03a1ba76d63ae1dfa689b23b9835"><div class="ttname"><a href="classSVF_1_1SVFLoop.html#a585d03a1ba76d63ae1dfa689b23b9835">SVF::SVFLoop::addOutICFGEdge</a></div><div class="ttdeci">void addOutICFGEdge(const ICFGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFLoop_8h_source.html#l00109">SVFLoop.h:109</a></div></div>
246
247
  <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#l00113">SVFIR.h:113</a></div></div>
247
248
  <div class="ttc" id="anamespaceSVF_html_ae6c7046834fe00382052ece7d06eb0ac"><div class="ttname"><a href="namespaceSVF.html#ae6c7046834fe00382052ece7d06eb0ac">SVF::nodes</a></div><div class="ttdeci">iter_range&lt; typename GenericGraphTraits&lt; GraphType &gt;::nodes_iterator &gt; nodes(const GraphType &amp;G)</div><div class="ttdef"><b>Definition:</b> <a href="GraphTraits_8h_source.html#l00111">GraphTraits.h:111</a></div></div>
@@ -254,13 +255,13 @@ $(function() {
254
255
  <div class="ttc" id="aclassSVF_1_1SVFFunction_html_a60797e9e8b9cbd6b32cc71fa5d00d80c"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a60797e9e8b9cbd6b32cc71fa5d00d80c">SVF::SVFFunction::back</a></div><div class="ttdeci">const SVFBasicBlock * back() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00404">SVFValue.h:404</a></div></div>
255
256
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00309">SVFUtil.h:309</a></div></div>
256
257
  <div class="ttc" id="aclassSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00197">GenericGraph.h:197</a></div></div>
257
- <div class="ttc" id="aclassSVF_1_1LLVMLoopAnalysis_html_ad036bf2b7354dd106edce47939b64c78"><div class="ttname"><a href="classSVF_1_1LLVMLoopAnalysis.html#ad036bf2b7354dd106edce47939b64c78">SVF::LLVMLoopAnalysis::buildSVFLoops</a></div><div class="ttdeci">virtual void buildSVFLoops(ICFG *icfg, std::vector&lt; const Loop * &gt; &amp;llvmLoops)</div><div class="ttdoc">Build SVF loops based on llvm loops.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMLoopAnalysis_8cpp_source.html#l00098">LLVMLoopAnalysis.cpp:98</a></div></div>
258
+ <div class="ttc" id="aclassSVF_1_1LLVMLoopAnalysis_html_ad036bf2b7354dd106edce47939b64c78"><div class="ttname"><a href="classSVF_1_1LLVMLoopAnalysis.html#ad036bf2b7354dd106edce47939b64c78">SVF::LLVMLoopAnalysis::buildSVFLoops</a></div><div class="ttdeci">virtual void buildSVFLoops(ICFG *icfg, std::vector&lt; const Loop * &gt; &amp;llvmLoops)</div><div class="ttdoc">Build SVF loops based on llvm loops.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMLoopAnalysis_8cpp_source.html#l00099">LLVMLoopAnalysis.cpp:99</a></div></div>
258
259
  <div class="ttc" id="aclassSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
259
260
  <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>
260
261
  <div class="ttc" id="aclassSVF_1_1SVFLoop_html_ae55b0dee93fb4298a1544d09312a258d"><div class="ttname"><a href="classSVF_1_1SVFLoop.html#ae55b0dee93fb4298a1544d09312a258d">SVF::SVFLoop::addInICFGEdge</a></div><div class="ttdeci">void addInICFGEdge(const ICFGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFLoop_8h_source.html#l00139">SVFLoop.h:139</a></div></div>
261
262
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae74f307b6f96950ceedb2c375ef1c3a3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">SVF::LLVMModuleSet::getSVFInstruction</a></div><div class="ttdeci">SVFInstruction * getSVFInstruction(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00209">LLVMModule.h:209</a></div></div>
262
263
  <div class="ttc" id="anamespaceSVF_html_abf85e29310b2e4df8925d00a5c081314"><div class="ttname"><a href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">SVF::Loop</a></div><div class="ttdeci">llvm::Loop Loop</div><div class="ttdoc">LLVM Loop.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00138">BasicTypes.h:138</a></div></div>
263
- <div class="ttc" id="aclassSVF_1_1LLVMLoopAnalysis_html_a17e4805c2db146430c58af35625a388d"><div class="ttname"><a href="classSVF_1_1LLVMLoopAnalysis.html#a17e4805c2db146430c58af35625a388d">SVF::LLVMLoopAnalysis::build</a></div><div class="ttdeci">virtual void build(ICFG *icfg)</div><div class="ttdoc">Start from here.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMLoopAnalysis_8cpp_source.html#l00087">LLVMLoopAnalysis.cpp:87</a></div></div>
264
+ <div class="ttc" id="aclassSVF_1_1LLVMLoopAnalysis_html_a17e4805c2db146430c58af35625a388d"><div class="ttname"><a href="classSVF_1_1LLVMLoopAnalysis.html#a17e4805c2db146430c58af35625a388d">SVF::LLVMLoopAnalysis::build</a></div><div class="ttdeci">virtual void build(ICFG *icfg)</div><div class="ttdoc">Start from here.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMLoopAnalysis_8cpp_source.html#l00088">LLVMLoopAnalysis.cpp:88</a></div></div>
264
265
  <div class="ttc" id="aclassSVF_1_1ICFG_html"><div class="ttname"><a href="classSVF_1_1ICFG.html">SVF::ICFG</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00047">ICFG.h:47</a></div></div>
265
266
  <div class="ttc" id="aSVFFileSystem_8cpp_html_ab25baccb41e3b67ef0bfdaa1336c9649"><div class="ttname"><a href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a></div><div class="ttdeci">#define F(f)</div></div>
266
267
  <div class="ttc" id="aclassSVF_1_1LLVMLoopAnalysis_html_abb501d497067af4365e5108d27387623"><div class="ttname"><a href="classSVF_1_1LLVMLoopAnalysis.html#abb501d497067af4365e5108d27387623">SVF::LLVMLoopAnalysis::buildLLVMLoops</a></div><div class="ttdeci">virtual void buildLLVMLoops(SVFModule *mod, ICFG *icfg)</div><div class="ttdoc">Build llvm loops based on LoopInfo analysis.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMLoopAnalysis_8cpp_source.html#l00047">LLVMLoopAnalysis.cpp:47</a></div></div>
@@ -131,9 +131,9 @@ $(function() {
131
131
  <div class="ttc" id="aSVFIR_8h_html"><div class="ttname"><a href="SVFIR_8h.html">SVFIR.h</a></div></div>
132
132
  <div class="ttc" id="aBasicTypes_8h_html"><div class="ttname"><a href="BasicTypes_8h.html">BasicTypes.h</a></div></div>
133
133
  <div class="ttc" id="aclassSVF_1_1LLVMLoopAnalysis_html_aae766534e6dd2141a593b6f07aae6999"><div class="ttname"><a href="classSVF_1_1LLVMLoopAnalysis.html#aae766534e6dd2141a593b6f07aae6999">SVF::LLVMLoopAnalysis::~LLVMLoopAnalysis</a></div><div class="ttdeci">virtual ~LLVMLoopAnalysis()=default</div><div class="ttdoc">Destructor.</div></div>
134
- <div class="ttc" id="aclassSVF_1_1LLVMLoopAnalysis_html_ad036bf2b7354dd106edce47939b64c78"><div class="ttname"><a href="classSVF_1_1LLVMLoopAnalysis.html#ad036bf2b7354dd106edce47939b64c78">SVF::LLVMLoopAnalysis::buildSVFLoops</a></div><div class="ttdeci">virtual void buildSVFLoops(ICFG *icfg, std::vector&lt; const Loop * &gt; &amp;llvmLoops)</div><div class="ttdoc">Build SVF loops based on llvm loops.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMLoopAnalysis_8cpp_source.html#l00098">LLVMLoopAnalysis.cpp:98</a></div></div>
134
+ <div class="ttc" id="aclassSVF_1_1LLVMLoopAnalysis_html_ad036bf2b7354dd106edce47939b64c78"><div class="ttname"><a href="classSVF_1_1LLVMLoopAnalysis.html#ad036bf2b7354dd106edce47939b64c78">SVF::LLVMLoopAnalysis::buildSVFLoops</a></div><div class="ttdeci">virtual void buildSVFLoops(ICFG *icfg, std::vector&lt; const Loop * &gt; &amp;llvmLoops)</div><div class="ttdoc">Build SVF loops based on llvm loops.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMLoopAnalysis_8cpp_source.html#l00099">LLVMLoopAnalysis.cpp:99</a></div></div>
135
135
  <div class="ttc" id="aclassSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
136
- <div class="ttc" id="aclassSVF_1_1LLVMLoopAnalysis_html_a17e4805c2db146430c58af35625a388d"><div class="ttname"><a href="classSVF_1_1LLVMLoopAnalysis.html#a17e4805c2db146430c58af35625a388d">SVF::LLVMLoopAnalysis::build</a></div><div class="ttdeci">virtual void build(ICFG *icfg)</div><div class="ttdoc">Start from here.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMLoopAnalysis_8cpp_source.html#l00087">LLVMLoopAnalysis.cpp:87</a></div></div>
136
+ <div class="ttc" id="aclassSVF_1_1LLVMLoopAnalysis_html_a17e4805c2db146430c58af35625a388d"><div class="ttname"><a href="classSVF_1_1LLVMLoopAnalysis.html#a17e4805c2db146430c58af35625a388d">SVF::LLVMLoopAnalysis::build</a></div><div class="ttdeci">virtual void build(ICFG *icfg)</div><div class="ttdoc">Start from here.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMLoopAnalysis_8cpp_source.html#l00088">LLVMLoopAnalysis.cpp:88</a></div></div>
137
137
  <div class="ttc" id="aclassSVF_1_1LLVMLoopAnalysis_html_a93161bbdb47c74fce1d8e54a45df2df8"><div class="ttname"><a href="classSVF_1_1LLVMLoopAnalysis.html#a93161bbdb47c74fce1d8e54a45df2df8">SVF::LLVMLoopAnalysis::LLVMLoopAnalysis</a></div><div class="ttdeci">LLVMLoopAnalysis()=default</div><div class="ttdoc">Constructor.</div></div>
138
138
  <div class="ttc" id="aclassSVF_1_1ICFG_html"><div class="ttname"><a href="classSVF_1_1ICFG.html">SVF::ICFG</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00047">ICFG.h:47</a></div></div>
139
139
  <div class="ttc" id="aclassSVF_1_1LLVMLoopAnalysis_html_abb501d497067af4365e5108d27387623"><div class="ttname"><a href="classSVF_1_1LLVMLoopAnalysis.html#abb501d497067af4365e5108d27387623">SVF::LLVMLoopAnalysis::buildLLVMLoops</a></div><div class="ttdeci">virtual void buildLLVMLoops(SVFModule *mod, ICFG *icfg)</div><div class="ttdoc">Build llvm loops based on LoopInfo analysis.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMLoopAnalysis_8cpp_source.html#l00047">LLVMLoopAnalysis.cpp:47</a></div></div>