svf-tools 1.0.903 → 1.0.905

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 (339) hide show
  1. package/SVF-doxygen/html/Andersen_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/BasicTypes_8h_source.html +1 -1
  3. package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +3 -3
  4. package/SVF-doxygen/html/CFLAlias_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/ConsG_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/CppUtil_8cpp_source.html +3 -3
  7. package/SVF-doxygen/html/CxtStmt_8h_source.html +1 -1
  8. package/SVF-doxygen/html/DCHG_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/DDAClient_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/ICFGBuilder_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/ICFG_8cpp_source.html +1 -1
  12. package/SVF-doxygen/html/LLVMModule_8cpp_source.html +8 -8
  13. package/SVF-doxygen/html/LLVMUtil_8cpp_source.html +727 -721
  14. package/SVF-doxygen/html/LLVMUtil_8h_source.html +29 -29
  15. package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/MHP_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/MTA_8cpp_source.html +47 -40
  18. package/SVF-doxygen/html/MemSSA_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/ObjTypeInference_8cpp.html +1 -1
  20. package/SVF-doxygen/html/ObjTypeInference_8cpp_source.html +3 -3
  21. package/SVF-doxygen/html/Options_8cpp_source.html +32 -20
  22. package/SVF-doxygen/html/Options_8h_source.html +24 -16
  23. package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +6 -6
  25. package/SVF-doxygen/html/SVFIRExtAPI_8cpp_source.html +1 -1
  26. package/SVF-doxygen/html/SVFStatements_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/SVFValue_8cpp_source.html +1 -1
  28. package/SVF-doxygen/html/SVFValue_8h_source.html +1 -1
  29. package/SVF-doxygen/html/SVFVariables_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/Steensgaard_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +6 -6
  32. package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/ae_8cpp_source.html +2 -2
  34. package/SVF-doxygen/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  35. package/SVF-doxygen/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  36. package/SVF-doxygen/html/classSVF_1_1AddrStmt.html +1 -1
  37. package/SVF-doxygen/html/classSVF_1_1AliasDDAClient.html +1 -1
  38. package/SVF-doxygen/html/classSVF_1_1Andersen.html +1 -1
  39. package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +1 -1
  40. package/SVF-doxygen/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  41. package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +1 -1
  42. package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.html +1 -1
  43. package/SVF-doxygen/html/classSVF_1_1CFLAlias.html +1 -1
  44. package/SVF-doxygen/html/classSVF_1_1CallCFGEdge.html +1 -1
  45. package/SVF-doxygen/html/classSVF_1_1CallPE.html +1 -1
  46. package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +1 -1
  47. package/SVF-doxygen/html/classSVF_1_1CmpVFGNode.html +1 -1
  48. package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +1 -1
  49. package/SVF-doxygen/html/classSVF_1_1CxtStmt.html +1 -1
  50. package/SVF-doxygen/html/classSVF_1_1CxtThread.html +1 -1
  51. package/SVF-doxygen/html/classSVF_1_1CxtThreadStmt.html +1 -1
  52. package/SVF-doxygen/html/classSVF_1_1DCHGraph.html +1 -1
  53. package/SVF-doxygen/html/classSVF_1_1DoubleFreeChecker.html +1 -1
  54. package/SVF-doxygen/html/classSVF_1_1FIObjVar.html +1 -1
  55. package/SVF-doxygen/html/classSVF_1_1ForkJoinAnalysis.html +1 -1
  56. package/SVF-doxygen/html/classSVF_1_1GepObjVar.html +1 -1
  57. package/SVF-doxygen/html/classSVF_1_1GepStmt.html +1 -1
  58. package/SVF-doxygen/html/classSVF_1_1GepValVar.html +1 -1
  59. package/SVF-doxygen/html/classSVF_1_1ICFG.html +1 -1
  60. package/SVF-doxygen/html/classSVF_1_1ICFGBuilder.html +2 -2
  61. package/SVF-doxygen/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  62. package/SVF-doxygen/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  63. package/SVF-doxygen/html/classSVF_1_1IntraCFGEdge.html +1 -1
  64. package/SVF-doxygen/html/classSVF_1_1IntraICFGNode.html +1 -1
  65. package/SVF-doxygen/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  66. package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +8 -8
  67. package/SVF-doxygen/html/classSVF_1_1LeakChecker.html +1 -1
  68. package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +1 -1
  69. package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +1 -1
  70. package/SVF-doxygen/html/classSVF_1_1MHP.html +1 -1
  71. package/SVF-doxygen/html/classSVF_1_1MTA.html +4 -2
  72. package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +1 -1
  73. package/SVF-doxygen/html/classSVF_1_1MemObj.html +1 -1
  74. package/SVF-doxygen/html/classSVF_1_1MemSSA.html +1 -1
  75. package/SVF-doxygen/html/classSVF_1_1ObjTypeInference.html +3 -3
  76. package/SVF-doxygen/html/classSVF_1_1ObjVar.html +1 -1
  77. package/SVF-doxygen/html/classSVF_1_1Options-members.html +50 -46
  78. package/SVF-doxygen/html/classSVF_1_1Options.html +122 -6
  79. package/SVF-doxygen/html/classSVF_1_1PHIVFGNode.html +1 -1
  80. package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +1 -1
  81. package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +1 -1
  82. package/SVF-doxygen/html/classSVF_1_1RetCFGEdge.html +1 -1
  83. package/SVF-doxygen/html/classSVF_1_1RetPE.html +1 -1
  84. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +7 -7
  85. package/SVF-doxygen/html/classSVF_1_1SVFValue.html +23 -23
  86. package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +1 -1
  87. package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +1 -1
  88. package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +1 -1
  89. package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +5 -5
  90. package/SVF-doxygen/html/classSVF_1_1TCT.html +1 -1
  91. package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +1 -1
  92. package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +1 -1
  93. package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +1 -1
  94. package/SVF-doxygen/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  95. package/SVF-doxygen/html/classSVF_1_1ValVar.html +1 -1
  96. package/SVF-doxygen/html/functions_d.html +5 -2
  97. package/SVF-doxygen/html/functions_f.html +26 -23
  98. package/SVF-doxygen/html/functions_l.html +5 -5
  99. package/SVF-doxygen/html/functions_m.html +3 -0
  100. package/SVF-doxygen/html/functions_n.html +3 -3
  101. package/SVF-doxygen/html/functions_o.html +7 -7
  102. package/SVF-doxygen/html/functions_p.html +20 -24
  103. package/SVF-doxygen/html/functions_r.html +11 -6
  104. package/SVF-doxygen/html/functions_s.html +5 -5
  105. package/SVF-doxygen/html/functions_t.html +8 -8
  106. package/SVF-doxygen/html/functions_v.html +3 -3
  107. package/SVF-doxygen/html/functions_vars_d.html +3 -0
  108. package/SVF-doxygen/html/functions_vars_f.html +3 -0
  109. package/SVF-doxygen/html/functions_vars_m.html +3 -0
  110. package/SVF-doxygen/html/functions_vars_r.html +3 -0
  111. package/SVF-doxygen/html/globals_d.html +0 -3
  112. package/SVF-doxygen/html/globals_f.html +4 -7
  113. package/SVF-doxygen/html/globals_l.html +0 -3
  114. package/SVF-doxygen/html/globals_vars.html +3 -12
  115. package/SVF-doxygen/html/globals_z.html +3 -3
  116. package/SVF-doxygen/html/namespaceSVF_1_1LLVMUtil.html +641 -635
  117. package/SVF-doxygen/html/namespaceSVF_1_1cppUtil.html +2 -2
  118. package/SVF-doxygen/html/saber_8cpp.html +36 -116
  119. package/SVF-doxygen/html/saber_8cpp_source.html +35 -57
  120. package/SVF-doxygen/html/search/all_10.js +326 -326
  121. package/SVF-doxygen/html/search/all_11.js +227 -226
  122. package/SVF-doxygen/html/search/all_12.js +574 -574
  123. package/SVF-doxygen/html/search/all_13.js +208 -208
  124. package/SVF-doxygen/html/search/all_14.js +73 -73
  125. package/SVF-doxygen/html/search/all_15.js +176 -176
  126. package/SVF-doxygen/html/search/all_16.js +77 -77
  127. package/SVF-doxygen/html/search/all_17.js +1 -1
  128. package/SVF-doxygen/html/search/all_18.js +1 -1
  129. package/SVF-doxygen/html/search/all_19.js +27 -27
  130. package/SVF-doxygen/html/search/all_1a.js +179 -179
  131. package/SVF-doxygen/html/search/all_3.js +1 -1
  132. package/SVF-doxygen/html/search/all_4.js +1 -1
  133. package/SVF-doxygen/html/search/all_6.js +190 -189
  134. package/SVF-doxygen/html/search/all_7.js +1056 -1056
  135. package/SVF-doxygen/html/search/all_8.js +215 -215
  136. package/SVF-doxygen/html/search/all_9.js +638 -638
  137. package/SVF-doxygen/html/search/all_a.js +46 -46
  138. package/SVF-doxygen/html/search/all_b.js +26 -26
  139. package/SVF-doxygen/html/search/all_c.js +115 -115
  140. package/SVF-doxygen/html/search/all_d.js +205 -204
  141. package/SVF-doxygen/html/search/all_e.js +209 -209
  142. package/SVF-doxygen/html/search/all_f.js +122 -122
  143. package/SVF-doxygen/html/search/classes_0.js +28 -28
  144. package/SVF-doxygen/html/search/classes_1.js +11 -11
  145. package/SVF-doxygen/html/search/classes_10.js +74 -74
  146. package/SVF-doxygen/html/search/classes_11.js +14 -14
  147. package/SVF-doxygen/html/search/classes_12.js +2 -2
  148. package/SVF-doxygen/html/search/classes_13.js +10 -10
  149. package/SVF-doxygen/html/search/classes_14.js +19 -19
  150. package/SVF-doxygen/html/search/classes_15.js +1 -1
  151. package/SVF-doxygen/html/search/classes_2.js +73 -73
  152. package/SVF-doxygen/html/search/classes_3.js +35 -35
  153. package/SVF-doxygen/html/search/classes_4.js +8 -8
  154. package/SVF-doxygen/html/search/classes_5.js +28 -28
  155. package/SVF-doxygen/html/search/classes_6.js +98 -98
  156. package/SVF-doxygen/html/search/classes_7.js +38 -38
  157. package/SVF-doxygen/html/search/classes_8.js +59 -59
  158. package/SVF-doxygen/html/search/classes_9.js +1 -1
  159. package/SVF-doxygen/html/search/classes_a.js +12 -12
  160. package/SVF-doxygen/html/search/classes_b.js +29 -29
  161. package/SVF-doxygen/html/search/classes_c.js +6 -6
  162. package/SVF-doxygen/html/search/classes_d.js +19 -19
  163. package/SVF-doxygen/html/search/classes_e.js +36 -36
  164. package/SVF-doxygen/html/search/classes_f.js +25 -25
  165. package/SVF-doxygen/html/search/defines_0.js +3 -3
  166. package/SVF-doxygen/html/search/defines_1.js +3 -3
  167. package/SVF-doxygen/html/search/defines_10.js +2 -2
  168. package/SVF-doxygen/html/search/defines_2.js +30 -30
  169. package/SVF-doxygen/html/search/defines_3.js +20 -20
  170. package/SVF-doxygen/html/search/defines_4.js +3 -3
  171. package/SVF-doxygen/html/search/defines_5.js +4 -4
  172. package/SVF-doxygen/html/search/defines_6.js +2 -2
  173. package/SVF-doxygen/html/search/defines_7.js +5 -5
  174. package/SVF-doxygen/html/search/defines_8.js +11 -11
  175. package/SVF-doxygen/html/search/defines_9.js +9 -9
  176. package/SVF-doxygen/html/search/defines_a.js +2 -2
  177. package/SVF-doxygen/html/search/defines_b.js +1 -1
  178. package/SVF-doxygen/html/search/defines_c.js +4 -4
  179. package/SVF-doxygen/html/search/defines_d.js +2 -2
  180. package/SVF-doxygen/html/search/defines_e.js +8 -8
  181. package/SVF-doxygen/html/search/defines_f.js +4 -4
  182. package/SVF-doxygen/html/search/enums_0.js +4 -4
  183. package/SVF-doxygen/html/search/enums_1.js +2 -2
  184. package/SVF-doxygen/html/search/enums_10.js +1 -1
  185. package/SVF-doxygen/html/search/enums_11.js +1 -1
  186. package/SVF-doxygen/html/search/enums_2.js +9 -9
  187. package/SVF-doxygen/html/search/enums_3.js +1 -1
  188. package/SVF-doxygen/html/search/enums_4.js +4 -4
  189. package/SVF-doxygen/html/search/enums_5.js +1 -1
  190. package/SVF-doxygen/html/search/enums_6.js +2 -2
  191. package/SVF-doxygen/html/search/enums_7.js +2 -2
  192. package/SVF-doxygen/html/search/enums_8.js +4 -4
  193. package/SVF-doxygen/html/search/enums_9.js +1 -1
  194. package/SVF-doxygen/html/search/enums_a.js +1 -1
  195. package/SVF-doxygen/html/search/enums_b.js +7 -7
  196. package/SVF-doxygen/html/search/enums_c.js +1 -1
  197. package/SVF-doxygen/html/search/enums_d.js +4 -4
  198. package/SVF-doxygen/html/search/enums_e.js +2 -2
  199. package/SVF-doxygen/html/search/enums_f.js +4 -4
  200. package/SVF-doxygen/html/search/enumvalues_0.js +15 -15
  201. package/SVF-doxygen/html/search/enumvalues_1.js +16 -16
  202. package/SVF-doxygen/html/search/enumvalues_10.js +36 -36
  203. package/SVF-doxygen/html/search/enumvalues_11.js +5 -5
  204. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  205. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  206. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  207. package/SVF-doxygen/html/search/enumvalues_15.js +4 -4
  208. package/SVF-doxygen/html/search/enumvalues_2.js +37 -37
  209. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  210. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  211. package/SVF-doxygen/html/search/enumvalues_5.js +50 -50
  212. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  213. package/SVF-doxygen/html/search/enumvalues_7.js +8 -8
  214. package/SVF-doxygen/html/search/enumvalues_8.js +24 -24
  215. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  216. package/SVF-doxygen/html/search/enumvalues_a.js +17 -17
  217. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  218. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  219. package/SVF-doxygen/html/search/enumvalues_d.js +19 -19
  220. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  221. package/SVF-doxygen/html/search/enumvalues_f.js +49 -49
  222. package/SVF-doxygen/html/search/files_0.js +16 -16
  223. package/SVF-doxygen/html/search/files_1.js +9 -9
  224. package/SVF-doxygen/html/search/files_10.js +8 -8
  225. package/SVF-doxygen/html/search/files_11.js +8 -8
  226. package/SVF-doxygen/html/search/files_12.js +2 -2
  227. package/SVF-doxygen/html/search/files_2.js +53 -53
  228. package/SVF-doxygen/html/search/files_3.js +14 -14
  229. package/SVF-doxygen/html/search/files_4.js +5 -5
  230. package/SVF-doxygen/html/search/files_5.js +13 -13
  231. package/SVF-doxygen/html/search/files_6.js +10 -10
  232. package/SVF-doxygen/html/search/files_7.js +17 -17
  233. package/SVF-doxygen/html/search/files_8.js +13 -13
  234. package/SVF-doxygen/html/search/files_9.js +18 -18
  235. package/SVF-doxygen/html/search/files_a.js +3 -3
  236. package/SVF-doxygen/html/search/files_b.js +4 -4
  237. package/SVF-doxygen/html/search/files_c.js +20 -20
  238. package/SVF-doxygen/html/search/files_d.js +4 -4
  239. package/SVF-doxygen/html/search/files_e.js +62 -62
  240. package/SVF-doxygen/html/search/files_f.js +8 -8
  241. package/SVF-doxygen/html/search/functions_0.js +13 -13
  242. package/SVF-doxygen/html/search/functions_1.js +368 -368
  243. package/SVF-doxygen/html/search/functions_10.js +140 -140
  244. package/SVF-doxygen/html/search/functions_11.js +140 -140
  245. package/SVF-doxygen/html/search/functions_12.js +299 -299
  246. package/SVF-doxygen/html/search/functions_13.js +73 -73
  247. package/SVF-doxygen/html/search/functions_14.js +41 -41
  248. package/SVF-doxygen/html/search/functions_15.js +72 -72
  249. package/SVF-doxygen/html/search/functions_16.js +38 -38
  250. package/SVF-doxygen/html/search/functions_17.js +3 -3
  251. package/SVF-doxygen/html/search/functions_18.js +179 -179
  252. package/SVF-doxygen/html/search/functions_2.js +94 -94
  253. package/SVF-doxygen/html/search/functions_3.js +261 -261
  254. package/SVF-doxygen/html/search/functions_4.js +85 -85
  255. package/SVF-doxygen/html/search/functions_5.js +57 -57
  256. package/SVF-doxygen/html/search/functions_6.js +65 -65
  257. package/SVF-doxygen/html/search/functions_7.js +872 -872
  258. package/SVF-doxygen/html/search/functions_8.js +162 -162
  259. package/SVF-doxygen/html/search/functions_9.js +446 -446
  260. package/SVF-doxygen/html/search/functions_a.js +30 -30
  261. package/SVF-doxygen/html/search/functions_b.js +2 -2
  262. package/SVF-doxygen/html/search/functions_c.js +25 -25
  263. package/SVF-doxygen/html/search/functions_d.js +82 -82
  264. package/SVF-doxygen/html/search/functions_e.js +36 -36
  265. package/SVF-doxygen/html/search/functions_f.js +58 -58
  266. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  267. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  268. package/SVF-doxygen/html/search/related_0.js +4 -4
  269. package/SVF-doxygen/html/search/related_1.js +2 -2
  270. package/SVF-doxygen/html/search/related_2.js +2 -2
  271. package/SVF-doxygen/html/search/related_3.js +2 -2
  272. package/SVF-doxygen/html/search/related_4.js +2 -2
  273. package/SVF-doxygen/html/search/related_5.js +1 -1
  274. package/SVF-doxygen/html/search/related_6.js +2 -2
  275. package/SVF-doxygen/html/search/related_7.js +5 -5
  276. package/SVF-doxygen/html/search/related_8.js +2 -2
  277. package/SVF-doxygen/html/search/related_9.js +4 -4
  278. package/SVF-doxygen/html/search/related_a.js +19 -19
  279. package/SVF-doxygen/html/search/related_b.js +4 -4
  280. package/SVF-doxygen/html/search/related_c.js +2 -2
  281. package/SVF-doxygen/html/search/related_d.js +12 -12
  282. package/SVF-doxygen/html/search/related_e.js +2 -2
  283. package/SVF-doxygen/html/search/related_f.js +2 -2
  284. package/SVF-doxygen/html/search/typedefs_0.js +19 -19
  285. package/SVF-doxygen/html/search/typedefs_1.js +27 -27
  286. package/SVF-doxygen/html/search/typedefs_10.js +65 -65
  287. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  288. package/SVF-doxygen/html/search/typedefs_12.js +13 -13
  289. package/SVF-doxygen/html/search/typedefs_13.js +40 -40
  290. package/SVF-doxygen/html/search/typedefs_14.js +11 -11
  291. package/SVF-doxygen/html/search/typedefs_2.js +125 -125
  292. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  293. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  294. package/SVF-doxygen/html/search/typedefs_5.js +42 -42
  295. package/SVF-doxygen/html/search/typedefs_6.js +54 -54
  296. package/SVF-doxygen/html/search/typedefs_7.js +47 -47
  297. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  298. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  299. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  300. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  301. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  302. package/SVF-doxygen/html/search/typedefs_d.js +15 -15
  303. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  304. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  305. package/SVF-doxygen/html/search/variables_0.js +177 -177
  306. package/SVF-doxygen/html/search/variables_1.js +77 -77
  307. package/SVF-doxygen/html/search/variables_10.js +98 -98
  308. package/SVF-doxygen/html/search/variables_11.js +47 -46
  309. package/SVF-doxygen/html/search/variables_12.js +93 -93
  310. package/SVF-doxygen/html/search/variables_13.js +76 -76
  311. package/SVF-doxygen/html/search/variables_14.js +14 -14
  312. package/SVF-doxygen/html/search/variables_15.js +49 -49
  313. package/SVF-doxygen/html/search/variables_16.js +11 -11
  314. package/SVF-doxygen/html/search/variables_17.js +1 -1
  315. package/SVF-doxygen/html/search/variables_18.js +17 -17
  316. package/SVF-doxygen/html/search/variables_2.js +40 -40
  317. package/SVF-doxygen/html/search/variables_3.js +143 -143
  318. package/SVF-doxygen/html/search/variables_4.js +51 -51
  319. package/SVF-doxygen/html/search/variables_5.js +39 -39
  320. package/SVF-doxygen/html/search/variables_6.js +66 -66
  321. package/SVF-doxygen/html/search/variables_7.js +34 -34
  322. package/SVF-doxygen/html/search/variables_8.js +8 -8
  323. package/SVF-doxygen/html/search/variables_9.js +79 -79
  324. package/SVF-doxygen/html/search/variables_a.js +4 -4
  325. package/SVF-doxygen/html/search/variables_b.js +10 -10
  326. package/SVF-doxygen/html/search/variables_c.js +44 -45
  327. package/SVF-doxygen/html/search/variables_d.js +58 -57
  328. package/SVF-doxygen/html/search/variables_e.js +123 -123
  329. package/SVF-doxygen/html/search/variables_f.js +31 -31
  330. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  331. package/SVF-doxygen/html/svf-ex_8cpp.html +1 -1
  332. package/SVF-doxygen/html/svf-ex_8cpp_source.html +1 -1
  333. package/package.json +1 -1
  334. package/svf/include/Util/Options.h +9 -1
  335. package/svf/lib/MTA/MTA.cpp +21 -24
  336. package/svf/lib/Util/Options.cpp +8 -0
  337. package/svf-llvm/include/SVF-LLVM/BasicTypes.h +1 -1
  338. package/svf-llvm/lib/LLVMUtil.cpp +8 -2
  339. package/svf-llvm/tools/SABER/saber.cpp +3 -21
@@ -266,759 +266,765 @@ $(function() {
266
266
  <div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b"> 217</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">LLVMUtil::isIntrinsicFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func)</div>
267
267
  <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;{</div>
268
268
  <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span> (func &amp;&amp; (func-&gt;getIntrinsicID() == llvm::Intrinsic::donothing ||</div>
269
- <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_addr ||</div>
270
- <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_declare ||</div>
271
- <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_label ||</div>
272
- <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_value))</div>
273
- <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; {</div>
274
- <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
275
- <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div>
276
- <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
277
- <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;}</div>
278
- <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; </div>
279
- <div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1"> 231</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div>
280
- <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;{</div>
281
- <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* call = SVFUtil::dyn_cast&lt;CallBase&gt;(inst))</div>
282
- <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; {</div>
283
- <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = call-&gt;getCalledFunction();</div>
284
- <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">isIntrinsicFun</a>(func))</div>
285
- <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; {</div>
286
- <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
287
- <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div>
288
- <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div>
289
- <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
290
- <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;}</div>
291
- <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; </div>
292
- <div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f"> 247</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">LLVMUtil::stripConstantCasts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
293
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;{</div>
294
- <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;GlobalValue&gt;(val) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">isInt2PtrConstantExpr</a>(val))</div>
295
- <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">return</span> val;</div>
296
- <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *CE = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
297
- <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div>
298
- <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span> (Instruction::isCast(CE-&gt;getOpcode()))</div>
299
- <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">stripConstantCasts</a>(CE-&gt;getOperand(0));</div>
300
- <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div>
301
- <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> val;</div>
302
- <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;}</div>
303
- <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; </div>
304
- <div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#abc9c437b7da5cfe3d988dadfcbd0635f"> 259</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abc9c437b7da5cfe3d988dadfcbd0635f">LLVMUtil::viewCFG</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div>
305
- <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;{</div>
306
- <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">if</span> (fun != <span class="keyword">nullptr</span>)</div>
307
- <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div>
308
- <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; fun-&gt;viewCFG();</div>
309
- <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; }</div>
310
- <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;}</div>
311
- <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; </div>
312
- <div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2abbe4ed46b2031a981d93b3ba9d3fbd"> 267</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2abbe4ed46b2031a981d93b3ba9d3fbd">LLVMUtil::viewCFGOnly</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div>
313
- <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;{</div>
314
- <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">if</span> (fun != <span class="keyword">nullptr</span>)</div>
315
- <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; {</div>
316
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; fun-&gt;viewCFGOnly();</div>
317
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</div>
318
- <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;}</div>
319
- <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; </div>
320
- <div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c"> 278</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">LLVMUtil::stripAllCasts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
321
- <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;{</div>
322
- <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div>
323
- <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div>
324
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">CastInst</a> *ci = SVFUtil::dyn_cast&lt;CastInst&gt;(val))</div>
325
- <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; {</div>
326
- <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; val = ci-&gt;getOperand(0);</div>
327
- <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div>
328
- <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *ce = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
329
- <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; {</div>
330
- <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">if</span>(ce-&gt;isCast())</div>
331
- <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; val = ce-&gt;getOperand(0);</div>
332
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">else</span></div>
333
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> val;</div>
334
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div>
335
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">else</span></div>
336
- <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; {</div>
337
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">return</span> val;</div>
338
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div>
339
- <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div>
340
- <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
341
- <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;}</div>
342
- <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; </div>
343
- <div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7"> 302</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">LLVMUtil::getNextInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector&lt;const SVFInstruction*&gt;&amp; instList)</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; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst-&gt;getNextNode();</div>
348
- <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfNextInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(nextInst);</div>
349
- <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
350
- <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
351
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">else</span></div>
352
- <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; instList.push_back(svfNextInst);</div>
353
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div>
354
- <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">else</span></div>
355
- <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; {</div>
356
- <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB = curInst-&gt;getParent();</div>
357
- <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
358
- <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(BB), ie = succ_end(BB); it != ie; ++it)</div>
359
- <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; {</div>
360
- <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &amp;((*it)-&gt;front());</div>
361
- <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfNextInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(nextInst);</div>
362
- <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
363
- <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
364
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">else</span></div>
365
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; instList.push_back(svfNextInst);</div>
366
- <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; }</div>
367
- <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</div>
368
- <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;}</div>
269
+ <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_declare ||</div>
270
+ <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_label ||</div>
271
+ <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_value))</div>
272
+ <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; {</div>
273
+ <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
274
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div>
275
+ <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
276
+ <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;}</div>
277
+ <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; </div>
278
+ <div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1"> 230</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div>
279
+ <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;{</div>
280
+ <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* call = SVFUtil::dyn_cast&lt;CallBase&gt;(inst))</div>
281
+ <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; {</div>
282
+ <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = call-&gt;getCalledFunction();</div>
283
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">isIntrinsicFun</a>(func))</div>
284
+ <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div>
285
+ <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
286
+ <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div>
287
+ <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div>
288
+ <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
289
+ <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;}</div>
290
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; </div>
291
+ <div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f"> 246</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">LLVMUtil::stripConstantCasts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
292
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;{</div>
293
+ <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;GlobalValue&gt;(val) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">isInt2PtrConstantExpr</a>(val))</div>
294
+ <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> val;</div>
295
+ <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *CE = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
296
+ <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div>
297
+ <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">if</span> (Instruction::isCast(CE-&gt;getOpcode()))</div>
298
+ <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">stripConstantCasts</a>(CE-&gt;getOperand(0));</div>
299
+ <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div>
300
+ <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">return</span> val;</div>
301
+ <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;}</div>
302
+ <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; </div>
303
+ <div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#abc9c437b7da5cfe3d988dadfcbd0635f"> 258</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abc9c437b7da5cfe3d988dadfcbd0635f">LLVMUtil::viewCFG</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div>
304
+ <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;{</div>
305
+ <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">if</span> (fun != <span class="keyword">nullptr</span>)</div>
306
+ <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; {</div>
307
+ <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; fun-&gt;viewCFG();</div>
308
+ <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div>
309
+ <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;}</div>
310
+ <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; </div>
311
+ <div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2abbe4ed46b2031a981d93b3ba9d3fbd"> 266</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2abbe4ed46b2031a981d93b3ba9d3fbd">LLVMUtil::viewCFGOnly</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div>
312
+ <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;{</div>
313
+ <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span> (fun != <span class="keyword">nullptr</span>)</div>
314
+ <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; {</div>
315
+ <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; fun-&gt;viewCFGOnly();</div>
316
+ <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }</div>
317
+ <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;}</div>
318
+ <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; </div>
319
+ <div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c"> 277</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">LLVMUtil::stripAllCasts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
320
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;{</div>
321
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div>
322
+ <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; {</div>
323
+ <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">CastInst</a> *ci = SVFUtil::dyn_cast&lt;CastInst&gt;(val))</div>
324
+ <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; {</div>
325
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; val = ci-&gt;getOperand(0);</div>
326
+ <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; }</div>
327
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *ce = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
328
+ <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; {</div>
329
+ <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">if</span>(ce-&gt;isCast())</div>
330
+ <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; val = ce-&gt;getOperand(0);</div>
331
+ <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">else</span></div>
332
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">return</span> val;</div>
333
+ <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div>
334
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">else</span></div>
335
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; {</div>
336
+ <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> val;</div>
337
+ <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div>
338
+ <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div>
339
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
340
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;}</div>
341
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; </div>
342
+ <div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7"> 301</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">LLVMUtil::getNextInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector&lt;const SVFInstruction*&gt;&amp; instList)</div>
343
+ <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;{</div>
344
+ <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst-&gt;getNextNode();</div>
347
+ <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfNextInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(nextInst);</div>
348
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
349
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
350
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">else</span></div>
351
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; instList.push_back(svfNextInst);</div>
352
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div>
353
+ <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">else</span></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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB = curInst-&gt;getParent();</div>
356
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
357
+ <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(BB), ie = succ_end(BB); it != ie; ++it)</div>
358
+ <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; {</div>
359
+ <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &amp;((*it)-&gt;front());</div>
360
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfNextInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(nextInst);</div>
361
+ <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
362
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
363
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">else</span></div>
364
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; instList.push_back(svfNextInst);</div>
365
+ <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; }</div>
366
+ <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; }</div>
367
+ <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;}</div>
368
+ <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; </div>
369
369
  <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; </div>
370
- <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; </div>
371
- <div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd"> 331</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">LLVMUtil::getPrevInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector&lt;const SVFInstruction*&gt;&amp; instList)</div>
372
- <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;{</div>
373
- <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; </div>
374
- <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span> (curInst != &amp;(curInst-&gt;getParent()-&gt;front()))</div>
375
- <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; {</div>
376
- <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst-&gt;getPrevNode();</div>
377
- <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(prevInst);</div>
378
- <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
379
- <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
380
- <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">else</span></div>
381
- <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; instList.push_back(svfPrevInst);</div>
382
- <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div>
383
- <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">else</span></div>
384
- <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; {</div>
385
- <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB = curInst-&gt;getParent();</div>
386
- <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
387
- <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), ie = pred_end(BB); it != ie; ++it)</div>
388
- <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; {</div>
389
- <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &amp;((*it)-&gt;back());</div>
390
- <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(prevInst);</div>
391
- <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
392
- <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
393
- <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">else</span></div>
394
- <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; instList.push_back(svfPrevInst);</div>
395
- <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div>
396
- <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div>
397
- <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;}</div>
398
- <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; </div>
399
- <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="comment">/*</span></div>
400
- <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="comment"> * Get the first dominated cast instruction for heap allocations since they typically come from void* (i8*)</span></div>
401
- <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="comment"> * for example, %4 = call align 16 i8* @malloc(i64 10); %5 = bitcast i8* %4 to i32*</span></div>
402
- <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment"> * return %5 whose type is i32* but not %4 whose type is i8*</span></div>
403
- <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="comment"> */</span></div>
404
- <div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8"> 364</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">LLVMUtil::getFirstUseViaCastInst</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
405
- <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;{</div>
406
- <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; assert(SVFUtil::isa&lt;PointerType&gt;(val-&gt;getType()) &amp;&amp; <span class="stringliteral">&quot;this value should be a pointer type!&quot;</span>);</div>
407
- <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *latestUse = <span class="keyword">nullptr</span>;</div>
408
- <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it : val-&gt;uses())</div>
409
- <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; {</div>
410
- <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;BitCastInst&gt;(it.getUser()))</div>
411
- <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; latestUse = it.getUser();</div>
412
- <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">else</span></div>
413
- <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; latestUse = <span class="keyword">nullptr</span>;</div>
414
- <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div>
415
- <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">return</span> latestUse;</div>
416
- <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;}</div>
417
- <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; </div>
418
- <div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8"> 382</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8">LLVMUtil::getNumOfElements</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ety)</div>
419
- <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;{</div>
420
- <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; assert(ety &amp;&amp; <span class="stringliteral">&quot;type is null?&quot;</span>);</div>
421
- <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFields = 1;</div>
422
- <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(ety))</div>
423
- <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; {</div>
424
- <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a429c3000ee2ac45119b8c241aa06762c">Options::ModelArrays</a>())</div>
425
- <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ety)-&gt;<a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
426
- <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">else</span></div>
427
- <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ety)-&gt;<a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
428
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div>
429
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">return</span> numOfFields;</div>
430
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;}</div>
431
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; </div>
432
- <div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987"> 399</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987">LLVMUtil::getBBPredecessorNum</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB)</div>
433
- <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;{</div>
434
- <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = 0;</div>
435
- <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), et = pred_end(BB); it != et; ++it)</div>
436
- <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; num++;</div>
437
- <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">return</span> num;</div>
438
- <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;}</div>
439
- <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; </div>
440
- <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="comment">/*</span></div>
441
- <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="comment"> * Reference functions:</span></div>
442
- <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="comment"> * llvm::parseIRFile (lib/IRReader/IRReader.cpp)</span></div>
443
- <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="comment"> * llvm::parseIR (lib/IRReader/IRReader.cpp)</span></div>
444
- <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="comment"> */</span></div>
445
- <div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41"> 412</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &amp;filename)</div>
446
- <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;{</div>
447
- <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">llvm::LLVMContext</a> context;</div>
448
- <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">llvm::SMDiagnostic</a> err;</div>
449
- <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; </div>
450
- <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="comment">// Parse the input LLVM IR file into a module</span></div>
451
- <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; std::unique_ptr&lt;llvm::Module&gt; module = llvm::parseIRFile(filename, err, context);</div>
452
- <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; </div>
453
- <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="comment">// Check if the parsing succeeded</span></div>
454
- <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">if</span> (!module)</div>
455
- <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div>
456
- <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; err.print(<span class="stringliteral">&quot;isIRFile&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
457
- <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Not an LLVM IR file</span></div>
458
- <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div>
459
- <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; </div>
460
- <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// It is an LLVM IR file</span></div>
461
- <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;}</div>
370
+ <div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd"> 330</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">LLVMUtil::getPrevInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector&lt;const SVFInstruction*&gt;&amp; instList)</div>
371
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;{</div>
372
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; </div>
373
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">if</span> (curInst != &amp;(curInst-&gt;getParent()-&gt;front()))</div>
374
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div>
375
+ <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst-&gt;getPrevNode();</div>
376
+ <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(prevInst);</div>
377
+ <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
378
+ <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
379
+ <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">else</span></div>
380
+ <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; instList.push_back(svfPrevInst);</div>
381
+ <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div>
382
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">else</span></div>
383
+ <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div>
384
+ <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB = curInst-&gt;getParent();</div>
385
+ <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
386
+ <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), ie = pred_end(BB); it != ie; ++it)</div>
387
+ <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div>
388
+ <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &amp;((*it)-&gt;back());</div>
389
+ <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(prevInst);</div>
390
+ <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
391
+ <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
392
+ <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">else</span></div>
393
+ <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; instList.push_back(svfPrevInst);</div>
394
+ <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div>
395
+ <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div>
396
+ <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;}</div>
397
+ <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; </div>
398
+ <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="comment">/*</span></div>
399
+ <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="comment"> * Get the first dominated cast instruction for heap allocations since they typically come from void* (i8*)</span></div>
400
+ <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="comment"> * for example, %4 = call align 16 i8* @malloc(i64 10); %5 = bitcast i8* %4 to i32*</span></div>
401
+ <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="comment"> * return %5 whose type is i32* but not %4 whose type is i8*</span></div>
402
+ <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment"> */</span></div>
403
+ <div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8"> 363</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">LLVMUtil::getFirstUseViaCastInst</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
404
+ <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;{</div>
405
+ <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; assert(SVFUtil::isa&lt;PointerType&gt;(val-&gt;getType()) &amp;&amp; <span class="stringliteral">&quot;this value should be a pointer type!&quot;</span>);</div>
406
+ <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *latestUse = <span class="keyword">nullptr</span>;</div>
407
+ <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it : val-&gt;uses())</div>
408
+ <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; {</div>
409
+ <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;BitCastInst&gt;(it.getUser()))</div>
410
+ <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; latestUse = it.getUser();</div>
411
+ <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">else</span></div>
412
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; latestUse = <span class="keyword">nullptr</span>;</div>
413
+ <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div>
414
+ <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">return</span> latestUse;</div>
415
+ <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;}</div>
416
+ <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; </div>
417
+ <div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8"> 381</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8">LLVMUtil::getNumOfElements</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ety)</div>
418
+ <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;{</div>
419
+ <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; assert(ety &amp;&amp; <span class="stringliteral">&quot;type is null?&quot;</span>);</div>
420
+ <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFields = 1;</div>
421
+ <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(ety))</div>
422
+ <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; {</div>
423
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a429c3000ee2ac45119b8c241aa06762c">Options::ModelArrays</a>())</div>
424
+ <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ety)-&gt;<a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
425
+ <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">else</span></div>
426
+ <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ety)-&gt;<a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
427
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div>
428
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">return</span> numOfFields;</div>
429
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;}</div>
430
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; </div>
431
+ <div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987"> 398</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987">LLVMUtil::getBBPredecessorNum</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB)</div>
432
+ <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;{</div>
433
+ <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = 0;</div>
434
+ <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), et = pred_end(BB); it != et; ++it)</div>
435
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; num++;</div>
436
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">return</span> num;</div>
437
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;}</div>
438
+ <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; </div>
439
+ <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;<span class="comment">/*</span></div>
440
+ <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="comment"> * Reference functions:</span></div>
441
+ <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="comment"> * llvm::parseIRFile (lib/IRReader/IRReader.cpp)</span></div>
442
+ <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="comment"> * llvm::parseIR (lib/IRReader/IRReader.cpp)</span></div>
443
+ <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="comment"> */</span></div>
444
+ <div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41"> 411</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &amp;filename)</div>
445
+ <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;{</div>
446
+ <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">llvm::LLVMContext</a> context;</div>
447
+ <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">llvm::SMDiagnostic</a> err;</div>
448
+ <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; </div>
449
+ <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="comment">// Parse the input LLVM IR file into a module</span></div>
450
+ <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; std::unique_ptr&lt;llvm::Module&gt; module = llvm::parseIRFile(filename, err, context);</div>
451
+ <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; </div>
452
+ <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="comment">// Check if the parsing succeeded</span></div>
453
+ <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">if</span> (!module)</div>
454
+ <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; {</div>
455
+ <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; err.print(<span class="stringliteral">&quot;isIRFile&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
456
+ <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Not an LLVM IR file</span></div>
457
+ <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; }</div>
458
+ <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; </div>
459
+ <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// It is an LLVM IR file</span></div>
460
+ <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;}</div>
461
+ <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; </div>
462
462
  <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; </div>
463
- <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; </div>
464
- <div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732"> 433</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">LLVMUtil::processArguments</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv, <span class="keywordtype">int</span> &amp;arg_num, <span class="keywordtype">char</span> **arg_value,</div>
465
- <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; std::vector&lt;std::string&gt; &amp;moduleNameVec)</div>
466
- <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;{</div>
467
- <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordtype">bool</span> first_ir_file = <span class="keyword">true</span>;</div>
468
- <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; argc; ++i)</div>
469
- <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; {</div>
470
- <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> argument(argv[i]);</div>
471
- <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(argument))</div>
472
- <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; {</div>
473
- <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">if</span> (find(moduleNameVec.begin(), moduleNameVec.end(), argument)</div>
474
- <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; == moduleNameVec.end())</div>
475
- <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; moduleNameVec.push_back(argument);</div>
476
- <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span> (first_ir_file)</div>
477
- <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; {</div>
478
- <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; arg_value[arg_num] = argv[i];</div>
479
- <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; arg_num++;</div>
480
- <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; first_ir_file = <span class="keyword">false</span>;</div>
481
- <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div>
482
- <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div>
483
- <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">else</span></div>
484
- <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; {</div>
485
- <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; arg_value[arg_num] = argv[i];</div>
486
- <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; arg_num++;</div>
487
- <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div>
488
- <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; }</div>
489
- <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;}</div>
490
- <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; </div>
491
- <div class="line"><a name="l00460"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9"> 460</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9">LLVMUtil::removeFunAnnotations</a>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;Function*&gt;</a>&amp; removedFuncList)</div>
492
- <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;{</div>
493
- <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
494
- <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No functions to remove annotations in extapi.bc module</span></div>
495
- <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; </div>
496
- <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* module = (*removedFuncList.begin())-&gt;getParent();</div>
497
- <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* glob = module-&gt;getGlobalVariable(<span class="stringliteral">&quot;llvm.global.annotations&quot;</span>);</div>
498
- <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob-&gt;hasInitializer())</div>
499
- <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">return</span>;</div>
500
- <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; </div>
501
- <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a>* ca = SVFUtil::dyn_cast&lt;ConstantArray&gt;(glob-&gt;getInitializer());</div>
502
- <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">if</span> (ca == <span class="keyword">nullptr</span>)</div>
503
- <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span>;</div>
504
- <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; </div>
505
- <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; std::vector&lt;Constant*&gt; newAnnotations;</div>
506
- <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; ca-&gt;getNumOperands(); ++i)</div>
507
- <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; {</div>
508
- <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a>* structAn = SVFUtil::dyn_cast&lt;ConstantStruct&gt;(ca-&gt;getOperand(i));</div>
509
- <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span>)</div>
510
- <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">continue</span>;</div>
511
- <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; </div>
512
- <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* annotatedFunc = <span class="keyword">nullptr</span>;</div>
513
- <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; </div>
514
- <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="comment">// Non-opague pointer, try to cast to ConstantExpr and check for BitCast</span></div>
515
- <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* expr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(0)))</div>
516
- <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div>
517
- <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span> (expr-&gt;getOpcode() == Instruction::BitCast)</div>
518
- <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div>
519
- <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; annotatedFunc = SVFUtil::dyn_cast&lt;Function&gt;(expr-&gt;getOperand(0));</div>
520
- <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div>
521
- <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div>
522
- <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; </div>
523
- <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="comment">// Opague pointer, If the above method didn&#39;t work, try casting directly to Function</span></div>
524
- <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span> (!annotatedFunc)</div>
525
- <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div>
526
- <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; annotatedFunc = SVFUtil::dyn_cast&lt;Function&gt;(structAn-&gt;getOperand(0));</div>
527
- <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div>
528
- <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; </div>
529
- <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="comment">// Process the annotated function if it&#39;s not in the removed list</span></div>
530
- <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">if</span> (annotatedFunc &amp;&amp; std::find(removedFuncList.begin(), removedFuncList.end(), annotatedFunc) == removedFuncList.end())</div>
531
- <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; {</div>
532
- <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; newAnnotations.push_back(structAn);</div>
533
- <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div>
534
- <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div>
535
- <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; </div>
536
- <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span> (newAnnotations.size() == ca-&gt;getNumOperands())</div>
537
- <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No annotations to remove</span></div>
538
- <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; </div>
539
- <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* annotationsType = ArrayType::get(ca-&gt;getType()-&gt;getElementType(), newAnnotations.size());</div>
540
- <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* newCA = ConstantArray::get(annotationsType, newAnnotations);</div>
541
- <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; </div>
542
- <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; glob-&gt;setName(<span class="stringliteral">&quot;llvm.global.annotations.old&quot;</span>);</div>
543
- <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *GV = <span class="keyword">new</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>(newCA-&gt;getType(), glob-&gt;isConstant(), glob-&gt;getLinkage(), newCA, <span class="stringliteral">&quot;llvm.global.annotations&quot;</span>);</div>
544
- <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; GV-&gt;setSection(glob-&gt;getSection());</div>
545
- <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; module-&gt;getGlobalList().push_back(GV);</div>
546
- <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; </div>
547
- <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; glob-&gt;replaceAllUsesWith(GV);</div>
548
- <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; glob-&gt;eraseFromParent();</div>
549
- <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;}</div>
550
- <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; </div>
551
- <div class="line"><a name="l00521"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466"> 521</a></span>&#160;std::vector&lt;const Function *&gt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
552
- <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;{</div>
553
- <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; std::vector&lt;const Function *&gt; calledFunctions;</div>
554
- <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> &amp;I : instructions(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
555
- <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; {</div>
556
- <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *callInst = SVFUtil::dyn_cast&lt;CallBase&gt;(&amp;I))</div>
557
- <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {</div>
558
- <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *calledFunction = callInst-&gt;getCalledFunction();</div>
559
- <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">if</span> (calledFunction)</div>
560
- <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; {</div>
561
- <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; calledFunctions.push_back(calledFunction);</div>
562
- <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; std::vector&lt;const Function *&gt; nestedCalledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">getCalledFunctions</a>(calledFunction);</div>
563
- <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; calledFunctions.insert(calledFunctions.end(), nestedCalledFunctions.begin(), nestedCalledFunctions.end());</div>
564
- <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div>
565
- <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; }</div>
566
- <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; }</div>
567
- <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">return</span> calledFunctions;</div>
568
- <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;}</div>
569
- <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; </div>
570
- <div class="line"><a name="l00540"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e"> 540</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">LLVMUtil::isUnusedGlobalVariable</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global)</div>
571
- <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;{</div>
572
- <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="comment">// Check if it is an empty global annotations</span></div>
573
- <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">if</span> (global.getName() == <span class="stringliteral">&quot;llvm.global.annotations&quot;</span> &amp;&amp; SVFUtil::isa&lt;ConstantArray&gt;(global.getInitializer()))</div>
574
- <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
575
- <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">else</span></div>
576
- <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; {</div>
577
- <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="comment">// Check if any global strings has at least one effective user</span></div>
578
- <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; use : global.uses())</div>
579
- <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">if</span> (use.getUser()-&gt;getNumUses() != 0)</div>
580
- <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
581
- <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; }</div>
582
- <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
583
- <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;}</div>
584
- <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; </div>
585
- <div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2"> 555</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">LLVMUtil::removeUnusedGlobalVariables</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* module)</div>
586
- <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;{</div>
587
- <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; assert(module &amp;&amp; <span class="stringliteral">&quot;Null module pointer!&quot;</span>);</div>
588
- <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; std::vector&lt;GlobalVariable*&gt; unusedGlobals;</div>
589
- <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : module-&gt;globals())</div>
590
- <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">isUnusedGlobalVariable</a>(global))</div>
591
- <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="comment">// Record unused global variables</span></div>
592
- <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; unusedGlobals.push_back(&amp;global);</div>
593
- <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; </div>
594
- <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="comment">// Delete unused global variables</span></div>
595
- <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* global : unusedGlobals)</div>
596
- <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; global-&gt;eraseFromParent();</div>
597
- <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;}</div>
598
- <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; </div>
599
- <div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5"> 570</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5">LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;Function*&gt;</a> removedFuncList)</div>
600
- <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;{</div>
601
- <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
602
- <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">return</span>;</div>
463
+ <div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732"> 432</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">LLVMUtil::processArguments</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv, <span class="keywordtype">int</span> &amp;arg_num, <span class="keywordtype">char</span> **arg_value,</div>
464
+ <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; std::vector&lt;std::string&gt; &amp;moduleNameVec)</div>
465
+ <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;{</div>
466
+ <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordtype">bool</span> first_ir_file = <span class="keyword">true</span>;</div>
467
+ <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; argc; ++i)</div>
468
+ <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; {</div>
469
+ <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> argument(argv[i]);</div>
470
+ <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(argument))</div>
471
+ <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; {</div>
472
+ <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">if</span> (find(moduleNameVec.begin(), moduleNameVec.end(), argument)</div>
473
+ <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; == moduleNameVec.end())</div>
474
+ <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; moduleNameVec.push_back(argument);</div>
475
+ <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">if</span> (first_ir_file)</div>
476
+ <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; {</div>
477
+ <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; arg_value[arg_num] = argv[i];</div>
478
+ <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; arg_num++;</div>
479
+ <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; first_ir_file = <span class="keyword">false</span>;</div>
480
+ <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; }</div>
481
+ <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div>
482
+ <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">else</span></div>
483
+ <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; {</div>
484
+ <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; arg_value[arg_num] = argv[i];</div>
485
+ <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; arg_num++;</div>
486
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div>
487
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div>
488
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;}</div>
489
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; </div>
490
+ <div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9"> 459</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9">LLVMUtil::removeFunAnnotations</a>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;Function*&gt;</a>&amp; removedFuncList)</div>
491
+ <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;{</div>
492
+ <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
493
+ <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No functions to remove annotations in extapi.bc module</span></div>
494
+ <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; </div>
495
+ <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* module = (*removedFuncList.begin())-&gt;getParent();</div>
496
+ <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* glob = module-&gt;getGlobalVariable(<span class="stringliteral">&quot;llvm.global.annotations&quot;</span>);</div>
497
+ <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob-&gt;hasInitializer())</div>
498
+ <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">return</span>;</div>
499
+ <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; </div>
500
+ <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a>* ca = SVFUtil::dyn_cast&lt;ConstantArray&gt;(glob-&gt;getInitializer());</div>
501
+ <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">if</span> (ca == <span class="keyword">nullptr</span>)</div>
502
+ <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">return</span>;</div>
503
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; </div>
504
+ <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; std::vector&lt;Constant*&gt; newAnnotations;</div>
505
+ <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; ca-&gt;getNumOperands(); ++i)</div>
506
+ <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; {</div>
507
+ <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a>* structAn = SVFUtil::dyn_cast&lt;ConstantStruct&gt;(ca-&gt;getOperand(i));</div>
508
+ <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span>)</div>
509
+ <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">continue</span>;</div>
510
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; </div>
511
+ <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* annotatedFunc = <span class="keyword">nullptr</span>;</div>
512
+ <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; </div>
513
+ <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="comment">// Non-opague pointer, try to cast to ConstantExpr and check for BitCast</span></div>
514
+ <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* expr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(0)))</div>
515
+ <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; {</div>
516
+ <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">if</span> (expr-&gt;getOpcode() == Instruction::BitCast)</div>
517
+ <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; {</div>
518
+ <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; annotatedFunc = SVFUtil::dyn_cast&lt;Function&gt;(expr-&gt;getOperand(0));</div>
519
+ <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div>
520
+ <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div>
521
+ <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; </div>
522
+ <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="comment">// Opague pointer, If the above method didn&#39;t work, try casting directly to Function</span></div>
523
+ <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">if</span> (!annotatedFunc)</div>
524
+ <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; {</div>
525
+ <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; annotatedFunc = SVFUtil::dyn_cast&lt;Function&gt;(structAn-&gt;getOperand(0));</div>
526
+ <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div>
527
+ <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; </div>
528
+ <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="comment">// Process the annotated function if it&#39;s not in the removed list</span></div>
529
+ <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">if</span> (annotatedFunc &amp;&amp; std::find(removedFuncList.begin(), removedFuncList.end(), annotatedFunc) == removedFuncList.end())</div>
530
+ <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; {</div>
531
+ <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; newAnnotations.push_back(structAn);</div>
532
+ <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; }</div>
533
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div>
534
+ <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; </div>
535
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">if</span> (newAnnotations.size() == ca-&gt;getNumOperands())</div>
536
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No annotations to remove</span></div>
537
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; </div>
538
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* annotationsType = ArrayType::get(ca-&gt;getType()-&gt;getElementType(), newAnnotations.size());</div>
539
+ <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* newCA = ConstantArray::get(annotationsType, newAnnotations);</div>
540
+ <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; </div>
541
+ <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; glob-&gt;setName(<span class="stringliteral">&quot;llvm.global.annotations.old&quot;</span>);</div>
542
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *GV = <span class="keyword">new</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>(newCA-&gt;getType(), glob-&gt;isConstant(), glob-&gt;getLinkage(), newCA, <span class="stringliteral">&quot;llvm.global.annotations&quot;</span>);</div>
543
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; GV-&gt;setSection(glob-&gt;getSection());</div>
544
+ <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; </div>
545
+ <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &lt; 17)</span></div>
546
+ <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; module-&gt;getGlobalList().push_back(GV);</div>
547
+ <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="preprocessor">#elif (LLVM_VERSION_MAJOR &gt;= 17)</span></div>
548
+ <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; module-&gt;insertGlobalVariable(GV);</div>
549
+ <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="preprocessor">#else</span></div>
550
+ <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;llvm version not supported!&quot;</span>);</div>
551
+ <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="preprocessor">#endif</span></div>
552
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; </div>
553
+ <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; glob-&gt;replaceAllUsesWith(GV);</div>
554
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; glob-&gt;eraseFromParent();</div>
555
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;}</div>
556
+ <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; </div>
557
+ <div class="line"><a name="l00527"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466"> 527</a></span>&#160;std::vector&lt;const Function *&gt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
558
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;{</div>
559
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; std::vector&lt;const Function *&gt; calledFunctions;</div>
560
+ <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> &amp;I : instructions(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
561
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; {</div>
562
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *callInst = SVFUtil::dyn_cast&lt;CallBase&gt;(&amp;I))</div>
563
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; {</div>
564
+ <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *calledFunction = callInst-&gt;getCalledFunction();</div>
565
+ <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">if</span> (calledFunction)</div>
566
+ <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; {</div>
567
+ <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; calledFunctions.push_back(calledFunction);</div>
568
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; std::vector&lt;const Function *&gt; nestedCalledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">getCalledFunctions</a>(calledFunction);</div>
569
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; calledFunctions.insert(calledFunctions.end(), nestedCalledFunctions.begin(), nestedCalledFunctions.end());</div>
570
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; }</div>
571
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div>
572
+ <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; }</div>
573
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">return</span> calledFunctions;</div>
574
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;}</div>
575
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; </div>
576
+ <div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e"> 546</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">LLVMUtil::isUnusedGlobalVariable</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global)</div>
577
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;{</div>
578
+ <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="comment">// Check if it is an empty global annotations</span></div>
579
+ <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">if</span> (global.getName() == <span class="stringliteral">&quot;llvm.global.annotations&quot;</span> &amp;&amp; SVFUtil::isa&lt;ConstantArray&gt;(global.getInitializer()))</div>
580
+ <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
581
+ <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">else</span></div>
582
+ <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; {</div>
583
+ <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="comment">// Check if any global strings has at least one effective user</span></div>
584
+ <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; use : global.uses())</div>
585
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">if</span> (use.getUser()-&gt;getNumUses() != 0)</div>
586
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
587
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; }</div>
588
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
589
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;}</div>
590
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; </div>
591
+ <div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2"> 561</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">LLVMUtil::removeUnusedGlobalVariables</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* module)</div>
592
+ <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;{</div>
593
+ <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; assert(module &amp;&amp; <span class="stringliteral">&quot;Null module pointer!&quot;</span>);</div>
594
+ <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; std::vector&lt;GlobalVariable*&gt; unusedGlobals;</div>
595
+ <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : module-&gt;globals())</div>
596
+ <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">isUnusedGlobalVariable</a>(global))</div>
597
+ <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="comment">// Record unused global variables</span></div>
598
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; unusedGlobals.push_back(&amp;global);</div>
599
+ <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; </div>
600
+ <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="comment">// Delete unused global variables</span></div>
601
+ <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* global : unusedGlobals)</div>
602
+ <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; global-&gt;eraseFromParent();</div>
603
+ <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;}</div>
603
604
  <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; </div>
604
- <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = (*removedFuncList.begin())-&gt;getParent();</div>
605
- <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">if</span> (mod-&gt;getName().str() != <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-&gt;<a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>())</div>
606
- <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">return</span>;</div>
607
- <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; </div>
608
- <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9">LLVMUtil::removeFunAnnotations</a>(removedFuncList);</div>
609
- <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; </div>
610
- <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; std::vector&lt;Function*&gt; funcsToKeep;</div>
611
- <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keyword">auto</span> isCalledFunction = [](<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">llvm::Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
612
- <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; {</div>
613
- <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; assert(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> &amp;&amp; <span class="stringliteral">&quot;Null function pointer!&quot;</span>);</div>
614
- <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; use : <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;uses())</div>
615
- <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; {</div>
616
- <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">llvm::User</a>* user = use.getUser();</div>
617
- <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">if</span> (llvm::isa&lt;llvm::CallBase&gt;(user))</div>
618
- <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
619
- <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; }</div>
620
- <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
621
- <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; };</div>
622
- <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; </div>
623
- <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : removedFuncList)</div>
624
- <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; {</div>
625
- <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">if</span> (isCalledFunction(func))</div>
626
- <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="comment">// Record first kind function(which does not contain any invocation statements)</span></div>
627
- <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; funcsToKeep.push_back(func);</div>
628
- <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">else</span></div>
629
- <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="comment">// Delete second kind function(which contains invocation statements)</span></div>
630
- <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; func-&gt;eraseFromParent();</div>
631
- <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; }</div>
632
- <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="comment">// Delete first kind functions</span></div>
633
- <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : funcsToKeep)</div>
634
- <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; func-&gt;eraseFromParent();</div>
635
- <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="comment">// Delete unused global variables</span></div>
636
- <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">removeUnusedGlobalVariables</a>(mod);</div>
637
- <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;}</div>
638
- <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; </div>
639
- <div class="line"><a name="l00618"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#af4c9c5d445107b1816a4be93852ba612"> 618</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#af4c9c5d445107b1816a4be93852ba612">LLVMUtil::restoreFuncName</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName)</div>
640
- <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;{</div>
641
- <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; assert(!funcName.empty() &amp;&amp; <span class="stringliteral">&quot;Empty function name&quot;</span>);</div>
642
- <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="comment">// Some function names change due to mangling, such as &quot;fopen&quot; to &quot;\01_fopen&quot; on macOS.</span></div>
643
- <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="comment">// Since C function names cannot include &#39;.&#39;, change the function name from llvm.memcpy.p0i8.p0i8.i64 to llvm_memcpy_p0i8_p0i8_i64.&quot;</span></div>
644
- <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordtype">bool</span> hasSpecialPrefix = funcName[0] == <span class="charliteral">&#39;\01&#39;</span>;</div>
645
- <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordtype">bool</span> hasDot = funcName.find(<span class="charliteral">&#39;.&#39;</span>) != std::string::npos;</div>
646
- <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; </div>
647
- <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">if</span> (!hasDot &amp;&amp; !hasSpecialPrefix)</div>
648
- <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">return</span> funcName;</div>
649
- <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; </div>
650
- <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="comment">// Remove prefix &quot;\01_&quot; or &quot;\01&quot;</span></div>
651
- <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">if</span> (hasSpecialPrefix)</div>
652
- <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; {</div>
653
- <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> prefix1 = <span class="stringliteral">&quot;\01_&quot;</span>;</div>
654
- <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> prefix2 = <span class="stringliteral">&quot;\01&quot;</span>;</div>
655
- <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">if</span> (funcName.substr(0, prefix1.length()) == prefix1)</div>
656
- <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; funcName = funcName.substr(prefix1.length());</div>
657
- <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (funcName.substr(0, prefix2.length()) == prefix2)</div>
658
- <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; funcName = funcName.substr(prefix2.length());</div>
659
- <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; }</div>
660
- <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="comment">// Replace &#39;.&#39; with &#39;_&#39;</span></div>
661
- <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">if</span> (hasDot)</div>
662
- <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; std::replace(funcName.begin(), funcName.end(), <span class="charliteral">&#39;.&#39;</span>, <span class="charliteral">&#39;_&#39;</span>);</div>
663
- <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; </div>
664
- <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">return</span> funcName;</div>
665
- <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160;}</div>
666
- <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; </div>
667
- <div class="line"><a name="l00646"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ab8511d0e24da255dd518457568326c70"> 646</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab8511d0e24da255dd518457568326c70">LLVMUtil::getFunction</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>)</div>
668
- <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;{</div>
669
- <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
670
- <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;}</div>
671
- <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; </div>
672
- <div class="line"><a name="l00651"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a973ee05189ca5bbe832be00f2be9baa4"> 651</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a973ee05189ca5bbe832be00f2be9baa4">LLVMUtil::getGlobalRep</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
673
- <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;{</div>
674
- <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div>
675
- <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; {</div>
676
- <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;hasGlobalRep(gvar))</div>
677
- <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; val = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a757bf149437cce22163c764ea9993e12">getGlobalRep</a>(gvar);</div>
678
- <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; }</div>
679
- <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">return</span> val;</div>
680
- <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;}</div>
681
- <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; </div>
682
- <div class="line"><a name="l00661"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d"> 661</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">LLVMUtil::getTypeSizeInBytes</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
683
- <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;{</div>
684
- <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div>
685
- <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;isSized())</div>
686
- <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getMainLLVMModule())-&gt;getTypeStoreSize(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>*<span class="keyword">&gt;</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>));</div>
687
- <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">else</span></div>
688
- <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">return</span> 0;</div>
689
- <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;}</div>
690
- <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; </div>
691
- <div class="line"><a name="l00670"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2b5fdf455c5dd40c0baa60185e5e41c6"> 670</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">LLVMUtil::getTypeSizeInBytes</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *sty, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_idx)</div>
692
- <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;{</div>
693
- <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; </div>
694
- <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">StructLayout</a> *stTySL = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getMainLLVMModule())-&gt;getStructLayout( <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *<span class="keyword">&gt;</span>(sty) );</div>
695
- <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">if</span>(sty-&gt;isOpaque())</div>
696
- <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">return</span> 0;</div>
697
- <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">else</span></div>
698
- <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">return</span> stTySL-&gt;getElementOffset(field_idx);</div>
699
- <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;}</div>
700
- <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; </div>
701
- <div class="line"><a name="l00684"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8"> 684</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val )</div>
702
- <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;{</div>
703
- <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">if</span>(val==<span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="stringliteral">&quot;{ empty val }&quot;</span>;</div>
704
- <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; </div>
705
- <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
706
- <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; std::stringstream rawstr(str);</div>
707
- <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div>
708
- <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; </div>
709
- <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast&lt;Instruction&gt;(val))</div>
710
- <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; {</div>
711
- <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;AllocaInst&gt;(inst))</div>
712
- <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; {</div>
713
- <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">for</span> (llvm::DbgInfoIntrinsic *DII : FindDbgAddrUses(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>*<span class="keyword">&gt;</span>(inst)))</div>
714
- <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; {</div>
715
- <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">if</span> (llvm::DbgDeclareInst *DDI = SVFUtil::dyn_cast&lt;llvm::DbgDeclareInst&gt;(DII))</div>
716
- <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; {</div>
717
- <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; llvm::DIVariable *DIVar = SVFUtil::cast&lt;llvm::DIVariable&gt;(DDI-&gt;getVariable());</div>
718
- <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; DIVar-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; DIVar-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
719
- <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keywordflow">break</span>;</div>
720
- <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; }</div>
721
- <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; }</div>
722
- <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; }</div>
723
- <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *N = inst-&gt;getMetadata(<span class="stringliteral">&quot;dbg&quot;</span>)) <span class="comment">// Here I is an LLVM instruction</span></div>
724
- <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; {</div>
725
- <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; llvm::DILocation* Loc = SVFUtil::cast&lt;llvm::DILocation&gt;(N); <span class="comment">// DILocation is in DebugInfo.h</span></div>
726
- <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordtype">unsigned</span> Line = Loc-&gt;getLine();</div>
727
- <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordtype">unsigned</span> Column = Loc-&gt;getColumn();</div>
728
- <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> File = Loc-&gt;getFilename().str();</div>
729
- <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div>
730
- <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">if</span>(File.empty() || Line == 0)</div>
731
- <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; {</div>
732
- <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keyword">auto</span> inlineLoc = Loc-&gt;getInlinedAt();</div>
733
- <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">if</span>(inlineLoc)</div>
734
- <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; {</div>
735
- <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; Line = inlineLoc-&gt;getLine();</div>
736
- <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; Column = inlineLoc-&gt;getColumn();</div>
737
- <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; File = inlineLoc-&gt;getFilename().str();</div>
738
- <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; }</div>
739
- <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; }</div>
740
- <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; Line &lt;&lt; <span class="stringliteral">&quot;, \&quot;cl\&quot;: &quot;</span> &lt;&lt; Column &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; File &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
741
- <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; }</div>
742
- <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; }</div>
743
- <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* argument = SVFUtil::dyn_cast&lt;Argument&gt;(val))</div>
744
- <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; {</div>
745
- <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 1)</div>
746
- <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;st&quot;</span>;</div>
747
- <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 2)</div>
748
- <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;nd&quot;</span>;</div>
749
- <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 3)</div>
750
- <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;rd&quot;</span>;</div>
751
- <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">else</span></div>
752
- <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;th&quot;</span>;</div>
753
- <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; arg &quot;</span> &lt;&lt; argument-&gt;getParent()-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot; &quot;</span></div>
754
- <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(argument-&gt;getParent());</div>
755
- <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; }</div>
756
- <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div>
757
- <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; {</div>
758
- <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Glob &quot;</span>;</div>
759
- <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <a class="code" href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">NamedMDNode</a>* CU_Nodes = gvar-&gt;getParent()-&gt;getNamedMetadata(<span class="stringliteral">&quot;llvm.dbg.cu&quot;</span>);</div>
760
- <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">if</span>(CU_Nodes)</div>
761
- <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; {</div>
762
- <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CU_Nodes-&gt;getNumOperands(); i != e; ++i)</div>
763
- <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; {</div>
764
- <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; llvm::DICompileUnit *CUNode = SVFUtil::cast&lt;llvm::DICompileUnit&gt;(CU_Nodes-&gt;getOperand(i));</div>
765
- <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordflow">for</span> (llvm::DIGlobalVariableExpression *GV : CUNode-&gt;getGlobalVariables())</div>
766
- <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; {</div>
767
- <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; llvm::DIGlobalVariable * DGV = GV-&gt;getVariable();</div>
768
- <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; </div>
769
- <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordflow">if</span>(DGV-&gt;getName() == gvar-&gt;getName())</div>
770
- <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; {</div>
771
- <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; DGV-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; DGV-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
772
- <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; }</div>
773
- <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; </div>
774
- <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; }</div>
775
- <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; }</div>
776
- <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; }</div>
777
- <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; }</div>
778
- <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast&lt;Function&gt;(val))</div>
779
- <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; {</div>
780
- <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(func);</div>
781
- <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; }</div>
782
- <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast&lt;BasicBlock&gt;(val))</div>
783
- <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; {</div>
784
- <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;basic block\&quot;: &quot;</span> &lt;&lt; bb-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;, \&quot;location\&quot;: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(bb-&gt;getFirstNonPHI());</div>
785
- <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; }</div>
786
- <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
787
- <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; {</div>
788
- <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;constant data&quot;</span>;</div>
789
- <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; }</div>
790
- <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">else</span></div>
791
- <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; {</div>
792
- <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;N/A&quot;</span>;</div>
793
- <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; }</div>
794
- <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }&quot;</span>;</div>
795
- <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; </div>
796
- <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">if</span>(rawstr.str()==<span class="stringliteral">&quot;{ }&quot;</span>)</div>
797
- <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
798
- <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
799
- <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;}</div>
800
- <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; </div>
605
+ <div class="line"><a name="l00576"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5"> 576</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5">LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;Function*&gt;</a> removedFuncList)</div>
606
+ <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;{</div>
607
+ <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
608
+ <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">return</span>;</div>
609
+ <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; </div>
610
+ <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = (*removedFuncList.begin())-&gt;getParent();</div>
611
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span> (mod-&gt;getName().str() != <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-&gt;<a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>())</div>
612
+ <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">return</span>;</div>
613
+ <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; </div>
614
+ <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9">LLVMUtil::removeFunAnnotations</a>(removedFuncList);</div>
615
+ <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; </div>
616
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; std::vector&lt;Function*&gt; funcsToKeep;</div>
617
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keyword">auto</span> isCalledFunction = [](<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">llvm::Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
618
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; {</div>
619
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; assert(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> &amp;&amp; <span class="stringliteral">&quot;Null function pointer!&quot;</span>);</div>
620
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; use : <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;uses())</div>
621
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; {</div>
622
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">llvm::User</a>* user = use.getUser();</div>
623
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">if</span> (llvm::isa&lt;llvm::CallBase&gt;(user))</div>
624
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
625
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; }</div>
626
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
627
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; };</div>
628
+ <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; </div>
629
+ <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : removedFuncList)</div>
630
+ <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; {</div>
631
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keywordflow">if</span> (isCalledFunction(func))</div>
632
+ <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="comment">// Record first kind function(which does not contain any invocation statements)</span></div>
633
+ <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; funcsToKeep.push_back(func);</div>
634
+ <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">else</span></div>
635
+ <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="comment">// Delete second kind function(which contains invocation statements)</span></div>
636
+ <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; func-&gt;eraseFromParent();</div>
637
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; }</div>
638
+ <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="comment">// Delete first kind functions</span></div>
639
+ <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : funcsToKeep)</div>
640
+ <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; func-&gt;eraseFromParent();</div>
641
+ <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="comment">// Delete unused global variables</span></div>
642
+ <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">removeUnusedGlobalVariables</a>(mod);</div>
643
+ <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;}</div>
644
+ <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; </div>
645
+ <div class="line"><a name="l00624"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#af4c9c5d445107b1816a4be93852ba612"> 624</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#af4c9c5d445107b1816a4be93852ba612">LLVMUtil::restoreFuncName</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName)</div>
646
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;{</div>
647
+ <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; assert(!funcName.empty() &amp;&amp; <span class="stringliteral">&quot;Empty function name&quot;</span>);</div>
648
+ <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="comment">// Some function names change due to mangling, such as &quot;fopen&quot; to &quot;\01_fopen&quot; on macOS.</span></div>
649
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="comment">// Since C function names cannot include &#39;.&#39;, change the function name from llvm.memcpy.p0i8.p0i8.i64 to llvm_memcpy_p0i8_p0i8_i64.&quot;</span></div>
650
+ <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordtype">bool</span> hasSpecialPrefix = funcName[0] == <span class="charliteral">&#39;\01&#39;</span>;</div>
651
+ <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordtype">bool</span> hasDot = funcName.find(<span class="charliteral">&#39;.&#39;</span>) != std::string::npos;</div>
652
+ <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; </div>
653
+ <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">if</span> (!hasDot &amp;&amp; !hasSpecialPrefix)</div>
654
+ <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">return</span> funcName;</div>
655
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; </div>
656
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="comment">// Remove prefix &quot;\01_&quot; or &quot;\01&quot;</span></div>
657
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">if</span> (hasSpecialPrefix)</div>
658
+ <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; {</div>
659
+ <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> prefix1 = <span class="stringliteral">&quot;\01_&quot;</span>;</div>
660
+ <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> prefix2 = <span class="stringliteral">&quot;\01&quot;</span>;</div>
661
+ <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">if</span> (funcName.substr(0, prefix1.length()) == prefix1)</div>
662
+ <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; funcName = funcName.substr(prefix1.length());</div>
663
+ <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (funcName.substr(0, prefix2.length()) == prefix2)</div>
664
+ <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; funcName = funcName.substr(prefix2.length());</div>
665
+ <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; }</div>
666
+ <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="comment">// Replace &#39;.&#39; with &#39;_&#39;</span></div>
667
+ <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">if</span> (hasDot)</div>
668
+ <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; std::replace(funcName.begin(), funcName.end(), <span class="charliteral">&#39;.&#39;</span>, <span class="charliteral">&#39;_&#39;</span>);</div>
669
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; </div>
670
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">return</span> funcName;</div>
671
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;}</div>
672
+ <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; </div>
673
+ <div class="line"><a name="l00652"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ab8511d0e24da255dd518457568326c70"> 652</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab8511d0e24da255dd518457568326c70">LLVMUtil::getFunction</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>)</div>
674
+ <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;{</div>
675
+ <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
676
+ <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;}</div>
677
+ <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; </div>
678
+ <div class="line"><a name="l00657"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a973ee05189ca5bbe832be00f2be9baa4"> 657</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a973ee05189ca5bbe832be00f2be9baa4">LLVMUtil::getGlobalRep</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
679
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;{</div>
680
+ <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div>
681
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; {</div>
682
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;hasGlobalRep(gvar))</div>
683
+ <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; val = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a757bf149437cce22163c764ea9993e12">getGlobalRep</a>(gvar);</div>
684
+ <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; }</div>
685
+ <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">return</span> val;</div>
686
+ <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;}</div>
687
+ <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; </div>
688
+ <div class="line"><a name="l00667"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d"> 667</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">LLVMUtil::getTypeSizeInBytes</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
689
+ <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;{</div>
690
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div>
691
+ <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;isSized())</div>
692
+ <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getMainLLVMModule())-&gt;getTypeStoreSize(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>*<span class="keyword">&gt;</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>));</div>
693
+ <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">else</span></div>
694
+ <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">return</span> 0;</div>
695
+ <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;}</div>
696
+ <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; </div>
697
+ <div class="line"><a name="l00676"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2b5fdf455c5dd40c0baa60185e5e41c6"> 676</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">LLVMUtil::getTypeSizeInBytes</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *sty, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_idx)</div>
698
+ <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;{</div>
699
+ <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; </div>
700
+ <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">StructLayout</a> *stTySL = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getMainLLVMModule())-&gt;getStructLayout( <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *<span class="keyword">&gt;</span>(sty) );</div>
701
+ <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">if</span>(sty-&gt;isOpaque())</div>
702
+ <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">return</span> 0;</div>
703
+ <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordflow">else</span></div>
704
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">return</span> stTySL-&gt;getElementOffset(field_idx);</div>
705
+ <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;}</div>
706
+ <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; </div>
707
+ <div class="line"><a name="l00690"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8"> 690</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val )</div>
708
+ <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;{</div>
709
+ <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">if</span>(val==<span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="stringliteral">&quot;{ empty val }&quot;</span>;</div>
710
+ <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; </div>
711
+ <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
712
+ <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; std::stringstream rawstr(str);</div>
713
+ <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div>
714
+ <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; </div>
715
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast&lt;Instruction&gt;(val))</div>
716
+ <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; {</div>
717
+ <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;AllocaInst&gt;(inst))</div>
718
+ <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; {</div>
719
+ <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keywordflow">for</span> (llvm::DbgInfoIntrinsic *DII : FindDbgDeclareUses(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>*<span class="keyword">&gt;</span>(inst)))</div>
720
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; {</div>
721
+ <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">if</span> (llvm::DbgDeclareInst *DDI = SVFUtil::dyn_cast&lt;llvm::DbgDeclareInst&gt;(DII))</div>
722
+ <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; {</div>
723
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; llvm::DIVariable *DIVar = SVFUtil::cast&lt;llvm::DIVariable&gt;(DDI-&gt;getVariable());</div>
724
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; DIVar-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; DIVar-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
725
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">break</span>;</div>
726
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; }</div>
727
+ <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; }</div>
728
+ <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; }</div>
729
+ <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *N = inst-&gt;getMetadata(<span class="stringliteral">&quot;dbg&quot;</span>)) <span class="comment">// Here I is an LLVM instruction</span></div>
730
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; {</div>
731
+ <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; llvm::DILocation* Loc = SVFUtil::cast&lt;llvm::DILocation&gt;(N); <span class="comment">// DILocation is in DebugInfo.h</span></div>
732
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordtype">unsigned</span> Line = Loc-&gt;getLine();</div>
733
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordtype">unsigned</span> Column = Loc-&gt;getColumn();</div>
734
+ <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> File = Loc-&gt;getFilename().str();</div>
735
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div>
736
+ <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">if</span>(File.empty() || Line == 0)</div>
737
+ <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; {</div>
738
+ <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keyword">auto</span> inlineLoc = Loc-&gt;getInlinedAt();</div>
739
+ <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">if</span>(inlineLoc)</div>
740
+ <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; {</div>
741
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; Line = inlineLoc-&gt;getLine();</div>
742
+ <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; Column = inlineLoc-&gt;getColumn();</div>
743
+ <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; File = inlineLoc-&gt;getFilename().str();</div>
744
+ <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; }</div>
745
+ <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; }</div>
746
+ <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; Line &lt;&lt; <span class="stringliteral">&quot;, \&quot;cl\&quot;: &quot;</span> &lt;&lt; Column &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; File &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
747
+ <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; }</div>
748
+ <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; }</div>
749
+ <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* argument = SVFUtil::dyn_cast&lt;Argument&gt;(val))</div>
750
+ <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; {</div>
751
+ <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 1)</div>
752
+ <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;st&quot;</span>;</div>
753
+ <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 2)</div>
754
+ <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;nd&quot;</span>;</div>
755
+ <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 3)</div>
756
+ <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;rd&quot;</span>;</div>
757
+ <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">else</span></div>
758
+ <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;th&quot;</span>;</div>
759
+ <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; arg &quot;</span> &lt;&lt; argument-&gt;getParent()-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot; &quot;</span></div>
760
+ <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(argument-&gt;getParent());</div>
761
+ <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; }</div>
762
+ <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div>
763
+ <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; {</div>
764
+ <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Glob &quot;</span>;</div>
765
+ <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <a class="code" href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">NamedMDNode</a>* CU_Nodes = gvar-&gt;getParent()-&gt;getNamedMetadata(<span class="stringliteral">&quot;llvm.dbg.cu&quot;</span>);</div>
766
+ <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">if</span>(CU_Nodes)</div>
767
+ <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; {</div>
768
+ <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CU_Nodes-&gt;getNumOperands(); i != e; ++i)</div>
769
+ <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; {</div>
770
+ <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; llvm::DICompileUnit *CUNode = SVFUtil::cast&lt;llvm::DICompileUnit&gt;(CU_Nodes-&gt;getOperand(i));</div>
771
+ <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="keywordflow">for</span> (llvm::DIGlobalVariableExpression *GV : CUNode-&gt;getGlobalVariables())</div>
772
+ <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; {</div>
773
+ <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; llvm::DIGlobalVariable * DGV = GV-&gt;getVariable();</div>
774
+ <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; </div>
775
+ <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="keywordflow">if</span>(DGV-&gt;getName() == gvar-&gt;getName())</div>
776
+ <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; {</div>
777
+ <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; DGV-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; DGV-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
778
+ <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; }</div>
779
+ <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; </div>
780
+ <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; }</div>
781
+ <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; }</div>
782
+ <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; }</div>
783
+ <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; }</div>
784
+ <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast&lt;Function&gt;(val))</div>
785
+ <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; {</div>
786
+ <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(func);</div>
787
+ <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; }</div>
788
+ <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast&lt;BasicBlock&gt;(val))</div>
789
+ <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; {</div>
790
+ <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;basic block\&quot;: &quot;</span> &lt;&lt; bb-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;, \&quot;location\&quot;: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(bb-&gt;getFirstNonPHI());</div>
791
+ <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; }</div>
792
+ <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
793
+ <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; {</div>
794
+ <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;constant data&quot;</span>;</div>
795
+ <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; }</div>
796
+ <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">else</span></div>
797
+ <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; {</div>
798
+ <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;N/A&quot;</span>;</div>
799
+ <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; }</div>
800
+ <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }&quot;</span>;</div>
801
801
  <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; </div>
802
- <div class="line"><a name="l00788"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c"> 788</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">LLVMUtil::getSourceLocOfFunction</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
803
- <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;{</div>
804
- <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
805
- <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; std::stringstream rawstr(str);</div>
806
- <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="comment">/*</span></div>
807
- <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;<span class="comment"> * https://reviews.llvm.org/D18074?id=50385</span></div>
808
- <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;<span class="comment"> * looks like the relevant</span></div>
809
- <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;<span class="comment"> */</span></div>
810
- <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">llvm::DISubprogram</a> *SP = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getSubprogram())</div>
811
- <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; {</div>
812
- <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="keywordflow">if</span> (SP-&gt;describes(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
813
- <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; SP-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;file\&quot;: \&quot;&quot;</span> &lt;&lt; SP-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
814
- <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; }</div>
815
- <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
816
- <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160;}</div>
817
- <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; </div>
818
- <div class="line"><a name="l00805"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a7fa1f910598426330f08da19e9efdfa3"> 805</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">LLVMUtil::getNextInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector&lt;const Instruction*&gt;&amp; instList)</div>
819
- <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160;{</div>
820
- <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div>
821
- <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; {</div>
822
- <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst-&gt;getNextNode();</div>
823
- <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
824
- <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
825
- <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">else</span></div>
826
- <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; instList.push_back(nextInst);</div>
827
- <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; }</div>
828
- <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keywordflow">else</span></div>
829
- <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; {</div>
830
- <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
831
- <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
832
- <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(BB), ie = succ_end(BB); it != ie; ++it)</div>
833
- <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; {</div>
834
- <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &amp;((*it)-&gt;front());</div>
835
- <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
836
- <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
837
- <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="keywordflow">else</span></div>
838
- <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; instList.push_back(nextInst);</div>
839
- <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; }</div>
840
- <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; }</div>
841
- <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;}</div>
842
- <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; </div>
843
- <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; </div>
844
- <div class="line"><a name="l00832"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a08876cc07f9b9dbe84f87aea09e9824f"> 832</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">LLVMUtil::getPrevInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector&lt;const Instruction*&gt;&amp; instList)</div>
845
- <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160;{</div>
846
- <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keywordflow">if</span> (curInst != &amp;(curInst-&gt;getParent()-&gt;front()))</div>
847
- <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; {</div>
848
- <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst-&gt;getPrevNode();</div>
849
- <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
850
- <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
851
- <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keywordflow">else</span></div>
852
- <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; instList.push_back(prevInst);</div>
853
- <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; }</div>
854
- <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">else</span></div>
855
- <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; {</div>
856
- <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
857
- <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
858
- <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), ie = pred_end(BB); it != ie; ++it)</div>
859
- <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; {</div>
860
- <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &amp;((*it)-&gt;back());</div>
861
- <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
862
- <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
863
- <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">else</span></div>
864
- <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; instList.push_back(prevInst);</div>
865
- <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div>
866
- <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; }</div>
867
- <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;}</div>
868
- <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; </div>
869
- <div class="line"><a name="l00858"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c"> 858</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">LLVMUtil::isConstantObjSym</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* val)</div>
870
- <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160;{</div>
871
- <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getLLVMValue(val));</div>
802
+ <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">if</span>(rawstr.str()==<span class="stringliteral">&quot;{ }&quot;</span>)</div>
803
+ <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
804
+ <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
805
+ <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;}</div>
806
+ <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; </div>
807
+ <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; </div>
808
+ <div class="line"><a name="l00794"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c"> 794</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">LLVMUtil::getSourceLocOfFunction</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
809
+ <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;{</div>
810
+ <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
811
+ <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; std::stringstream rawstr(str);</div>
812
+ <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="comment">/*</span></div>
813
+ <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;<span class="comment"> * https://reviews.llvm.org/D18074?id=50385</span></div>
814
+ <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;<span class="comment"> * looks like the relevant</span></div>
815
+ <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;<span class="comment"> */</span></div>
816
+ <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">llvm::DISubprogram</a> *SP = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getSubprogram())</div>
817
+ <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; {</div>
818
+ <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">if</span> (SP-&gt;describes(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
819
+ <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; SP-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;file\&quot;: \&quot;&quot;</span> &lt;&lt; SP-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
820
+ <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; }</div>
821
+ <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
822
+ <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;}</div>
823
+ <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; </div>
824
+ <div class="line"><a name="l00811"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a7fa1f910598426330f08da19e9efdfa3"> 811</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">LLVMUtil::getNextInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector&lt;const Instruction*&gt;&amp; instList)</div>
825
+ <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160;{</div>
826
+ <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div>
827
+ <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; {</div>
828
+ <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst-&gt;getNextNode();</div>
829
+ <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
830
+ <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
831
+ <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">else</span></div>
832
+ <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; instList.push_back(nextInst);</div>
833
+ <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; }</div>
834
+ <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">else</span></div>
835
+ <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; {</div>
836
+ <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
837
+ <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
838
+ <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(BB), ie = succ_end(BB); it != ie; ++it)</div>
839
+ <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; {</div>
840
+ <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &amp;((*it)-&gt;front());</div>
841
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
842
+ <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
843
+ <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">else</span></div>
844
+ <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; instList.push_back(nextInst);</div>
845
+ <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; }</div>
846
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; }</div>
847
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160;}</div>
848
+ <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; </div>
849
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; </div>
850
+ <div class="line"><a name="l00838"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a08876cc07f9b9dbe84f87aea09e9824f"> 838</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">LLVMUtil::getPrevInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector&lt;const Instruction*&gt;&amp; instList)</div>
851
+ <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;{</div>
852
+ <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">if</span> (curInst != &amp;(curInst-&gt;getParent()-&gt;front()))</div>
853
+ <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; {</div>
854
+ <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst-&gt;getPrevNode();</div>
855
+ <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
856
+ <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
857
+ <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">else</span></div>
858
+ <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; instList.push_back(prevInst);</div>
859
+ <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; }</div>
860
+ <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keywordflow">else</span></div>
861
+ <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; {</div>
862
+ <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
863
+ <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
864
+ <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), ie = pred_end(BB); it != ie; ++it)</div>
865
+ <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; {</div>
866
+ <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &amp;((*it)-&gt;back());</div>
867
+ <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
868
+ <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
869
+ <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <span class="keywordflow">else</span></div>
870
+ <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; instList.push_back(prevInst);</div>
871
+ <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; }</div>
872
+ <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; }</div>
872
873
  <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160;}</div>
873
874
  <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; </div>
874
- <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; </div>
875
- <div class="line"><a name="l00864"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f"> 864</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f">LLVMUtil::getSuccBBandCondValPairVec</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a> &amp;switchInst, <a class="code" href="namespaceSVF.html#a8de26e1810ea0c3b1e8ad62f1c8a864d">SuccBBAndCondValPairVec</a> &amp;vec)</div>
875
+ <div class="line"><a name="l00864"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c"> 864</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">LLVMUtil::isConstantObjSym</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* val)</div>
876
876
  <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160;{</div>
877
- <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <span class="comment">// get default successor basic block and default case value (nullptr)</span></div>
878
- <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; vec.push_back({switchInst.getDefaultDest(), <span class="keyword">nullptr</span>});</div>
877
+ <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getLLVMValue(val));</div>
878
+ <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160;}</div>
879
879
  <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; </div>
880
- <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="comment">// get normal case value and it&#39;s successor basic block</span></div>
881
- <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; cs : switchInst.cases())</div>
882
- <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; vec.push_back({cs.getCaseSuccessor(), cs.getCaseValue()});</div>
883
- <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;}</div>
884
- <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; </div>
885
- <div class="line"><a name="l00874"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220"> 874</a></span>&#160;<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220">LLVMUtil::getCaseValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a> &amp;switchInst, <a class="code" href="namespaceSVF.html#a255efa5be786996cbdd0c1f3d98b8400">SuccBBAndCondValPair</a> &amp;succBB2CondVal)</div>
886
- <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;{</div>
887
- <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succBB = succBB2CondVal.first;</div>
888
- <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* caseValue = succBB2CondVal.second;</div>
889
- <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val;</div>
890
- <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">if</span> (caseValue == <span class="keyword">nullptr</span> || succBB == switchInst.getDefaultDest())</div>
891
- <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; {</div>
892
- <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; val = -1;</div>
893
- <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; }</div>
894
- <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keywordflow">else</span></div>
895
- <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; {</div>
896
- <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">if</span> (caseValue-&gt;getBitWidth() &lt;= 64)</div>
897
- <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; {</div>
898
- <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; val = caseValue-&gt;getSExtValue();</div>
899
- <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; }</div>
900
- <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">else</span></div>
901
- <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; {</div>
902
- <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; val = -1;</div>
880
+ <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; </div>
881
+ <div class="line"><a name="l00870"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f"> 870</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f">LLVMUtil::getSuccBBandCondValPairVec</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a> &amp;switchInst, <a class="code" href="namespaceSVF.html#a8de26e1810ea0c3b1e8ad62f1c8a864d">SuccBBAndCondValPairVec</a> &amp;vec)</div>
882
+ <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160;{</div>
883
+ <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="comment">// get default successor basic block and default case value (nullptr)</span></div>
884
+ <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; vec.push_back({switchInst.getDefaultDest(), <span class="keyword">nullptr</span>});</div>
885
+ <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; </div>
886
+ <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="comment">// get normal case value and it&#39;s successor basic block</span></div>
887
+ <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; cs : switchInst.cases())</div>
888
+ <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; vec.push_back({cs.getCaseSuccessor(), cs.getCaseValue()});</div>
889
+ <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160;}</div>
890
+ <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; </div>
891
+ <div class="line"><a name="l00880"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220"> 880</a></span>&#160;<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220">LLVMUtil::getCaseValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a> &amp;switchInst, <a class="code" href="namespaceSVF.html#a255efa5be786996cbdd0c1f3d98b8400">SuccBBAndCondValPair</a> &amp;succBB2CondVal)</div>
892
+ <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160;{</div>
893
+ <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succBB = succBB2CondVal.first;</div>
894
+ <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* caseValue = succBB2CondVal.second;</div>
895
+ <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val;</div>
896
+ <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">if</span> (caseValue == <span class="keyword">nullptr</span> || succBB == switchInst.getDefaultDest())</div>
897
+ <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; {</div>
898
+ <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; val = -1;</div>
899
+ <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; }</div>
900
+ <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keywordflow">else</span></div>
901
+ <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; {</div>
902
+ <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordflow">if</span> (caseValue-&gt;getBitWidth() &lt;= 64)</div>
903
+ <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; {</div>
904
+ <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; val = caseValue-&gt;getSExtValue();</div>
903
905
  <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; }</div>
904
- <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; }</div>
905
- <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="keywordflow">return</span> val;</div>
906
- <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160;}</div>
907
- <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; </div>
908
- <div class="line"><a name="l00901"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159"> 901</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159">LLVMUtil::dumpValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
909
- <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;{</div>
910
- <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
911
- <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
912
- <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keywordflow">if</span> (val)</div>
913
- <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *val &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
914
- <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordflow">else</span></div>
915
- <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm Value is null&quot;</span>;</div>
916
- <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
917
- <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160;}</div>
918
- <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; </div>
919
- <div class="line"><a name="l00912"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a6e8682537cf5bed808df439bd7e1add9"> 912</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6e8682537cf5bed808df439bd7e1add9">LLVMUtil::dumpType</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
920
- <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160;{</div>
921
- <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
922
- <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
923
- <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
924
- <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
925
- <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">else</span></div>
926
- <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm type is null&quot;</span>;</div>
927
- <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
928
- <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160;}</div>
929
- <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; </div>
930
- <div class="line"><a name="l00923"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350"> 923</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">LLVMUtil::dumpValueAndDbgInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</div>
931
- <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160;{</div>
932
- <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
933
- <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
934
- <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="keywordflow">if</span> (val)</div>
935
- <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159">dumpValue</a>(val) &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(val);</div>
936
- <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">else</span></div>
937
- <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm Value is null&quot;</span>;</div>
938
- <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
939
- <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;}</div>
940
- <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; </div>
941
- <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div>
942
- <div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160;{</div>
943
- <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; </div>
944
- <div class="line"><a name="l00937"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3"> 937</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVFValue::toString</a>()<span class="keyword"> const</span></div>
945
- <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160;<span class="keyword"></span>{</div>
946
- <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
947
- <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
948
- <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a>* fun = SVFUtil::dyn_cast&lt;SVFFunction&gt;(<span class="keyword">this</span>))</div>
949
- <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; {</div>
950
- <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Function: &quot;</span> &lt;&lt; fun-&gt;getName() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
951
- <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; }</div>
952
- <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* bb = SVFUtil::dyn_cast&lt;SVFBasicBlock&gt;(<span class="keyword">this</span>))</div>
953
- <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; {</div>
954
- <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;BasicBlock: &quot;</span> &lt;&lt; bb-&gt;getName() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
955
- <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; }</div>
956
- <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <span class="keywordflow">else</span></div>
957
- <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; {</div>
958
- <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keyword">auto</span> llvmVal = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#aaf9b679407f12b93afc53c157d37b444">getLLVMValue</a>(<span class="keyword">this</span>);</div>
959
- <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="keywordflow">if</span> (llvmVal)</div>
960
- <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *llvmVal &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
961
- <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordflow">else</span></div>
962
- <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; No llvmVal found&quot;</span>;</div>
963
- <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; }</div>
964
- <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; rawstr &lt;&lt; this-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>();</div>
965
- <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
966
- <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160;}</div>
967
- <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; </div>
968
- <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160;} <span class="comment">// namespace SVF</span></div>
906
+ <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keywordflow">else</span></div>
907
+ <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; {</div>
908
+ <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; val = -1;</div>
909
+ <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; }</div>
910
+ <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; }</div>
911
+ <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keywordflow">return</span> val;</div>
912
+ <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160;}</div>
913
+ <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; </div>
914
+ <div class="line"><a name="l00907"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159"> 907</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159">LLVMUtil::dumpValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
915
+ <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160;{</div>
916
+ <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
917
+ <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
918
+ <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">if</span> (val)</div>
919
+ <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *val &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
920
+ <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">else</span></div>
921
+ <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm Value is null&quot;</span>;</div>
922
+ <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
923
+ <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;}</div>
924
+ <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; </div>
925
+ <div class="line"><a name="l00918"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a6e8682537cf5bed808df439bd7e1add9"> 918</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6e8682537cf5bed808df439bd7e1add9">LLVMUtil::dumpType</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
926
+ <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160;{</div>
927
+ <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
928
+ <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
929
+ <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
930
+ <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
931
+ <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <span class="keywordflow">else</span></div>
932
+ <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm type is null&quot;</span>;</div>
933
+ <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
934
+ <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160;}</div>
935
+ <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; </div>
936
+ <div class="line"><a name="l00929"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350"> 929</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">LLVMUtil::dumpValueAndDbgInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</div>
937
+ <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160;{</div>
938
+ <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
939
+ <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
940
+ <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keywordflow">if</span> (val)</div>
941
+ <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159">dumpValue</a>(val) &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(val);</div>
942
+ <div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="keywordflow">else</span></div>
943
+ <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm Value is null&quot;</span>;</div>
944
+ <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
945
+ <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160;}</div>
946
+ <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; </div>
947
+ <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div>
948
+ <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160;{</div>
949
+ <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; </div>
950
+ <div class="line"><a name="l00943"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3"> 943</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVFValue::toString</a>()<span class="keyword"> const</span></div>
951
+ <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160;<span class="keyword"></span>{</div>
952
+ <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
953
+ <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
954
+ <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a>* fun = SVFUtil::dyn_cast&lt;SVFFunction&gt;(<span class="keyword">this</span>))</div>
955
+ <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; {</div>
956
+ <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Function: &quot;</span> &lt;&lt; fun-&gt;getName() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
957
+ <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; }</div>
958
+ <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* bb = SVFUtil::dyn_cast&lt;SVFBasicBlock&gt;(<span class="keyword">this</span>))</div>
959
+ <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; {</div>
960
+ <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;BasicBlock: &quot;</span> &lt;&lt; bb-&gt;getName() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
961
+ <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; }</div>
962
+ <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">else</span></div>
963
+ <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; {</div>
964
+ <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keyword">auto</span> llvmVal = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#aaf9b679407f12b93afc53c157d37b444">getLLVMValue</a>(<span class="keyword">this</span>);</div>
965
+ <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">if</span> (llvmVal)</div>
966
+ <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *llvmVal &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
967
+ <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="keywordflow">else</span></div>
968
+ <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; No llvmVal found&quot;</span>;</div>
969
+ <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; }</div>
970
+ <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; rawstr &lt;&lt; this-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>();</div>
971
+ <div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
972
+ <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160;}</div>
973
+ <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; </div>
974
+ <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160;} <span class="comment">// namespace SVF</span></div>
969
975
  </div><!-- fragment --></div><!-- contents -->
970
976
  <div class="ttc" id="anamespaceSVF_html_a827d09974dc7bf0849f96823cc2fee89"><div class="ttname"><a href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">SVF::DomTreeNode</a></div><div class="ttdeci">llvm::DomTreeNode DomTreeNode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00134">BasicTypes.h:134</a></div></div>
971
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8e4add30bd0ce00d3f2aa2e31c64fef8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">SVF::LLVMUtil::getSourceLoc</a></div><div class="ttdeci">const std::string getSourceLoc(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00684">LLVMUtil.cpp:684</a></div></div>
972
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a484bbbc9713fc4be173943e6bc177fb5"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5">SVF::LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a></div><div class="ttdeci">void removeUnusedFuncsAndAnnotationsAndGlobalVariables(Set&lt; Function * &gt; removedFuncList)</div><div class="ttdoc">Delete unused functions, annotations and global variables in extapi.bc.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00570">LLVMUtil.cpp:570</a></div></div>
973
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a38ce45ae5f017c90115ce444b44d478c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">SVF::LLVMUtil::stripAllCasts</a></div><div class="ttdeci">const Value * stripAllCasts(const Value *val)</div><div class="ttdoc">Strip off the all casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00278">LLVMUtil.cpp:278</a></div></div>
974
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_afa2f8c8ab19c75547c26ede53b9f6159"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159">SVF::LLVMUtil::dumpValue</a></div><div class="ttdeci">std::string dumpValue(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00901">LLVMUtil.cpp:901</a></div></div>
975
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abc9c437b7da5cfe3d988dadfcbd0635f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abc9c437b7da5cfe3d988dadfcbd0635f">SVF::LLVMUtil::viewCFG</a></div><div class="ttdeci">void viewCFG(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00259">LLVMUtil.cpp:259</a></div></div>
977
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8e4add30bd0ce00d3f2aa2e31c64fef8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">SVF::LLVMUtil::getSourceLoc</a></div><div class="ttdeci">const std::string getSourceLoc(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00690">LLVMUtil.cpp:690</a></div></div>
978
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a484bbbc9713fc4be173943e6bc177fb5"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5">SVF::LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a></div><div class="ttdeci">void removeUnusedFuncsAndAnnotationsAndGlobalVariables(Set&lt; Function * &gt; removedFuncList)</div><div class="ttdoc">Delete unused functions, annotations and global variables in extapi.bc.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00576">LLVMUtil.cpp:576</a></div></div>
979
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a38ce45ae5f017c90115ce444b44d478c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">SVF::LLVMUtil::stripAllCasts</a></div><div class="ttdeci">const Value * stripAllCasts(const Value *val)</div><div class="ttdoc">Strip off the all casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00277">LLVMUtil.cpp:277</a></div></div>
980
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_afa2f8c8ab19c75547c26ede53b9f6159"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159">SVF::LLVMUtil::dumpValue</a></div><div class="ttdeci">std::string dumpValue(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00907">LLVMUtil.cpp:907</a></div></div>
981
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abc9c437b7da5cfe3d988dadfcbd0635f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abc9c437b7da5cfe3d988dadfcbd0635f">SVF::LLVMUtil::viewCFG</a></div><div class="ttdeci">void viewCFG(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00258">LLVMUtil.cpp:258</a></div></div>
976
982
  <div class="ttc" id="anamespaceSVF_html_a8de26e1810ea0c3b1e8ad62f1c8a864d"><div class="ttname"><a href="namespaceSVF.html#a8de26e1810ea0c3b1e8ad62f1c8a864d">SVF::SuccBBAndCondValPairVec</a></div><div class="ttdeci">std::vector&lt; SuccBBAndCondValPair &gt; SuccBBAndCondValPairVec</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00186">BasicTypes.h:186</a></div></div>
977
983
  <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#l00105">LLVMModule.h:105</a></div></div>
978
984
  <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#l00133">BasicTypes.h:133</a></div></div>
979
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_af4c9c5d445107b1816a4be93852ba612"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#af4c9c5d445107b1816a4be93852ba612">SVF::LLVMUtil::restoreFuncName</a></div><div class="ttdeci">std::string restoreFuncName(std::string funcName)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00618">LLVMUtil.cpp:618</a></div></div>
985
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_af4c9c5d445107b1816a4be93852ba612"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#af4c9c5d445107b1816a4be93852ba612">SVF::LLVMUtil::restoreFuncName</a></div><div class="ttdeci">std::string restoreFuncName(std::string funcName)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00624">LLVMUtil.cpp:624</a></div></div>
980
986
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aca11801ed6ef6ff8d2a1e85bc0fc5794"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aca11801ed6ef6ff8d2a1e85bc0fc5794">SVF::LLVMUtil::isObject</a></div><div class="ttdeci">bool isObject(const Value *ref)</div><div class="ttdoc">Return true if this value refers to a object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00069">LLVMUtil.cpp:69</a></div></div>
981
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a86c0a0cb4ada72bd4f42c77558e6a350"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">SVF::LLVMUtil::dumpValueAndDbgInfo</a></div><div class="ttdeci">std::string dumpValueAndDbgInfo(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00923">LLVMUtil.cpp:923</a></div></div>
987
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a86c0a0cb4ada72bd4f42c77558e6a350"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">SVF::LLVMUtil::dumpValueAndDbgInfo</a></div><div class="ttdeci">std::string dumpValueAndDbgInfo(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00929">LLVMUtil.cpp:929</a></div></div>
982
988
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aaf9b679407f12b93afc53c157d37b444"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aaf9b679407f12b93afc53c157d37b444">SVF::LLVMModuleSet::getLLVMValue</a></div><div class="ttdeci">const Value * getLLVMValue(const SVFValue *value) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00198">LLVMModule.h:198</a></div></div>
983
989
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a16d14e6712866d1d710c386c72d67181"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a16d14e6712866d1d710c386c72d67181">SVF::LLVMModuleSet::FunctionSetType</a></div><div class="ttdeci">std::vector&lt; const Function * &gt; FunctionSetType</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00050">LLVMModule.h:50</a></div></div>
984
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_accdd44093d6d145dc92edeaaff3f5732"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">SVF::LLVMUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &amp;arg_num, char **arg_value, std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00433">LLVMUtil.cpp:433</a></div></div>
990
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_accdd44093d6d145dc92edeaaff3f5732"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">SVF::LLVMUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &amp;arg_num, char **arg_value, std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00432">LLVMUtil.cpp:432</a></div></div>
985
991
  <div class="ttc" id="aLLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
986
992
  <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>
987
993
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a6e670254385050b9a5e612f881b07b9c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a6e670254385050b9a5e612f881b07b9c">SVF::LLVMModuleSet::getDefinition</a></div><div class="ttdeci">const Function * getDefinition(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00283">LLVMModule.h:283</a></div></div>
988
994
  <div class="ttc" id="anamespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00086">BasicTypes.h:86</a></div></div>
989
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9001722dd27bf487351725c3d7b65f2f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f">SVF::LLVMUtil::getSuccBBandCondValPairVec</a></div><div class="ttdeci">void getSuccBBandCondValPairVec(const SwitchInst &amp;switchInst, SuccBBAndCondValPairVec &amp;vec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00864">LLVMUtil.cpp:864</a></div></div>
995
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9001722dd27bf487351725c3d7b65f2f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f">SVF::LLVMUtil::getSuccBBandCondValPairVec</a></div><div class="ttdeci">void getSuccBBandCondValPairVec(const SwitchInst &amp;switchInst, SuccBBAndCondValPairVec &amp;vec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00870">LLVMUtil.cpp:870</a></div></div>
990
996
  <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>
991
997
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a21636200f17c62034720c4287aa818b5"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a21636200f17c62034720c4287aa818b5">SVF::LLVMUtil::getDefFunForMultipleModule</a></div><div class="ttdeci">const Function * getDefFunForMultipleModule(const Function *fun)</div><div class="ttdoc">Get the definition of a function across multiple modules.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00039">LLVMUtil.cpp:39</a></div></div>
992
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07bd47ccfd02c5a2a6db26b537b2184f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">SVF::LLVMUtil::stripConstantCasts</a></div><div class="ttdeci">const Value * stripConstantCasts(const Value *val)</div><div class="ttdoc">Strip off the constant casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00247">LLVMUtil.cpp:247</a></div></div>
998
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07bd47ccfd02c5a2a6db26b537b2184f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">SVF::LLVMUtil::stripConstantCasts</a></div><div class="ttdeci">const Value * stripConstantCasts(const Value *val)</div><div class="ttdoc">Strip off the constant casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00246">LLVMUtil.cpp:246</a></div></div>
993
999
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a026ae778570145a4719bd475f8f66d85"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a026ae778570145a4719bd475f8f66d85">SVF::LLVMUtil::getProgFunction</a></div><div class="ttdeci">const Function * getProgFunction(const std::string &amp;funName)</div><div class="ttdoc">Get program entry function from module.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00049">LLVMUtil.cpp:49</a></div></div>
994
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a200539f965bff5627abac41920498ee8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">SVF::LLVMUtil::getFirstUseViaCastInst</a></div><div class="ttdeci">const Value * getFirstUseViaCastInst(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00364">LLVMUtil.cpp:364</a></div></div>
1000
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a200539f965bff5627abac41920498ee8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">SVF::LLVMUtil::getFirstUseViaCastInst</a></div><div class="ttdeci">const Value * getFirstUseViaCastInst(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00363">LLVMUtil.cpp:363</a></div></div>
995
1001
  <div class="ttc" id="aclassSVF_1_1StInfo_html_a518c82138fcadc6634980566c1c0f762"><div class="ttname"><a href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">SVF::StInfo::getNumOfFlattenElements</a></div><div class="ttdeci">u32_t getNumOfFlattenElements() const</div><div class="ttdoc">Return number of elements after flattening (including array elements)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00139">SVFType.h:139</a></div></div>
996
1002
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2c61d741afbcfa853b505cd391f29f9b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">SVF::LLVMUtil::isUncalledFunction</a></div><div class="ttdeci">bool isUncalledFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller?</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00169">LLVMUtil.cpp:169</a></div></div>
997
1003
  <div class="ttc" id="anamespaceSVF_html_a412280b134578905248ce0122c5db7c9"><div class="ttname"><a href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SVF::SwitchInst</a></div><div class="ttdeci">llvm::SwitchInst SwitchInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00155">BasicTypes.h:155</a></div></div>
998
1004
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01373">LLVMModule.cpp:1373</a></div></div>
999
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8ee8de153df3f1bbdebb67185a2731c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">SVF::LLVMUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const SVFValue *val)</div><div class="ttdoc">Check whether this value points-to a constant object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00858">LLVMUtil.cpp:858</a></div></div>
1005
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8ee8de153df3f1bbdebb67185a2731c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">SVF::LLVMUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const SVFValue *val)</div><div class="ttdoc">Check whether this value points-to a constant object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00864">LLVMUtil.cpp:864</a></div></div>
1000
1006
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a50fc24901350df9db890ba16a9b87e33"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00205">LLVMModule.h:205</a></div></div>
1001
1007
  <div class="ttc" id="anamespaceSVF_html_a52c8654c221bb53a59f70ea3cb1e5c45"><div class="ttname"><a href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">SVF::StructLayout</a></div><div class="ttdeci">llvm::StructLayout StructLayout</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00105">BasicTypes.h:105</a></div></div>
1002
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae2b444bb3e7a27d77386f588a78af8e2"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">SVF::LLVMUtil::removeUnusedGlobalVariables</a></div><div class="ttdeci">void removeUnusedGlobalVariables(Module *module)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00555">LLVMUtil.cpp:555</a></div></div>
1008
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae2b444bb3e7a27d77386f588a78af8e2"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">SVF::LLVMUtil::removeUnusedGlobalVariables</a></div><div class="ttdeci">void removeUnusedGlobalVariables(Module *module)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00561">LLVMUtil.cpp:561</a></div></div>
1003
1009
  <div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00082">BasicTypes.h:82</a></div></div>
1004
1010
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab2064cb70c76f399ce115f2621adea35"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const CallSite cs)</div><div class="ttdoc">interfaces to be used externally</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00442">SVFUtil.h:442</a></div></div>
1005
1011
  <div class="ttc" id="aclassSVF_1_1StInfo_html_ae5fad367673315da57a604e64b5889f0"><div class="ttname"><a href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">SVF::StInfo::getNumOfFlattenFields</a></div><div class="ttdeci">u32_t getNumOfFlattenFields() const</div><div class="ttdoc">Return the number of fields after flattening (ignoring array elements)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00145">SVFType.h:145</a></div></div>
1006
1012
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a651b6a1cf3665277d2241220bb145aed"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">SVF::LLVMUtil::functionDoesNotRet</a></div><div class="ttdeci">bool functionDoesNotRet(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00133">LLVMUtil.cpp:133</a></div></div>
1007
1013
  <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>
1008
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a47d2af43ff12d9e1014fa19256619466"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">SVF::LLVMUtil::getCalledFunctions</a></div><div class="ttdeci">std::vector&lt; const Function * &gt; getCalledFunctions(const Function *F)</div><div class="ttdoc">Get all called funcions in a parent function.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00521">LLVMUtil.cpp:521</a></div></div>
1014
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a47d2af43ff12d9e1014fa19256619466"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">SVF::LLVMUtil::getCalledFunctions</a></div><div class="ttdeci">std::vector&lt; const Function * &gt; getCalledFunctions(const Function *F)</div><div class="ttdoc">Get all called funcions in a parent function.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00527">LLVMUtil.cpp:527</a></div></div>
1009
1015
  <div class="ttc" id="anamespaceSVF_html_a5c943191dc4e242704943e5f594ae99e"><div class="ttname"><a href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">SVF::const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00254">BasicTypes.h:254</a></div></div>
1010
1016
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa4a604e47daaaf95babc7aca68991000"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa4a604e47daaaf95babc7aca68991000">SVF::LLVMModuleSet::getDeclaration</a></div><div class="ttdeci">const FunctionSetType &amp; getDeclaration(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00304">LLVMModule.h:304</a></div></div>
1011
1017
  <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#l00085">BasicTypes.h:85</a></div></div>
1012
1018
  <div class="ttc" id="anamespaceSVF_html_affba423b674a0aba723e33101826e297"><div class="ttname"><a href="namespaceSVF.html#affba423b674a0aba723e33101826e297">SVF::LLVMContext</a></div><div class="ttdeci">llvm::LLVMContext LLVMContext</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
1013
1019
  <div class="ttc" id="anamespaceSVF_html_a1f4624771922dc8c2447ad7433588c73"><div class="ttname"><a href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">SVF::CallBase</a></div><div class="ttdeci">llvm::CallBase CallBase</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00146">BasicTypes.h:146</a></div></div>
1014
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a33e8378ae1a911169394e545a4ba2220"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220">SVF::LLVMUtil::getCaseValue</a></div><div class="ttdeci">s64_t getCaseValue(const SwitchInst &amp;switchInst, SuccBBAndCondValPair &amp;succBB2CondVal)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00874">LLVMUtil.cpp:874</a></div></div>
1020
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a33e8378ae1a911169394e545a4ba2220"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220">SVF::LLVMUtil::getCaseValue</a></div><div class="ttdeci">s64_t getCaseValue(const SwitchInst &amp;switchInst, SuccBBAndCondValPair &amp;succBB2CondVal)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00880">LLVMUtil.cpp:880</a></div></div>
1015
1021
  <div class="ttc" id="anamespaceSVF_html_a5ae718cba37d8e34d2946530dc098c8e"><div class="ttname"><a href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">SVF::ConstantArray</a></div><div class="ttdeci">llvm::ConstantArray ConstantArray</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00123">BasicTypes.h:123</a></div></div>
1016
1022
  <div class="ttc" id="anamespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
1017
1023
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ab0c0f321b6bfbfab2e4ff06d81920ab9"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">SVF::LLVMModuleSet::getSVFBasicBlock</a></div><div class="ttdeci">SVFBasicBlock * getSVFBasicBlock(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00212">LLVMModule.h:212</a></div></div>
1018
1024
  <div class="ttc" id="anamespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00130">BasicTypes.h:130</a></div></div>
1019
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a6e8682537cf5bed808df439bd7e1add9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6e8682537cf5bed808df439bd7e1add9">SVF::LLVMUtil::dumpType</a></div><div class="ttdeci">std::string dumpType(const Type *type)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00912">LLVMUtil.cpp:912</a></div></div>
1025
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a6e8682537cf5bed808df439bd7e1add9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6e8682537cf5bed808df439bd7e1add9">SVF::LLVMUtil::dumpType</a></div><div class="ttdeci">std::string dumpType(const Type *type)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00918">LLVMUtil.cpp:918</a></div></div>
1020
1026
  <div class="ttc" id="anamespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
1021
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab8511d0e24da255dd518457568326c70"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab8511d0e24da255dd518457568326c70">SVF::LLVMUtil::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction(const std::string &amp;name)</div><div class="ttdoc">Get the corresponding Function based on its name.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00646">LLVMUtil.cpp:646</a></div></div>
1027
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab8511d0e24da255dd518457568326c70"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab8511d0e24da255dd518457568326c70">SVF::LLVMUtil::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction(const std::string &amp;name)</div><div class="ttdoc">Get the corresponding Function based on its name.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00652">LLVMUtil.cpp:652</a></div></div>
1022
1028
  <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00527">SVFValue.h:527</a></div></div>
1023
1029
  <div class="ttc" id="aclassSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00177">SVFValue.h:177</a></div></div>
1024
1030
  <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>
@@ -1030,13 +1036,13 @@ $(function() {
1030
1036
  <div class="ttc" id="anamespaceSVF_html_a2bf58575ac7d068e0f1a4cf953b9e6cb"><div class="ttname"><a href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">SVF::StructType</a></div><div class="ttdeci">llvm::StructType StructType</div><div class="ttdoc">LLVM types.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
1031
1037
  <div class="ttc" id="anamespaceSVF_html_a2b28f48dde0a9a91d251e654ce1f9477"><div class="ttname"><a href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">SVF::ConstantStruct</a></div><div class="ttdeci">llvm::ConstantStruct ConstantStruct</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00106">BasicTypes.h:106</a></div></div>
1032
1038
  <div class="ttc" id="aclassSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00297">SVFValue.h:297</a></div></div>
1033
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8a8c32a09340f491fffffcb07dd7a41"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">SVF::LLVMUtil::isIRFile</a></div><div class="ttdeci">bool isIRFile(const std::string &amp;filename)</div><div class="ttdoc">Check whether a file is an LLVM IR file.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00412">LLVMUtil.cpp:412</a></div></div>
1039
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8a8c32a09340f491fffffcb07dd7a41"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">SVF::LLVMUtil::isIRFile</a></div><div class="ttdeci">bool isIRFile(const std::string &amp;filename)</div><div class="ttdoc">Check whether a file is an LLVM IR file.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00411">LLVMUtil.cpp:411</a></div></div>
1034
1040
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a32558da64f03452c502ec57d1e106427"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">SVF::LLVMModuleSet::hasDefinition</a></div><div class="ttdeci">bool hasDefinition(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00276">LLVMModule.h:276</a></div></div>
1035
1041
  <div class="ttc" id="anamespaceSVF_html_ad3d3cec1813411f039211c86236f7adb"><div class="ttname"><a href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">SVF::MDNode</a></div><div class="ttdeci">llvm::MDNode MDNode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00112">BasicTypes.h:112</a></div></div>
1036
1042
  <div class="ttc" id="aclassSVF_1_1SVFFunction_html_af264312f0020bde9151697bccfde3263"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#af264312f0020bde9151697bccfde3263">SVF::SVFFunction::getReturnType</a></div><div class="ttdeci">const SVFType * getReturnType() const</div><div class="ttdoc">Returns the FunctionType.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00389">SVFValue.h:389</a></div></div>
1037
1043
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a151fd7fb2b2ebe72af7c417defbb4f4d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">SVF::LLVMUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00282">LLVMUtil.h:282</a></div></div>
1038
1044
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_adfa4a4e6d13004d14137d9168bd32463"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">SVF::LLVMUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00194">LLVMUtil.h:194</a></div></div>
1039
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a973ee05189ca5bbe832be00f2be9baa4"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a973ee05189ca5bbe832be00f2be9baa4">SVF::LLVMUtil::getGlobalRep</a></div><div class="ttdeci">const Value * getGlobalRep(const Value *val)</div><div class="ttdoc">find the unique defined global across multiple modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00651">LLVMUtil.cpp:651</a></div></div>
1045
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a973ee05189ca5bbe832be00f2be9baa4"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a973ee05189ca5bbe832be00f2be9baa4">SVF::LLVMUtil::getGlobalRep</a></div><div class="ttdeci">const Value * getGlobalRep(const Value *val)</div><div class="ttdoc">find the unique defined global across multiple modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00657">LLVMUtil.cpp:657</a></div></div>
1040
1046
  <div class="ttc" id="anamespaceSVF_html_a962e9a9044a46fc4bd2367384f6e0827"><div class="ttname"><a href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">SVF::CastInst</a></div><div class="ttdeci">llvm::CastInst CastInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00158">BasicTypes.h:158</a></div></div>
1041
1047
  <div class="ttc" id="aclassSVF_1_1ExtAPI_html_a58a764c27354d5f9b70995d30de65f1d"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">SVF::ExtAPI::getExtAPI</a></div><div class="ttdeci">static ExtAPI * getExtAPI()</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00042">ExtAPI.cpp:42</a></div></div>
1042
1048
  <div class="ttc" id="aclassSVF_1_1SVFType_html_a05850c17c2dbe42e5602dc8c9a70f3bd"><div class="ttname"><a href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">SVF::SVFType::getTypeInfo</a></div><div class="ttdeci">StInfo * getTypeInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00230">SVFType.h:230</a></div></div>
@@ -1050,36 +1056,36 @@ $(function() {
1050
1056
  <div class="ttc" id="aLLVMModule_8h_html"><div class="ttname"><a href="LLVMModule_8h.html">LLVMModule.h</a></div></div>
1051
1057
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abb4b5ed04ec70a2e7fca8198132370cf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abb4b5ed04ec70a2e7fca8198132370cf">SVF::LLVMUtil::basicBlockHasRetInst</a></div><div class="ttdeci">bool basicBlockHasRetInst(const BasicBlock *bb)</div><div class="ttdoc">Return true if the function has a return instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00119">LLVMUtil.cpp:119</a></div></div>
1052
1058
  <div class="ttc" id="anamespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00276">BasicTypes.h:276</a></div></div>
1053
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_acee7c2fb08e111eda4d91ce5479de05e"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">SVF::LLVMUtil::isUnusedGlobalVariable</a></div><div class="ttdeci">bool isUnusedGlobalVariable(const GlobalVariable &amp;global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00540">LLVMUtil.cpp:540</a></div></div>
1059
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_acee7c2fb08e111eda4d91ce5479de05e"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">SVF::LLVMUtil::isUnusedGlobalVariable</a></div><div class="ttdeci">bool isUnusedGlobalVariable(const GlobalVariable &amp;global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00546">LLVMUtil.cpp:546</a></div></div>
1054
1060
  <div class="ttc" id="anamespaceSVF_html_afc1b50355821e7299df03b026e36f1df"><div class="ttname"><a href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">SVF::User</a></div><div class="ttdeci">llvm::User User</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00142">BasicTypes.h:142</a></div></div>
1055
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2acb79d8c24884ee2dcbba37d98021d9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9">SVF::LLVMUtil::removeFunAnnotations</a></div><div class="ttdeci">void removeFunAnnotations(Set&lt; Function * &gt; &amp;removedFuncList)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00460">LLVMUtil.cpp:460</a></div></div>
1056
- <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#l00937">LLVMUtil.cpp:937</a></div></div>
1061
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2acb79d8c24884ee2dcbba37d98021d9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9">SVF::LLVMUtil::removeFunAnnotations</a></div><div class="ttdeci">void removeFunAnnotations(Set&lt; Function * &gt; &amp;removedFuncList)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00459">LLVMUtil.cpp:459</a></div></div>
1062
+ <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#l00943">LLVMUtil.cpp:943</a></div></div>
1057
1063
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html">SVF::LLVMModuleSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00044">LLVMModule.h:44</a></div></div>
1058
1064
  <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#l00219">LLVMModule.h:219</a></div></div>
1059
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2b32283ee2dbb9cef1d17ab6f2719e0c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">SVF::LLVMUtil::getSourceLocOfFunction</a></div><div class="ttdeci">const std::string getSourceLocOfFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00788">LLVMUtil.cpp:788</a></div></div>
1065
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2b32283ee2dbb9cef1d17ab6f2719e0c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">SVF::LLVMUtil::getSourceLocOfFunction</a></div><div class="ttdeci">const std::string getSourceLocOfFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00794">LLVMUtil.cpp:794</a></div></div>
1060
1066
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9bd6f54920929e5ad35102ba2f2223da"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">SVF::LLVMUtil::getFunReachableBBs</a></div><div class="ttdeci">void getFunReachableBBs(const Function *svfFun, std::vector&lt; const SVFBasicBlock * &gt; &amp;bbs)</div><div class="ttdoc">Get reachable basic block from function entry.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00084">LLVMUtil.cpp:84</a></div></div>
1061
1067
  <div class="ttc" id="anamespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00120">BasicTypes.h:120</a></div></div>
1062
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2abbe4ed46b2031a981d93b3ba9d3fbd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2abbe4ed46b2031a981d93b3ba9d3fbd">SVF::LLVMUtil::viewCFGOnly</a></div><div class="ttdeci">void viewCFGOnly(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00267">LLVMUtil.cpp:267</a></div></div>
1063
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4c94a6c02fb89c1a1604c87414956acd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector&lt; const SVFInstruction * &gt; &amp;instList)</div><div class="ttdoc">Get the previous instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00331">LLVMUtil.cpp:331</a></div></div>
1068
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2abbe4ed46b2031a981d93b3ba9d3fbd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2abbe4ed46b2031a981d93b3ba9d3fbd">SVF::LLVMUtil::viewCFGOnly</a></div><div class="ttdeci">void viewCFGOnly(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00266">LLVMUtil.cpp:266</a></div></div>
1069
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4c94a6c02fb89c1a1604c87414956acd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector&lt; const SVFInstruction * &gt; &amp;instList)</div><div class="ttdoc">Get the previous instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00330">LLVMUtil.cpp:330</a></div></div>
1064
1070
  <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>
1065
1071
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4638a12f5481dff947b59cf8353e619b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">SVF::LLVMUtil::isIntrinsicFun</a></div><div class="ttdeci">bool isIntrinsicFun(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00217">LLVMUtil.cpp:217</a></div></div>
1066
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae617611b584e3d899984c376a6e91987"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987">SVF::LLVMUtil::getBBPredecessorNum</a></div><div class="ttdeci">u32_t getBBPredecessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB's predecessors.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00399">LLVMUtil.cpp:399</a></div></div>
1072
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae617611b584e3d899984c376a6e91987"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987">SVF::LLVMUtil::getBBPredecessorNum</a></div><div class="ttdeci">u32_t getBBPredecessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB's predecessors.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00398">LLVMUtil.cpp:398</a></div></div>
1067
1073
  <div class="ttc" id="anamespaceSVF_html_a3011dbac9102f044ad5f36a4ad3d4a71"><div class="ttname"><a href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">SVF::NamedMDNode</a></div><div class="ttdeci">llvm::NamedMDNode NamedMDNode</div><div class="ttdoc">LLVM metadata and debug information.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00111">BasicTypes.h:111</a></div></div>
1068
1074
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a5a7dc8680a9714e08b01dd339b85bb20"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">SVF::LLVMUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00045">LLVMUtil.h:45</a></div></div>
1069
1075
  <div class="ttc" id="aclassSVF_1_1ExtAPI_html_a26bc352dbfd1b2fe34106a73f1f6d50c"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">SVF::ExtAPI::getExtBcPath</a></div><div class="ttdeci">std::string getExtBcPath()</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00127">ExtAPI.cpp:127</a></div></div>
1070
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_afbd60d5443c7fa1448813d00bb5d0fa7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">SVF::LLVMUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector&lt; const SVFInstruction * &gt; &amp;instList)</div><div class="ttdoc">Get the next instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00302">LLVMUtil.cpp:302</a></div></div>
1076
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_afbd60d5443c7fa1448813d00bb5d0fa7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">SVF::LLVMUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector&lt; const SVFInstruction * &gt; &amp;instList)</div><div class="ttdoc">Get the next instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00301">LLVMUtil.cpp:301</a></div></div>
1071
1077
  <div class="ttc" id="aclassSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00631">SVFValue.h:631</a></div></div>
1072
1078
  <div class="ttc" id="anamespaceSVF_html_ad781b0b14e89773e774072b280658ef3"><div class="ttname"><a href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a></div><div class="ttdeci">signed long long s64_t</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00049">GeneralType.h:49</a></div></div>
1073
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a003b769751b93b94bdb011bd704cfde1"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">SVF::LLVMUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const Instruction *inst)</div><div class="ttdoc">Return true if it is an intrinsic instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00231">LLVMUtil.cpp:231</a></div></div>
1079
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a003b769751b93b94bdb011bd704cfde1"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">SVF::LLVMUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const Instruction *inst)</div><div class="ttdoc">Return true if it is an intrinsic instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00230">LLVMUtil.cpp:230</a></div></div>
1074
1080
  <div class="ttc" id="aSymbolTableInfo_8h_html"><div class="ttname"><a href="SymbolTableInfo_8h.html">SymbolTableInfo.h</a></div></div>
1075
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a09683d4d88a50fa621809c734465f94d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">SVF::LLVMUtil::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const Type *type)</div><div class="ttdoc">Helper method to get the size of the type from target data layout.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00661">LLVMUtil.cpp:661</a></div></div>
1081
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a09683d4d88a50fa621809c734465f94d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">SVF::LLVMUtil::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const Type *type)</div><div class="ttdoc">Helper method to get the size of the type from target data layout.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00667">LLVMUtil.cpp:667</a></div></div>
1076
1082
  <div class="ttc" id="aclassSVF_1_1SVFValue_html_a7effb0f37f486745e0cdc3ae5e9c732b"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">SVF::SVFValue::getSourceLoc</a></div><div class="ttdeci">virtual const std::string getSourceLoc() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00280">SVFValue.h:280</a></div></div>
1077
1083
  <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>
1078
1084
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream &amp; errs()</div><div class="ttdoc">Overwrite llvm::errs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00056">SVFUtil.h:56</a></div></div>
1079
1085
  <div class="ttc" id="anamespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00145">BasicTypes.h:145</a></div></div>
1080
1086
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a757bf149437cce22163c764ea9993e12"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a757bf149437cce22163c764ea9993e12">SVF::LLVMModuleSet::getGlobalRep</a></div><div class="ttdeci">GlobalVariable * getGlobalRep(const GlobalVariable *val) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00322">LLVMModule.h:322</a></div></div>
1081
1087
  <div class="ttc" id="anamespaceSVF_html_a255efa5be786996cbdd0c1f3d98b8400"><div class="ttname"><a href="namespaceSVF.html#a255efa5be786996cbdd0c1f3d98b8400">SVF::SuccBBAndCondValPair</a></div><div class="ttdeci">std::pair&lt; const BasicBlock *, const ConstantInt * &gt; SuccBBAndCondValPair</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00185">BasicTypes.h:185</a></div></div>
1082
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab5b55fce942ab6d7995541f3fe0503f8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8">SVF::LLVMUtil::getNumOfElements</a></div><div class="ttdeci">u32_t getNumOfElements(const Type *ety)</div><div class="ttdoc">Return size of this object based on LLVM value.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00382">LLVMUtil.cpp:382</a></div></div>
1088
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab5b55fce942ab6d7995541f3fe0503f8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8">SVF::LLVMUtil::getNumOfElements</a></div><div class="ttdeci">u32_t getNumOfElements(const Type *ety)</div><div class="ttdoc">Return size of this object based on LLVM value.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00381">LLVMUtil.cpp:381</a></div></div>
1083
1089
  <!-- start footer part -->
1084
1090
  <hr class="footer"/><address class="footer"><small>
1085
1091
  Generated by &#160;<a href="http://www.doxygen.org/index.html">