svf-tools 1.0.828 → 1.0.829

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 (313) hide show
  1. package/SVF-doxygen/html/Andersen_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/CFLAlias_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/CHGBuilder_8cpp_source.html +7 -7
  4. package/SVF-doxygen/html/ConsG_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/CxtStmt_8h_source.html +1 -1
  6. package/SVF-doxygen/html/DDAClient_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/ICFG_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/LLVMModule_8cpp_source.html +4 -4
  9. package/SVF-doxygen/html/LLVMUtil_8cpp_source.html +394 -368
  10. package/SVF-doxygen/html/LLVMUtil_8h.html +6 -5
  11. package/SVF-doxygen/html/LLVMUtil_8h_source.html +33 -35
  12. package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/MHP_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/MemSSA_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +3 -3
  19. package/SVF-doxygen/html/SVFStatements_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/SVFValue_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/SVFValue_8h_source.html +1 -1
  22. package/SVF-doxygen/html/SVFVariables_8cpp_source.html +1 -1
  23. package/SVF-doxygen/html/Steensgaard_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +145 -136
  25. package/SVF-doxygen/html/SymbolTableBuilder_8h_source.html +7 -7
  26. package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +2 -2
  27. package/SVF-doxygen/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  28. package/SVF-doxygen/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  29. package/SVF-doxygen/html/classSVF_1_1AddrStmt.html +1 -1
  30. package/SVF-doxygen/html/classSVF_1_1AliasDDAClient.html +1 -1
  31. package/SVF-doxygen/html/classSVF_1_1Andersen.html +1 -1
  32. package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +1 -1
  33. package/SVF-doxygen/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  34. package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +1 -1
  35. package/SVF-doxygen/html/classSVF_1_1CFLAlias.html +1 -1
  36. package/SVF-doxygen/html/classSVF_1_1CHGBuilder.html +7 -7
  37. package/SVF-doxygen/html/classSVF_1_1CallCFGEdge.html +1 -1
  38. package/SVF-doxygen/html/classSVF_1_1CallPE.html +1 -1
  39. package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +1 -1
  40. package/SVF-doxygen/html/classSVF_1_1CmpVFGNode.html +1 -1
  41. package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +1 -1
  42. package/SVF-doxygen/html/classSVF_1_1CxtStmt.html +1 -1
  43. package/SVF-doxygen/html/classSVF_1_1CxtThread.html +1 -1
  44. package/SVF-doxygen/html/classSVF_1_1CxtThreadStmt.html +1 -1
  45. package/SVF-doxygen/html/classSVF_1_1DoubleFreeChecker.html +1 -1
  46. package/SVF-doxygen/html/classSVF_1_1FIObjVar.html +1 -1
  47. package/SVF-doxygen/html/classSVF_1_1ForkJoinAnalysis.html +1 -1
  48. package/SVF-doxygen/html/classSVF_1_1GepObjVar.html +1 -1
  49. package/SVF-doxygen/html/classSVF_1_1GepStmt.html +1 -1
  50. package/SVF-doxygen/html/classSVF_1_1GepValVar.html +1 -1
  51. package/SVF-doxygen/html/classSVF_1_1ICFG.html +1 -1
  52. package/SVF-doxygen/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  53. package/SVF-doxygen/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  54. package/SVF-doxygen/html/classSVF_1_1IntraCFGEdge.html +1 -1
  55. package/SVF-doxygen/html/classSVF_1_1IntraICFGNode.html +1 -1
  56. package/SVF-doxygen/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  57. package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +4 -4
  58. package/SVF-doxygen/html/classSVF_1_1LeakChecker.html +1 -1
  59. package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +1 -1
  60. package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +1 -1
  61. package/SVF-doxygen/html/classSVF_1_1MHP.html +1 -1
  62. package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +1 -1
  63. package/SVF-doxygen/html/classSVF_1_1MemObj.html +1 -1
  64. package/SVF-doxygen/html/classSVF_1_1MemSSA.html +1 -1
  65. package/SVF-doxygen/html/classSVF_1_1ObjTypeInfo.html +1 -2
  66. package/SVF-doxygen/html/classSVF_1_1ObjVar.html +1 -1
  67. package/SVF-doxygen/html/classSVF_1_1PHIVFGNode.html +1 -1
  68. package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +1 -1
  69. package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +1 -1
  70. package/SVF-doxygen/html/classSVF_1_1RetCFGEdge.html +1 -1
  71. package/SVF-doxygen/html/classSVF_1_1RetPE.html +1 -1
  72. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +1 -1
  73. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +3 -3
  74. package/SVF-doxygen/html/classSVF_1_1SVFValue.html +23 -23
  75. package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +1 -1
  76. package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +1 -1
  77. package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +1 -1
  78. package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder-members.html +1 -1
  79. package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +147 -137
  80. package/SVF-doxygen/html/classSVF_1_1TCT.html +1 -1
  81. package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +1 -1
  82. package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +1 -1
  83. package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +1 -1
  84. package/SVF-doxygen/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  85. package/SVF-doxygen/html/classSVF_1_1ValVar.html +1 -1
  86. package/SVF-doxygen/html/functions_a.html +1 -1
  87. package/SVF-doxygen/html/functions_func.html +1 -1
  88. package/SVF-doxygen/html/menudata.js +0 -1
  89. package/SVF-doxygen/html/namespaceSVF_1_1LLVMUtil.html +362 -329
  90. package/SVF-doxygen/html/namespacemembers_d.html +7 -1
  91. package/SVF-doxygen/html/namespacemembers_func_d.html +7 -1
  92. package/SVF-doxygen/html/namespacemembers_func_g.html +1 -1
  93. package/SVF-doxygen/html/namespacemembers_g.html +1 -1
  94. package/SVF-doxygen/html/namespacemembers_l.html +0 -3
  95. package/SVF-doxygen/html/search/all_1.js +1 -1
  96. package/SVF-doxygen/html/search/all_10.js +324 -324
  97. package/SVF-doxygen/html/search/all_11.js +223 -223
  98. package/SVF-doxygen/html/search/all_12.js +553 -553
  99. package/SVF-doxygen/html/search/all_13.js +192 -192
  100. package/SVF-doxygen/html/search/all_14.js +67 -67
  101. package/SVF-doxygen/html/search/all_15.js +167 -167
  102. package/SVF-doxygen/html/search/all_16.js +63 -63
  103. package/SVF-doxygen/html/search/all_17.js +1 -1
  104. package/SVF-doxygen/html/search/all_18.js +1 -1
  105. package/SVF-doxygen/html/search/all_19.js +11 -11
  106. package/SVF-doxygen/html/search/all_1a.js +172 -172
  107. package/SVF-doxygen/html/search/all_4.js +8 -6
  108. package/SVF-doxygen/html/search/all_5.js +119 -119
  109. package/SVF-doxygen/html/search/all_6.js +226 -226
  110. package/SVF-doxygen/html/search/all_7.js +1046 -1046
  111. package/SVF-doxygen/html/search/all_8.js +198 -198
  112. package/SVF-doxygen/html/search/all_9.js +607 -607
  113. package/SVF-doxygen/html/search/all_a.js +46 -46
  114. package/SVF-doxygen/html/search/all_b.js +26 -26
  115. package/SVF-doxygen/html/search/all_c.js +115 -116
  116. package/SVF-doxygen/html/search/all_d.js +198 -198
  117. package/SVF-doxygen/html/search/all_e.js +207 -207
  118. package/SVF-doxygen/html/search/all_f.js +116 -116
  119. package/SVF-doxygen/html/search/classes_0.js +26 -26
  120. package/SVF-doxygen/html/search/classes_1.js +9 -9
  121. package/SVF-doxygen/html/search/classes_10.js +73 -73
  122. package/SVF-doxygen/html/search/classes_11.js +15 -15
  123. package/SVF-doxygen/html/search/classes_12.js +2 -2
  124. package/SVF-doxygen/html/search/classes_13.js +10 -10
  125. package/SVF-doxygen/html/search/classes_14.js +14 -14
  126. package/SVF-doxygen/html/search/classes_15.js +1 -1
  127. package/SVF-doxygen/html/search/classes_2.js +80 -80
  128. package/SVF-doxygen/html/search/classes_3.js +37 -37
  129. package/SVF-doxygen/html/search/classes_4.js +9 -9
  130. package/SVF-doxygen/html/search/classes_5.js +28 -28
  131. package/SVF-doxygen/html/search/classes_6.js +104 -104
  132. package/SVF-doxygen/html/search/classes_7.js +34 -34
  133. package/SVF-doxygen/html/search/classes_8.js +56 -56
  134. package/SVF-doxygen/html/search/classes_9.js +1 -1
  135. package/SVF-doxygen/html/search/classes_a.js +12 -12
  136. package/SVF-doxygen/html/search/classes_b.js +29 -29
  137. package/SVF-doxygen/html/search/classes_c.js +6 -6
  138. package/SVF-doxygen/html/search/classes_d.js +18 -18
  139. package/SVF-doxygen/html/search/classes_e.js +36 -36
  140. package/SVF-doxygen/html/search/classes_f.js +25 -25
  141. package/SVF-doxygen/html/search/defines_0.js +3 -3
  142. package/SVF-doxygen/html/search/defines_1.js +2 -2
  143. package/SVF-doxygen/html/search/defines_2.js +30 -30
  144. package/SVF-doxygen/html/search/defines_3.js +21 -21
  145. package/SVF-doxygen/html/search/defines_4.js +2 -2
  146. package/SVF-doxygen/html/search/defines_5.js +4 -4
  147. package/SVF-doxygen/html/search/defines_6.js +2 -2
  148. package/SVF-doxygen/html/search/defines_7.js +5 -5
  149. package/SVF-doxygen/html/search/defines_8.js +11 -11
  150. package/SVF-doxygen/html/search/defines_9.js +9 -9
  151. package/SVF-doxygen/html/search/defines_a.js +2 -2
  152. package/SVF-doxygen/html/search/defines_b.js +1 -1
  153. package/SVF-doxygen/html/search/defines_c.js +3 -3
  154. package/SVF-doxygen/html/search/defines_d.js +2 -2
  155. package/SVF-doxygen/html/search/defines_e.js +7 -7
  156. package/SVF-doxygen/html/search/defines_f.js +3 -3
  157. package/SVF-doxygen/html/search/enums_0.js +3 -3
  158. package/SVF-doxygen/html/search/enums_1.js +2 -2
  159. package/SVF-doxygen/html/search/enums_10.js +1 -1
  160. package/SVF-doxygen/html/search/enums_11.js +1 -1
  161. package/SVF-doxygen/html/search/enums_2.js +8 -8
  162. package/SVF-doxygen/html/search/enums_3.js +1 -1
  163. package/SVF-doxygen/html/search/enums_4.js +3 -3
  164. package/SVF-doxygen/html/search/enums_5.js +1 -1
  165. package/SVF-doxygen/html/search/enums_6.js +2 -2
  166. package/SVF-doxygen/html/search/enums_7.js +2 -2
  167. package/SVF-doxygen/html/search/enums_8.js +4 -4
  168. package/SVF-doxygen/html/search/enums_9.js +1 -1
  169. package/SVF-doxygen/html/search/enums_a.js +1 -1
  170. package/SVF-doxygen/html/search/enums_b.js +7 -7
  171. package/SVF-doxygen/html/search/enums_c.js +1 -1
  172. package/SVF-doxygen/html/search/enums_d.js +4 -4
  173. package/SVF-doxygen/html/search/enums_e.js +2 -2
  174. package/SVF-doxygen/html/search/enums_f.js +4 -4
  175. package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
  176. package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
  177. package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
  178. package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
  179. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  180. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  181. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  182. package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
  183. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  184. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  185. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  186. package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
  187. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  188. package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
  189. package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
  190. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  191. package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
  192. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  193. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  194. package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
  195. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  196. package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
  197. package/SVF-doxygen/html/search/files_0.js +13 -13
  198. package/SVF-doxygen/html/search/files_1.js +7 -7
  199. package/SVF-doxygen/html/search/files_10.js +8 -8
  200. package/SVF-doxygen/html/search/files_11.js +8 -8
  201. package/SVF-doxygen/html/search/files_12.js +2 -2
  202. package/SVF-doxygen/html/search/files_2.js +55 -55
  203. package/SVF-doxygen/html/search/files_3.js +14 -14
  204. package/SVF-doxygen/html/search/files_4.js +5 -5
  205. package/SVF-doxygen/html/search/files_5.js +13 -13
  206. package/SVF-doxygen/html/search/files_6.js +9 -9
  207. package/SVF-doxygen/html/search/files_7.js +14 -14
  208. package/SVF-doxygen/html/search/files_8.js +13 -13
  209. package/SVF-doxygen/html/search/files_9.js +18 -18
  210. package/SVF-doxygen/html/search/files_a.js +3 -3
  211. package/SVF-doxygen/html/search/files_b.js +2 -2
  212. package/SVF-doxygen/html/search/files_c.js +20 -20
  213. package/SVF-doxygen/html/search/files_d.js +4 -4
  214. package/SVF-doxygen/html/search/files_e.js +62 -62
  215. package/SVF-doxygen/html/search/files_f.js +8 -8
  216. package/SVF-doxygen/html/search/functions_0.js +13 -13
  217. package/SVF-doxygen/html/search/functions_1.js +360 -360
  218. package/SVF-doxygen/html/search/functions_10.js +140 -140
  219. package/SVF-doxygen/html/search/functions_11.js +139 -139
  220. package/SVF-doxygen/html/search/functions_12.js +288 -288
  221. package/SVF-doxygen/html/search/functions_13.js +59 -59
  222. package/SVF-doxygen/html/search/functions_14.js +39 -39
  223. package/SVF-doxygen/html/search/functions_15.js +71 -71
  224. package/SVF-doxygen/html/search/functions_16.js +32 -32
  225. package/SVF-doxygen/html/search/functions_17.js +3 -3
  226. package/SVF-doxygen/html/search/functions_18.js +172 -172
  227. package/SVF-doxygen/html/search/functions_2.js +89 -89
  228. package/SVF-doxygen/html/search/functions_3.js +258 -258
  229. package/SVF-doxygen/html/search/functions_4.js +78 -76
  230. package/SVF-doxygen/html/search/functions_5.js +53 -53
  231. package/SVF-doxygen/html/search/functions_6.js +60 -60
  232. package/SVF-doxygen/html/search/functions_7.js +856 -856
  233. package/SVF-doxygen/html/search/functions_8.js +149 -149
  234. package/SVF-doxygen/html/search/functions_9.js +423 -423
  235. package/SVF-doxygen/html/search/functions_a.js +30 -30
  236. package/SVF-doxygen/html/search/functions_b.js +2 -2
  237. package/SVF-doxygen/html/search/functions_c.js +25 -26
  238. package/SVF-doxygen/html/search/functions_d.js +79 -79
  239. package/SVF-doxygen/html/search/functions_e.js +35 -35
  240. package/SVF-doxygen/html/search/functions_f.js +56 -56
  241. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  242. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  243. package/SVF-doxygen/html/search/related_0.js +2 -2
  244. package/SVF-doxygen/html/search/related_1.js +2 -2
  245. package/SVF-doxygen/html/search/related_2.js +2 -2
  246. package/SVF-doxygen/html/search/related_3.js +2 -2
  247. package/SVF-doxygen/html/search/related_4.js +2 -2
  248. package/SVF-doxygen/html/search/related_5.js +1 -1
  249. package/SVF-doxygen/html/search/related_6.js +2 -2
  250. package/SVF-doxygen/html/search/related_7.js +4 -4
  251. package/SVF-doxygen/html/search/related_8.js +2 -2
  252. package/SVF-doxygen/html/search/related_9.js +4 -4
  253. package/SVF-doxygen/html/search/related_a.js +19 -19
  254. package/SVF-doxygen/html/search/related_b.js +4 -4
  255. package/SVF-doxygen/html/search/related_c.js +2 -2
  256. package/SVF-doxygen/html/search/related_d.js +12 -12
  257. package/SVF-doxygen/html/search/related_e.js +2 -2
  258. package/SVF-doxygen/html/search/related_f.js +2 -2
  259. package/SVF-doxygen/html/search/typedefs_0.js +19 -19
  260. package/SVF-doxygen/html/search/typedefs_1.js +26 -26
  261. package/SVF-doxygen/html/search/typedefs_10.js +61 -61
  262. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  263. package/SVF-doxygen/html/search/typedefs_12.js +11 -11
  264. package/SVF-doxygen/html/search/typedefs_13.js +33 -33
  265. package/SVF-doxygen/html/search/typedefs_14.js +8 -8
  266. package/SVF-doxygen/html/search/typedefs_2.js +129 -129
  267. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  268. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  269. package/SVF-doxygen/html/search/typedefs_5.js +41 -41
  270. package/SVF-doxygen/html/search/typedefs_6.js +55 -55
  271. package/SVF-doxygen/html/search/typedefs_7.js +44 -44
  272. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  273. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  274. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  275. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  276. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  277. package/SVF-doxygen/html/search/typedefs_d.js +14 -14
  278. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  279. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  280. package/SVF-doxygen/html/search/variables_0.js +151 -151
  281. package/SVF-doxygen/html/search/variables_1.js +75 -75
  282. package/SVF-doxygen/html/search/variables_10.js +97 -97
  283. package/SVF-doxygen/html/search/variables_11.js +44 -44
  284. package/SVF-doxygen/html/search/variables_12.js +92 -92
  285. package/SVF-doxygen/html/search/variables_13.js +76 -76
  286. package/SVF-doxygen/html/search/variables_14.js +14 -14
  287. package/SVF-doxygen/html/search/variables_15.js +48 -48
  288. package/SVF-doxygen/html/search/variables_16.js +9 -9
  289. package/SVF-doxygen/html/search/variables_17.js +1 -1
  290. package/SVF-doxygen/html/search/variables_18.js +2 -2
  291. package/SVF-doxygen/html/search/variables_2.js +38 -38
  292. package/SVF-doxygen/html/search/variables_3.js +142 -142
  293. package/SVF-doxygen/html/search/variables_4.js +55 -55
  294. package/SVF-doxygen/html/search/variables_5.js +37 -37
  295. package/SVF-doxygen/html/search/variables_6.js +66 -66
  296. package/SVF-doxygen/html/search/variables_7.js +34 -34
  297. package/SVF-doxygen/html/search/variables_8.js +7 -7
  298. package/SVF-doxygen/html/search/variables_9.js +78 -78
  299. package/SVF-doxygen/html/search/variables_a.js +4 -4
  300. package/SVF-doxygen/html/search/variables_b.js +10 -10
  301. package/SVF-doxygen/html/search/variables_c.js +45 -45
  302. package/SVF-doxygen/html/search/variables_d.js +56 -56
  303. package/SVF-doxygen/html/search/variables_e.js +123 -123
  304. package/SVF-doxygen/html/search/variables_f.js +30 -30
  305. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  306. package/SVF-doxygen/html/svf-ex_8cpp.html +1 -1
  307. package/SVF-doxygen/html/svf-ex_8cpp_source.html +1 -1
  308. package/package.json +1 -1
  309. package/svf/lib/SVFIR/SymbolTableInfo.cpp +1 -1
  310. package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +5 -8
  311. package/svf-llvm/include/SVF-LLVM/SymbolTableBuilder.h +1 -1
  312. package/svf-llvm/lib/LLVMUtil.cpp +42 -18
  313. package/svf-llvm/lib/SymbolTableBuilder.cpp +17 -8
@@ -938,374 +938,399 @@ $(function() {
938
938
  <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* functy = SVFUtil::dyn_cast&lt;FunctionType&gt;(elemTy))</div>
939
939
  <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; {</div>
940
940
  <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* paramty = functy-&gt;getParamType(0);</div>
941
- <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">LLVMUtil::getClassNameFromType</a>(paramty);</div>
942
- <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keywordflow">if</span> (className.size() &gt; 0)</div>
941
+ <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <span class="stringliteral">&quot;&quot;</span>;</div>
942
+ <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = SVFUtil::dyn_cast&lt;PointerType&gt;(paramty))</div>
943
943
  <div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; {</div>
944
- <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
945
- <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; }</div>
946
- <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; }</div>
947
- <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
948
- <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160;}</div>
949
- <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; </div>
950
- <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160;<span class="comment">/*</span></div>
951
- <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;<span class="comment"> * a virtual callsite follows the following instruction sequence pattern:</span></div>
952
- <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160;<span class="comment"> * %vtable = load this</span></div>
953
- <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160;<span class="comment"> * %vfn = getelementptr %vtable, idx</span></div>
954
- <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160;<span class="comment"> * %x = load %vfn</span></div>
955
- <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;<span class="comment"> * call %x (this)</span></div>
956
- <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160;<span class="comment"> */</span></div>
957
- <div class="line"><a name="l00949"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf"> 949</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">LLVMUtil::isVirtualCallSite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
958
- <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160;{</div>
959
- <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="comment">// the callsite must be an indirect one with at least one argument (this</span></div>
960
- <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="comment">// ptr)</span></div>
961
- <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">if</span> (cs-&gt;getCalledFunction() != <span class="keyword">nullptr</span> || cs-&gt;arg_empty())</div>
962
- <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
963
- <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; </div>
964
- <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="comment">// the first argument (this pointer) must be a pointer type and must be a</span></div>
965
- <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="comment">// class name</span></div>
966
- <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">if</span> (cs-&gt;getArgOperand(0)-&gt;getType()-&gt;isPointerTy() == <span class="keyword">false</span>)</div>
944
+ <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* st = SVFUtil::dyn_cast&lt;StructType&gt;(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(ptrTy)))</div>
945
+ <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; className = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a207fe02ded216fd0412fc894e13bee6e">LLVMUtil::getClassNameFromType</a>(st);</div>
946
+ <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; }</div>
947
+ <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordflow">if</span> (className.size() &gt; 0)</div>
948
+ <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; {</div>
949
+ <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
950
+ <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; }</div>
951
+ <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; }</div>
952
+ <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
953
+ <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160;}</div>
954
+ <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; </div>
955
+ <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;<span class="comment">/*</span></div>
956
+ <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160;<span class="comment"> * a virtual callsite follows the following instruction sequence pattern:</span></div>
957
+ <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160;<span class="comment"> * %vtable = load this</span></div>
958
+ <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160;<span class="comment"> * %vfn = getelementptr %vtable, idx</span></div>
959
+ <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160;<span class="comment"> * %x = load %vfn</span></div>
960
+ <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;<span class="comment"> * call %x (this)</span></div>
961
+ <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160;<span class="comment"> */</span></div>
962
+ <div class="line"><a name="l00954"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf"> 954</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">LLVMUtil::isVirtualCallSite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
963
+ <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160;{</div>
964
+ <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="comment">// the callsite must be an indirect one with at least one argument (this</span></div>
965
+ <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="comment">// ptr)</span></div>
966
+ <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">if</span> (cs-&gt;getCalledFunction() != <span class="keyword">nullptr</span> || cs-&gt;arg_empty())</div>
967
967
  <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
968
968
  <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; </div>
969
- <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfunc = cs-&gt;getCalledOperand();</div>
970
- <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst = SVFUtil::dyn_cast&lt;LoadInst&gt;(vfunc))</div>
971
- <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; {</div>
972
- <div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst-&gt;getPointerOperand();</div>
973
- <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
974
- <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr))</div>
975
- <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; {</div>
976
- <div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="keywordflow">if</span> (vfuncptrgepinst-&gt;getNumIndices() != 1)</div>
977
- <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
978
- <div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = vfuncptrgepinst-&gt;getPointerOperand();</div>
979
- <div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;LoadInst&gt;(vtbl))</div>
980
- <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; {</div>
981
- <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
982
- <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; }</div>
983
- <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; }</div>
984
- <div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; }</div>
985
- <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
986
- <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;}</div>
987
- <div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; </div>
988
- <div class="line"><a name="l00980"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a47bbc0527ced570d576ccc2f9df409cb"> 980</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47bbc0527ced570d576ccc2f9df409cb">LLVMUtil::isCPPThunkFunction</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>
989
- <div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160;{</div>
990
- <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str());</div>
991
- <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">isThunkFunc</a>;</div>
992
- <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;}</div>
993
- <div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; </div>
994
- <div class="line"><a name="l00986"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#aab1cb59036d181e20a477bf1eebd81ff"> 986</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aab1cb59036d181e20a477bf1eebd81ff">LLVMUtil::getThunkTarget</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>
995
- <div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160;{</div>
996
- <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* ret = <span class="keyword">nullptr</span>;</div>
997
- <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; </div>
998
- <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; bb : *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
999
- <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; {</div>
1000
- <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; inst : bb)</div>
1001
- <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; {</div>
1002
- <div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* callbase = SVFUtil::dyn_cast&lt;CallBase&gt;(&amp;inst))</div>
1003
- <div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; {</div>
1004
- <div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <span class="comment">// assert(cs.getCalledFunction() &amp;&amp;</span></div>
1005
- <div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <span class="comment">// &quot;Indirect call detected in thunk func&quot;);</span></div>
1006
- <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="comment">// assert(ret == nullptr &amp;&amp; &quot;multiple callsites in thunk func&quot;);</span></div>
1007
- <div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; </div>
1008
- <div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; ret = callbase-&gt;getCalledFunction();</div>
1009
- <div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; }</div>
1010
- <div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; }</div>
1011
- <div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; }</div>
969
+ <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="comment">// the first argument (this pointer) must be a pointer type and must be a</span></div>
970
+ <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="comment">// class name</span></div>
971
+ <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="keywordflow">if</span> (cs-&gt;getArgOperand(0)-&gt;getType()-&gt;isPointerTy() == <span class="keyword">false</span>)</div>
972
+ <div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
973
+ <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; </div>
974
+ <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfunc = cs-&gt;getCalledOperand();</div>
975
+ <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst = SVFUtil::dyn_cast&lt;LoadInst&gt;(vfunc))</div>
976
+ <div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; {</div>
977
+ <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst-&gt;getPointerOperand();</div>
978
+ <div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
979
+ <div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr))</div>
980
+ <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; {</div>
981
+ <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="keywordflow">if</span> (vfuncptrgepinst-&gt;getNumIndices() != 1)</div>
982
+ <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
983
+ <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = vfuncptrgepinst-&gt;getPointerOperand();</div>
984
+ <div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;LoadInst&gt;(vtbl))</div>
985
+ <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; {</div>
986
+ <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
987
+ <div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; }</div>
988
+ <div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; }</div>
989
+ <div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; }</div>
990
+ <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
991
+ <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;}</div>
992
+ <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; </div>
993
+ <div class="line"><a name="l00985"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a47bbc0527ced570d576ccc2f9df409cb"> 985</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47bbc0527ced570d576ccc2f9df409cb">LLVMUtil::isCPPThunkFunction</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>
994
+ <div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;{</div>
995
+ <div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str());</div>
996
+ <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">isThunkFunc</a>;</div>
997
+ <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160;}</div>
998
+ <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; </div>
999
+ <div class="line"><a name="l00991"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#aab1cb59036d181e20a477bf1eebd81ff"> 991</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aab1cb59036d181e20a477bf1eebd81ff">LLVMUtil::getThunkTarget</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>
1000
+ <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;{</div>
1001
+ <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* ret = <span class="keyword">nullptr</span>;</div>
1002
+ <div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; </div>
1003
+ <div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; bb : *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
1004
+ <div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; {</div>
1005
+ <div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; inst : bb)</div>
1006
+ <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; {</div>
1007
+ <div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* callbase = SVFUtil::dyn_cast&lt;CallBase&gt;(&amp;inst))</div>
1008
+ <div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; {</div>
1009
+ <div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <span class="comment">// assert(cs.getCalledFunction() &amp;&amp;</span></div>
1010
+ <div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="comment">// &quot;Indirect call detected in thunk func&quot;);</span></div>
1011
+ <div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="comment">// assert(ret == nullptr &amp;&amp; &quot;multiple callsites in thunk func&quot;);</span></div>
1012
1012
  <div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; </div>
1013
- <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keywordflow">return</span> ret;</div>
1014
- <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;}</div>
1015
- <div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; </div>
1016
- <div class="line"><a name="l01008"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0"> 1008</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#a68e7bad8eb537039559d8ddc851032e0">LLVMUtil::getVCallThisPtr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
1017
- <div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;{</div>
1018
- <div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordflow">if</span> (cs-&gt;paramHasAttr(0, llvm::Attribute::StructRet))</div>
1019
- <div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; {</div>
1020
- <div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <span class="keywordflow">return</span> cs-&gt;getArgOperand(1);</div>
1021
- <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; }</div>
1022
- <div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keywordflow">else</span></div>
1023
- <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; {</div>
1024
- <div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <span class="keywordflow">return</span> cs-&gt;getArgOperand(0);</div>
1025
- <div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; }</div>
1026
- <div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;}</div>
1027
- <div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; </div>
1028
- <div class="line"><a name="l01034"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a8873eb1cce9496f9699eab22c4a6d3ce"> 1034</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8873eb1cce9496f9699eab22c4a6d3ce">LLVMUtil::isSameThisPtrInConstructor</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* thisPtr1,</div>
1029
- <div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisPtr2)</div>
1030
- <div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;{</div>
1031
- <div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <span class="keywordflow">if</span> (thisPtr1 == thisPtr2)</div>
1032
- <div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
1033
- <div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisU : thisPtr1-&gt;users())</div>
1034
- <div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; {</div>
1035
- <div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = SVFUtil::dyn_cast&lt;StoreInst&gt;(thisU))</div>
1036
- <div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; {</div>
1037
- <div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* storeU : store-&gt;getPointerOperand()-&gt;users())</div>
1038
- <div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; {</div>
1039
- <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* load = SVFUtil::dyn_cast&lt;LoadInst&gt;(storeU))</div>
1040
- <div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; {</div>
1041
- <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordflow">if</span> (load-&gt;getNextNode() &amp;&amp;</div>
1042
- <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; SVFUtil::isa&lt;CastInst&gt;(load-&gt;getNextNode()))</div>
1043
- <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CastInst&gt;(load-&gt;getNextNode()) ==</div>
1044
- <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; (thisPtr2-&gt;stripPointerCasts());</div>
1045
- <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; }</div>
1046
- <div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; }</div>
1047
- <div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; }</div>
1048
- <div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; }</div>
1049
- <div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
1050
- <div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;}</div>
1051
- <div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; </div>
1052
- <div class="line"><a name="l01058"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#addcfb0135655706a86f6cc628475fccf"> 1058</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#addcfb0135655706a86f6cc628475fccf">LLVMUtil::getConstructorThisPtr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div>
1053
- <div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;{</div>
1054
- <div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; assert((<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(fun) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(fun)) &amp;&amp;</div>
1055
- <div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <span class="stringliteral">&quot;not a constructor?&quot;</span>);</div>
1056
- <div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; assert(fun-&gt;arg_size() &gt;= 1 &amp;&amp; <span class="stringliteral">&quot;argument size &gt;= 1?&quot;</span>);</div>
1057
- <div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* thisPtr = &amp;*(fun-&gt;arg_begin());</div>
1058
- <div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; <span class="keywordflow">return</span> thisPtr;</div>
1059
- <div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;}</div>
1060
- <div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; </div>
1061
- <div class="line"><a name="l01067"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72"> 1067</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</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>
1062
- <div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;{</div>
1063
- <div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;isDeclaration())</div>
1064
- <div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
1065
- <div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str();</div>
1066
- <div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="keywordflow">if</span> (funcName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>) != 0)</div>
1067
- <div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; {</div>
1068
- <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
1069
- <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; }</div>
1070
- <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
1071
- <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
1013
+ <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; ret = callbase-&gt;getCalledFunction();</div>
1014
+ <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; }</div>
1015
+ <div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; }</div>
1016
+ <div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; }</div>
1017
+ <div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; </div>
1018
+ <div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordflow">return</span> ret;</div>
1019
+ <div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;}</div>
1020
+ <div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; </div>
1021
+ <div class="line"><a name="l01013"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0"> 1013</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#a68e7bad8eb537039559d8ddc851032e0">LLVMUtil::getVCallThisPtr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
1022
+ <div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;{</div>
1023
+ <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <span class="keywordflow">if</span> (cs-&gt;paramHasAttr(0, llvm::Attribute::StructRet))</div>
1024
+ <div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; {</div>
1025
+ <div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keywordflow">return</span> cs-&gt;getArgOperand(1);</div>
1026
+ <div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; }</div>
1027
+ <div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="keywordflow">else</span></div>
1028
+ <div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; {</div>
1029
+ <div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <span class="keywordflow">return</span> cs-&gt;getArgOperand(0);</div>
1030
+ <div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; }</div>
1031
+ <div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;}</div>
1032
+ <div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; </div>
1033
+ <div class="line"><a name="l01039"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a8873eb1cce9496f9699eab22c4a6d3ce"> 1039</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8873eb1cce9496f9699eab22c4a6d3ce">LLVMUtil::isSameThisPtrInConstructor</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* thisPtr1,</div>
1034
+ <div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisPtr2)</div>
1035
+ <div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;{</div>
1036
+ <div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="keywordflow">if</span> (thisPtr1 == thisPtr2)</div>
1037
+ <div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
1038
+ <div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisU : thisPtr1-&gt;users())</div>
1039
+ <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; {</div>
1040
+ <div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = SVFUtil::dyn_cast&lt;StoreInst&gt;(thisU))</div>
1041
+ <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; {</div>
1042
+ <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* storeU : store-&gt;getPointerOperand()-&gt;users())</div>
1043
+ <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; {</div>
1044
+ <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* load = SVFUtil::dyn_cast&lt;LoadInst&gt;(storeU))</div>
1045
+ <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; {</div>
1046
+ <div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; <span class="keywordflow">if</span> (load-&gt;getNextNode() &amp;&amp;</div>
1047
+ <div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; SVFUtil::isa&lt;CastInst&gt;(load-&gt;getNextNode()))</div>
1048
+ <div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CastInst&gt;(load-&gt;getNextNode()) ==</div>
1049
+ <div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; (thisPtr2-&gt;stripPointerCasts());</div>
1050
+ <div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; }</div>
1051
+ <div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; }</div>
1052
+ <div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; }</div>
1053
+ <div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; }</div>
1054
+ <div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
1055
+ <div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;}</div>
1056
+ <div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; </div>
1057
+ <div class="line"><a name="l01063"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#addcfb0135655706a86f6cc628475fccf"> 1063</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#addcfb0135655706a86f6cc628475fccf">LLVMUtil::getConstructorThisPtr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div>
1058
+ <div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;{</div>
1059
+ <div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; assert((<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(fun) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(fun)) &amp;&amp;</div>
1060
+ <div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; <span class="stringliteral">&quot;not a constructor?&quot;</span>);</div>
1061
+ <div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; assert(fun-&gt;arg_size() &gt;= 1 &amp;&amp; <span class="stringliteral">&quot;argument size &gt;= 1?&quot;</span>);</div>
1062
+ <div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* thisPtr = &amp;*(fun-&gt;arg_begin());</div>
1063
+ <div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keywordflow">return</span> thisPtr;</div>
1064
+ <div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;}</div>
1065
+ <div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; </div>
1066
+ <div class="line"><a name="l01072"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72"> 1072</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</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>
1067
+ <div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;{</div>
1068
+ <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;isDeclaration())</div>
1069
+ <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
1070
+ <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str();</div>
1071
+ <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <span class="keywordflow">if</span> (funcName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>) != 0)</div>
1072
1072
  <div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; {</div>
1073
1073
  <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
1074
1074
  <div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; }</div>
1075
- <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
1076
- <div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
1077
- <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">&quot;::&quot;</span>);</div>
1078
- <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="keywordflow">if</span> (colon == std::string::npos)</div>
1079
- <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; {</div>
1080
- <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
1081
- <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; }</div>
1082
- <div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="keywordflow">else</span></div>
1083
- <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; {</div>
1084
- <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
1085
- <div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.substr(colon + 2));</div>
1075
+ <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
1076
+ <div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
1077
+ <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; {</div>
1078
+ <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
1079
+ <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; }</div>
1080
+ <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
1081
+ <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
1082
+ <div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">&quot;::&quot;</span>);</div>
1083
+ <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <span class="keywordflow">if</span> (colon == std::string::npos)</div>
1084
+ <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; {</div>
1085
+ <div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
1086
1086
  <div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; }</div>
1087
- <div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() &gt; 0 &amp;&amp;</div>
1088
- <div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>) == 0;</div>
1089
- <div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;}</div>
1090
- <div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; </div>
1091
- <div class="line"><a name="l01098"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754"> 1098</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</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>
1092
- <div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;{</div>
1093
- <div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;isDeclaration())</div>
1094
- <div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
1095
- <div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str();</div>
1096
- <div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <span class="keywordflow">if</span> (funcName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>) != 0)</div>
1097
- <div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; {</div>
1098
- <div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
1099
- <div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; }</div>
1100
- <div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
1101
- <div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
1087
+ <div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keywordflow">else</span></div>
1088
+ <div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; {</div>
1089
+ <div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
1090
+ <div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.substr(colon + 2));</div>
1091
+ <div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; }</div>
1092
+ <div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() &gt; 0 &amp;&amp;</div>
1093
+ <div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>) == 0;</div>
1094
+ <div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;}</div>
1095
+ <div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; </div>
1096
+ <div class="line"><a name="l01103"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754"> 1103</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</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>
1097
+ <div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;{</div>
1098
+ <div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;isDeclaration())</div>
1099
+ <div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
1100
+ <div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str();</div>
1101
+ <div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keywordflow">if</span> (funcName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>) != 0)</div>
1102
1102
  <div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; {</div>
1103
1103
  <div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
1104
1104
  <div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; }</div>
1105
- <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
1106
- <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
1107
- <div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">&quot;::&quot;</span>);</div>
1108
- <div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <span class="keywordflow">if</span> (colon == std::string::npos)</div>
1109
- <div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; {</div>
1110
- <div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
1111
- <div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; }</div>
1112
- <div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <span class="keywordflow">else</span></div>
1113
- <div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; {</div>
1114
- <div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
1115
- <div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.substr(colon + 2));</div>
1105
+ <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
1106
+ <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
1107
+ <div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; {</div>
1108
+ <div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
1109
+ <div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; }</div>
1110
+ <div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
1111
+ <div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
1112
+ <div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">&quot;::&quot;</span>);</div>
1113
+ <div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; <span class="keywordflow">if</span> (colon == std::string::npos)</div>
1114
+ <div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; {</div>
1115
+ <div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
1116
1116
  <div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; }</div>
1117
- <div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; <span class="keywordflow">return</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() &gt; 0 &amp;&amp; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.size() &gt; 0 &amp;&amp;</div>
1118
- <div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() + 1 == dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.size() &amp;&amp;</div>
1119
- <div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.compare(0, 1, <span class="stringliteral">&quot;~&quot;</span>) == 0 &amp;&amp;</div>
1120
- <div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.substr(1)) == 0);</div>
1121
- <div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;}</div>
1122
- <div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; </div>
1123
- <div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;<span class="comment">/*</span></div>
1124
- <div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;<span class="comment"> * get the ptr &quot;vtable&quot; for a given virtual callsite:</span></div>
1125
- <div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;<span class="comment"> * %vtable = load ...</span></div>
1126
- <div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;<span class="comment"> * %vfn = getelementptr %vtable, idx</span></div>
1127
- <div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;<span class="comment"> * %x = load %vfn</span></div>
1128
- <div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;<span class="comment"> * call %x (...)</span></div>
1129
- <div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;<span class="comment"> */</span></div>
1130
- <div class="line"><a name="l01137"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77"> 1137</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#a3a23aa54459a068e16c96e5b5eb72f77">LLVMUtil::getVCallVtblPtr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
1131
- <div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;{</div>
1132
- <div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* loadInst =</div>
1133
- <div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; SVFUtil::dyn_cast&lt;LoadInst&gt;(cs-&gt;getCalledOperand());</div>
1134
- <div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; assert(loadInst != <span class="keyword">nullptr</span>);</div>
1135
- <div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = loadInst-&gt;getPointerOperand();</div>
1136
- <div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* gepInst =</div>
1137
- <div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr);</div>
1138
- <div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; assert(gepInst != <span class="keyword">nullptr</span>);</div>
1139
- <div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = gepInst-&gt;getPointerOperand();</div>
1140
- <div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; <span class="keywordflow">return</span> vtbl;</div>
1141
- <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;}</div>
1142
- <div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; </div>
1143
- <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;<span class="comment">/*</span></div>
1144
- <div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;<span class="comment"> * Is this virtual call inside its own constructor or destructor?</span></div>
1145
- <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;<span class="comment"> */</span></div>
1146
- <div class="line"><a name="l01153"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a898e9c2ed163b618f2e86bc251131d8b"> 1153</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a898e9c2ed163b618f2e86bc251131d8b">LLVMUtil::VCallInCtorOrDtor</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
1147
- <div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;{</div>
1148
- <div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> classNameOfThisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">LLVMUtil::getClassNameOfThisPtr</a>(cs);</div>
1149
- <div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = cs-&gt;getCaller();</div>
1150
- <div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(func) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(func))</div>
1151
- <div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; {</div>
1152
- <div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(func-&gt;getName().str());</div>
1153
- <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <span class="keywordflow">if</span> (classNameOfThisPtr.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>) == 0)</div>
1154
- <div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
1155
- <div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; }</div>
1156
- <div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
1157
- <div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;}</div>
1158
- <div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; </div>
1159
- <div class="line"><a name="l01166"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6"> 1166</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">LLVMUtil::getClassNameFromType</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ty)</div>
1160
- <div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;{</div>
1161
- <div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <span class="stringliteral">&quot;&quot;</span>;</div>
1162
- <div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrType = SVFUtil::dyn_cast&lt;PointerType&gt;(ty))</div>
1163
- <div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; {</div>
1164
- <div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemType = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(ptrType);</div>
1165
- <div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(elemType) &amp;&amp;</div>
1166
- <div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; !((SVFUtil::cast&lt;StructType&gt;(elemType))-&gt;isLiteral()))</div>
1167
- <div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; {</div>
1168
- <div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> elemTypeName = elemType-&gt;getStructName().str();</div>
1169
- <div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>) == 0)</div>
1170
- <div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; {</div>
1171
- <div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size());</div>
1172
- <div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; }</div>
1173
- <div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>) ==</div>
1174
- <div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; 0)</div>
1175
- <div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; {</div>
1176
- <div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size());</div>
1177
- <div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; }</div>
1178
- <div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; }</div>
1179
- <div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; }</div>
1180
- <div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <span class="keywordflow">return</span> className;</div>
1181
- <div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;}</div>
1182
- <div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; </div>
1183
- <div class="line"><a name="l01190"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f"> 1190</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">LLVMUtil::getClassNameOfThisPtr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* inst)</div>
1184
- <div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;{</div>
1185
- <div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> thisPtrClassName;</div>
1186
- <div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a>* N = inst-&gt;getMetadata(<span class="stringliteral">&quot;VCallPtrType&quot;</span>))</div>
1187
- <div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; {</div>
1188
- <div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast&lt;MDString&gt;(N-&gt;getOperand(0).get());</div>
1189
- <div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; thisPtrClassName = mdstr-&gt;getString().str();</div>
1190
- <div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; }</div>
1191
- <div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <span class="keywordflow">if</span> (thisPtrClassName.size() == 0)</div>
1192
- <div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; {</div>
1193
- <div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">LLVMUtil::getVCallThisPtr</a>(inst);</div>
1194
- <div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; thisPtrClassName = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">getClassNameFromType</a>(thisPtr-&gt;getType());</div>
1195
- <div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; }</div>
1196
- <div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; </div>
1197
- <div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; <span class="keywordtype">size_t</span> found = thisPtrClassName.find_last_not_of(<span class="stringliteral">&quot;0123456789&quot;</span>);</div>
1198
- <div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="keywordflow">if</span> (found != std::string::npos)</div>
1199
- <div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; {</div>
1200
- <div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <span class="keywordflow">if</span> (found != thisPtrClassName.size() - 1 &amp;&amp;</div>
1201
- <div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; thisPtrClassName[found] == <span class="charliteral">&#39;.&#39;</span>)</div>
1202
- <div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; {</div>
1203
- <div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; <span class="keywordflow">return</span> thisPtrClassName.substr(0, found);</div>
1204
- <div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; }</div>
1205
- <div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; }</div>
1206
- <div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; </div>
1207
- <div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; <span class="keywordflow">return</span> thisPtrClassName;</div>
1208
- <div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;}</div>
1209
- <div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; </div>
1210
- <div class="line"><a name="l01217"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9"> 1217</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">LLVMUtil::getFunNameOfVCallSite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* inst)</div>
1211
- <div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;{</div>
1212
- <div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName;</div>
1213
- <div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a>* N = inst-&gt;getMetadata(<span class="stringliteral">&quot;VCallFunName&quot;</span>))</div>
1214
- <div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; {</div>
1215
- <div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast&lt;MDString&gt;(N-&gt;getOperand(0).get());</div>
1216
- <div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; funName = mdstr-&gt;getString().str();</div>
1217
- <div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; }</div>
1218
- <div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keywordflow">return</span> funName;</div>
1219
- <div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;}</div>
1220
- <div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; </div>
1221
- <div class="line"><a name="l01228"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770"> 1228</a></span>&#160;<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">LLVMUtil::getVCallIdx</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
1222
- <div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;{</div>
1223
- <div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst =</div>
1224
- <div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; SVFUtil::dyn_cast&lt;LoadInst&gt;(cs-&gt;getCalledOperand());</div>
1225
- <div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; assert(vfuncloadinst != <span class="keyword">nullptr</span>);</div>
1226
- <div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst-&gt;getPointerOperand();</div>
1227
- <div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
1228
- <div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr);</div>
1229
- <div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; User::const_op_iterator oi = vfuncptrgepinst-&gt;idx_begin();</div>
1230
- <div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* idx = SVFUtil::dyn_cast&lt;ConstantInt&gt;(oi-&gt;get());</div>
1231
- <div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> idx_value;</div>
1232
- <div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="keywordflow">if</span> (idx == <span class="keyword">nullptr</span>)</div>
1233
- <div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; {</div>
1234
- <div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;vcall gep idx not constantint\n&quot;</span>;</div>
1235
- <div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; idx_value = 0;</div>
1236
- <div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; }</div>
1237
- <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; <span class="keywordflow">else</span></div>
1238
- <div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; {</div>
1239
- <div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; idx_value = (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)idx-&gt;getSExtValue();</div>
1240
- <div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; }</div>
1241
- <div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; <span class="keywordflow">return</span> idx_value;</div>
1242
- <div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;}</div>
1243
- <div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; </div>
1244
- <div class="line"><a name="l01251"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f"> 1251</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>
1245
- <div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;{</div>
1246
- <div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; <span class="comment">// get default successor basic block and default case value (nullptr)</span></div>
1247
- <div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; vec.push_back({switchInst.getDefaultDest(), <span class="keyword">nullptr</span>});</div>
1248
- <div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; </div>
1249
- <div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; <span class="comment">// get normal case value and it&#39;s successor basic block</span></div>
1250
- <div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; cs : switchInst.cases())</div>
1251
- <div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; vec.push_back({cs.getCaseSuccessor(), cs.getCaseValue()});</div>
1252
- <div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;}</div>
1253
- <div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; </div>
1254
- <div class="line"><a name="l01261"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220"> 1261</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>
1255
- <div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;{</div>
1256
- <div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succBB = succBB2CondVal.first;</div>
1257
- <div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* caseValue = succBB2CondVal.second;</div>
1258
- <div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val;</div>
1259
- <div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; <span class="keywordflow">if</span> (caseValue == <span class="keyword">nullptr</span> || succBB == switchInst.getDefaultDest())</div>
1260
- <div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; {</div>
1261
- <div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; val = -1;</div>
1262
- <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; }</div>
1263
- <div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; <span class="keywordflow">else</span></div>
1264
- <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; {</div>
1265
- <div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <span class="keywordflow">if</span> (caseValue-&gt;getBitWidth() &lt;= 64)</div>
1266
- <div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; {</div>
1267
- <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; val = caseValue-&gt;getSExtValue();</div>
1268
- <div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; }</div>
1269
- <div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; <span class="keywordflow">else</span></div>
1270
- <div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; {</div>
1271
- <div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; val = -1;</div>
1272
- <div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; }</div>
1273
- <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; }</div>
1274
- <div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <span class="keywordflow">return</span> val;</div>
1275
- <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;}</div>
1276
- <div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; </div>
1277
- <div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div>
1278
- <div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;{</div>
1279
- <div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; </div>
1280
- <div class="line"><a name="l01291"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3"> 1291</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>
1281
- <div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;<span class="keyword"></span>{</div>
1282
- <div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1283
- <div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
1284
- <div class="line"><a name="l01295"></a><span class="lineno"> 1295</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>
1285
- <div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; {</div>
1286
- <div class="line"><a name="l01297"></a><span class="lineno"> 1297</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>
1287
- <div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; }</div>
1288
- <div class="line"><a name="l01299"></a><span class="lineno"> 1299</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>
1289
- <div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; {</div>
1290
- <div class="line"><a name="l01301"></a><span class="lineno"> 1301</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>
1291
- <div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; }</div>
1292
- <div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; <span class="keywordflow">else</span></div>
1293
- <div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; {</div>
1294
- <div class="line"><a name="l01305"></a><span class="lineno"> 1305</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>
1295
- <div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; <span class="keywordflow">if</span> (llvmVal)</div>
1296
- <div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *llvmVal &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
1297
- <div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; <span class="keywordflow">else</span></div>
1298
- <div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; No llvmVal found&quot;</span>;</div>
1299
- <div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; }</div>
1300
- <div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; rawstr &lt;&lt; this-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>();</div>
1301
- <div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1302
- <div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;}</div>
1117
+ <div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; <span class="keywordflow">else</span></div>
1118
+ <div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; {</div>
1119
+ <div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
1120
+ <div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.substr(colon + 2));</div>
1121
+ <div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; }</div>
1122
+ <div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="keywordflow">return</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() &gt; 0 &amp;&amp; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.size() &gt; 0 &amp;&amp;</div>
1123
+ <div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() + 1 == dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.size() &amp;&amp;</div>
1124
+ <div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.compare(0, 1, <span class="stringliteral">&quot;~&quot;</span>) == 0 &amp;&amp;</div>
1125
+ <div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.substr(1)) == 0);</div>
1126
+ <div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;}</div>
1127
+ <div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; </div>
1128
+ <div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;<span class="comment">/*</span></div>
1129
+ <div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;<span class="comment"> * get the ptr &quot;vtable&quot; for a given virtual callsite:</span></div>
1130
+ <div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;<span class="comment"> * %vtable = load ...</span></div>
1131
+ <div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;<span class="comment"> * %vfn = getelementptr %vtable, idx</span></div>
1132
+ <div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;<span class="comment"> * %x = load %vfn</span></div>
1133
+ <div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;<span class="comment"> * call %x (...)</span></div>
1134
+ <div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;<span class="comment"> */</span></div>
1135
+ <div class="line"><a name="l01142"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77"> 1142</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#a3a23aa54459a068e16c96e5b5eb72f77">LLVMUtil::getVCallVtblPtr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
1136
+ <div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;{</div>
1137
+ <div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* loadInst =</div>
1138
+ <div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; SVFUtil::dyn_cast&lt;LoadInst&gt;(cs-&gt;getCalledOperand());</div>
1139
+ <div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; assert(loadInst != <span class="keyword">nullptr</span>);</div>
1140
+ <div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = loadInst-&gt;getPointerOperand();</div>
1141
+ <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* gepInst =</div>
1142
+ <div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr);</div>
1143
+ <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; assert(gepInst != <span class="keyword">nullptr</span>);</div>
1144
+ <div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = gepInst-&gt;getPointerOperand();</div>
1145
+ <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; <span class="keywordflow">return</span> vtbl;</div>
1146
+ <div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;}</div>
1147
+ <div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; </div>
1148
+ <div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;<span class="comment">/*</span></div>
1149
+ <div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;<span class="comment"> * Is this virtual call inside its own constructor or destructor?</span></div>
1150
+ <div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;<span class="comment"> */</span></div>
1151
+ <div class="line"><a name="l01158"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a898e9c2ed163b618f2e86bc251131d8b"> 1158</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a898e9c2ed163b618f2e86bc251131d8b">LLVMUtil::VCallInCtorOrDtor</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
1152
+ <div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;{</div>
1153
+ <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> classNameOfThisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">LLVMUtil::getClassNameOfThisPtr</a>(cs);</div>
1154
+ <div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = cs-&gt;getCaller();</div>
1155
+ <div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(func) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(func))</div>
1156
+ <div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; {</div>
1157
+ <div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(func-&gt;getName().str());</div>
1158
+ <div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; <span class="keywordflow">if</span> (classNameOfThisPtr.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>) == 0)</div>
1159
+ <div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
1160
+ <div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; }</div>
1161
+ <div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
1162
+ <div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;}</div>
1163
+ <div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; </div>
1164
+ <div class="line"><a name="l01171"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a207fe02ded216fd0412fc894e13bee6e"> 1171</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a207fe02ded216fd0412fc894e13bee6e">LLVMUtil::getClassNameFromType</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* ty)</div>
1165
+ <div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;{</div>
1166
+ <div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <span class="stringliteral">&quot;&quot;</span>;</div>
1167
+ <div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="keywordflow">if</span> (!((SVFUtil::cast&lt;StructType&gt;(ty))-&gt;isLiteral()))</div>
1168
+ <div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; {</div>
1169
+ <div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> elemTypeName = ty-&gt;getStructName().str();</div>
1170
+ <div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>) == 0)</div>
1171
+ <div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; {</div>
1172
+ <div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size());</div>
1173
+ <div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; }</div>
1174
+ <div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>) == 0)</div>
1175
+ <div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; {</div>
1176
+ <div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size());</div>
1177
+ <div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; }</div>
1178
+ <div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; }</div>
1179
+ <div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; <span class="keywordflow">return</span> className;</div>
1180
+ <div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;}</div>
1181
+ <div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; </div>
1182
+ <div class="line"><a name="l01189"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f"> 1189</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">LLVMUtil::getClassNameOfThisPtr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* inst)</div>
1183
+ <div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;{</div>
1184
+ <div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> thisPtrClassName = <span class="stringliteral">&quot;&quot;</span>;</div>
1185
+ <div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a>* N = inst-&gt;getMetadata(<span class="stringliteral">&quot;VCallPtrType&quot;</span>))</div>
1186
+ <div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; {</div>
1187
+ <div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast&lt;MDString&gt;(N-&gt;getOperand(0).get());</div>
1188
+ <div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; thisPtrClassName = mdstr-&gt;getString().str();</div>
1189
+ <div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; }</div>
1190
+ <div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="keywordflow">if</span> (thisPtrClassName.size() == 0)</div>
1191
+ <div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; {</div>
1192
+ <div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">LLVMUtil::getVCallThisPtr</a>(inst);</div>
1193
+ <div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = SVFUtil::dyn_cast&lt;PointerType&gt;(thisPtr-&gt;getType()))</div>
1194
+ <div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* st = SVFUtil::dyn_cast&lt;StructType&gt;(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(ptrTy)))</div>
1195
+ <div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; thisPtrClassName = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a207fe02ded216fd0412fc894e13bee6e">getClassNameFromType</a>(st);</div>
1196
+ <div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; }</div>
1197
+ <div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; </div>
1198
+ <div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="keywordtype">size_t</span> found = thisPtrClassName.find_last_not_of(<span class="stringliteral">&quot;0123456789&quot;</span>);</div>
1199
+ <div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; <span class="keywordflow">if</span> (found != std::string::npos)</div>
1200
+ <div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; {</div>
1201
+ <div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; <span class="keywordflow">if</span> (found != thisPtrClassName.size() - 1 &amp;&amp;</div>
1202
+ <div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; thisPtrClassName[found] == <span class="charliteral">&#39;.&#39;</span>)</div>
1203
+ <div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; {</div>
1204
+ <div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; <span class="keywordflow">return</span> thisPtrClassName.substr(0, found);</div>
1205
+ <div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; }</div>
1206
+ <div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; }</div>
1207
+ <div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; </div>
1208
+ <div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <span class="keywordflow">return</span> thisPtrClassName;</div>
1209
+ <div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;}</div>
1210
+ <div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; </div>
1211
+ <div class="line"><a name="l01218"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9"> 1218</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">LLVMUtil::getFunNameOfVCallSite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* inst)</div>
1212
+ <div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;{</div>
1213
+ <div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName;</div>
1214
+ <div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a>* N = inst-&gt;getMetadata(<span class="stringliteral">&quot;VCallFunName&quot;</span>))</div>
1215
+ <div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; {</div>
1216
+ <div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast&lt;MDString&gt;(N-&gt;getOperand(0).get());</div>
1217
+ <div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; funName = mdstr-&gt;getString().str();</div>
1218
+ <div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; }</div>
1219
+ <div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; <span class="keywordflow">return</span> funName;</div>
1220
+ <div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;}</div>
1221
+ <div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; </div>
1222
+ <div class="line"><a name="l01229"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770"> 1229</a></span>&#160;<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">LLVMUtil::getVCallIdx</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
1223
+ <div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;{</div>
1224
+ <div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst =</div>
1225
+ <div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; SVFUtil::dyn_cast&lt;LoadInst&gt;(cs-&gt;getCalledOperand());</div>
1226
+ <div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; assert(vfuncloadinst != <span class="keyword">nullptr</span>);</div>
1227
+ <div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst-&gt;getPointerOperand();</div>
1228
+ <div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
1229
+ <div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr);</div>
1230
+ <div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; User::const_op_iterator oi = vfuncptrgepinst-&gt;idx_begin();</div>
1231
+ <div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* idx = SVFUtil::dyn_cast&lt;ConstantInt&gt;(oi-&gt;get());</div>
1232
+ <div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> idx_value;</div>
1233
+ <div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; <span class="keywordflow">if</span> (idx == <span class="keyword">nullptr</span>)</div>
1234
+ <div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; {</div>
1235
+ <div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;vcall gep idx not constantint\n&quot;</span>;</div>
1236
+ <div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; idx_value = 0;</div>
1237
+ <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; }</div>
1238
+ <div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <span class="keywordflow">else</span></div>
1239
+ <div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; {</div>
1240
+ <div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; idx_value = (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)idx-&gt;getSExtValue();</div>
1241
+ <div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; }</div>
1242
+ <div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; <span class="keywordflow">return</span> idx_value;</div>
1243
+ <div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;}</div>
1244
+ <div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; </div>
1245
+ <div class="line"><a name="l01252"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f"> 1252</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>
1246
+ <div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;{</div>
1247
+ <div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; <span class="comment">// get default successor basic block and default case value (nullptr)</span></div>
1248
+ <div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; vec.push_back({switchInst.getDefaultDest(), <span class="keyword">nullptr</span>});</div>
1249
+ <div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; </div>
1250
+ <div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; <span class="comment">// get normal case value and it&#39;s successor basic block</span></div>
1251
+ <div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; cs : switchInst.cases())</div>
1252
+ <div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; vec.push_back({cs.getCaseSuccessor(), cs.getCaseValue()});</div>
1253
+ <div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;}</div>
1254
+ <div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; </div>
1255
+ <div class="line"><a name="l01262"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220"> 1262</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>
1256
+ <div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;{</div>
1257
+ <div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succBB = succBB2CondVal.first;</div>
1258
+ <div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* caseValue = succBB2CondVal.second;</div>
1259
+ <div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val;</div>
1260
+ <div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; <span class="keywordflow">if</span> (caseValue == <span class="keyword">nullptr</span> || succBB == switchInst.getDefaultDest())</div>
1261
+ <div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; {</div>
1262
+ <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; val = -1;</div>
1263
+ <div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; }</div>
1264
+ <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; <span class="keywordflow">else</span></div>
1265
+ <div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; {</div>
1266
+ <div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; <span class="keywordflow">if</span> (caseValue-&gt;getBitWidth() &lt;= 64)</div>
1267
+ <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; {</div>
1268
+ <div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; val = caseValue-&gt;getSExtValue();</div>
1269
+ <div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; }</div>
1270
+ <div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; <span class="keywordflow">else</span></div>
1271
+ <div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; {</div>
1272
+ <div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; val = -1;</div>
1273
+ <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; }</div>
1274
+ <div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; }</div>
1275
+ <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; <span class="keywordflow">return</span> val;</div>
1276
+ <div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;}</div>
1277
+ <div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; </div>
1278
+ <div class="line"><a name="l01289"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159"> 1289</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>
1279
+ <div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;{</div>
1280
+ <div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1281
+ <div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
1282
+ <div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <span class="keywordflow">if</span> (val)</div>
1283
+ <div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *val &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
1284
+ <div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; <span class="keywordflow">else</span></div>
1285
+ <div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm Value is null&quot;</span>;</div>
1286
+ <div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1287
+ <div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;}</div>
1288
+ <div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; </div>
1289
+ <div class="line"><a name="l01300"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a6e8682537cf5bed808df439bd7e1add9"> 1300</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>
1290
+ <div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;{</div>
1291
+ <div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1292
+ <div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
1293
+ <div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
1294
+ <div class="line"><a name="l01305"></a><span class="lineno"> 1305</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>
1295
+ <div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; <span class="keywordflow">else</span></div>
1296
+ <div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm type is null&quot;</span>;</div>
1297
+ <div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1298
+ <div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;}</div>
1299
+ <div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; </div>
1300
+ <div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; </div>
1301
+ <div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div>
1302
+ <div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;{</div>
1303
1303
  <div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; </div>
1304
- <div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;} <span class="comment">// namespace SVF</span></div>
1304
+ <div class="line"><a name="l01315"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3"> 1315</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>
1305
+ <div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;<span class="keyword"></span>{</div>
1306
+ <div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1307
+ <div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
1308
+ <div class="line"><a name="l01319"></a><span class="lineno"> 1319</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>
1309
+ <div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; {</div>
1310
+ <div class="line"><a name="l01321"></a><span class="lineno"> 1321</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>
1311
+ <div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; }</div>
1312
+ <div class="line"><a name="l01323"></a><span class="lineno"> 1323</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>
1313
+ <div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; {</div>
1314
+ <div class="line"><a name="l01325"></a><span class="lineno"> 1325</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>
1315
+ <div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; }</div>
1316
+ <div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; <span class="keywordflow">else</span></div>
1317
+ <div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; {</div>
1318
+ <div class="line"><a name="l01329"></a><span class="lineno"> 1329</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>
1319
+ <div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; <span class="keywordflow">if</span> (llvmVal)</div>
1320
+ <div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *llvmVal &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
1321
+ <div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; <span class="keywordflow">else</span></div>
1322
+ <div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; No llvmVal found&quot;</span>;</div>
1323
+ <div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; }</div>
1324
+ <div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; rawstr &lt;&lt; this-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>();</div>
1325
+ <div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1326
+ <div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;}</div>
1327
+ <div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; </div>
1328
+ <div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;} <span class="comment">// namespace SVF</span></div>
1305
1329
  </div><!-- fragment --></div><!-- contents -->
1306
1330
  <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#l00132">BasicTypes.h:132</a></div></div>
1307
1331
  <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#l00686">LLVMUtil.cpp:686</a></div></div>
1308
1332
  <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#l00263">LLVMUtil.cpp:263</a></div></div>
1333
+ <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#l01289">LLVMUtil.cpp:1289</a></div></div>
1309
1334
  <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#l00244">LLVMUtil.cpp:244</a></div></div>
1310
1335
  <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#l00183">BasicTypes.h:183</a></div></div>
1311
1336
  <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#l00101">LLVMModule.h:101</a></div></div>
@@ -1321,13 +1346,13 @@ $(function() {
1321
1346
  <div class="ttc" id="aLLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
1322
1347
  <div class="ttc" id="anamespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00097">SVFType.h:97</a></div></div>
1323
1348
  <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#l00084">BasicTypes.h:84</a></div></div>
1324
- <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#l01251">LLVMUtil.cpp:1251</a></div></div>
1349
+ <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#l01252">LLVMUtil.cpp:1252</a></div></div>
1325
1350
  <div class="ttc" id="anamespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
1326
1351
  <div class="ttc" id="anamespaceSVF_html_a3d9e7f32dc17fe8d40f8d6a011403b91"><div class="ttname"><a href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">SVF::IntegerType</a></div><div class="ttdeci">llvm::IntegerType IntegerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
1327
1352
  <div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html">SVF::cppUtil::DemangledName</a></div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00046">CppUtil.h:46</a></div></div>
1328
1353
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a9815a5b31ac7dc21239d08e5b9f61106"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVF::SVFUtil::getSVFCallSite</a></div><div class="ttdeci">CallSite getSVFCallSite(const SVFInstruction *inst)</div><div class="ttdoc">Return LLVM callsite given an instruction.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00196">SVFUtil.h:196</a></div></div>
1329
1354
  <div class="ttc" id="anamespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
1330
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a898e9c2ed163b618f2e86bc251131d8b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a898e9c2ed163b618f2e86bc251131d8b">SVF::LLVMUtil::VCallInCtorOrDtor</a></div><div class="ttdeci">bool VCallInCtorOrDtor(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01153">LLVMUtil.cpp:1153</a></div></div>
1355
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a898e9c2ed163b618f2e86bc251131d8b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a898e9c2ed163b618f2e86bc251131d8b">SVF::LLVMUtil::VCallInCtorOrDtor</a></div><div class="ttdeci">bool VCallInCtorOrDtor(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01158">LLVMUtil.cpp:1158</a></div></div>
1331
1356
  <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#l00232">LLVMUtil.cpp:232</a></div></div>
1332
1357
  <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#l00349">LLVMUtil.cpp:349</a></div></div>
1333
1358
  <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#l00154">LLVMUtil.cpp:154</a></div></div>
@@ -1338,7 +1363,7 @@ $(function() {
1338
1363
  <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#l00103">BasicTypes.h:103</a></div></div>
1339
1364
  <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#l00600">LLVMUtil.cpp:600</a></div></div>
1340
1365
  <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#l00080">BasicTypes.h:80</a></div></div>
1341
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a41e64f3318e2bf368eebe9a104ef6ad9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">SVF::LLVMUtil::getFunNameOfVCallSite</a></div><div class="ttdeci">std::string getFunNameOfVCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01217">LLVMUtil.cpp:1217</a></div></div>
1366
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a41e64f3318e2bf368eebe9a104ef6ad9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">SVF::LLVMUtil::getFunNameOfVCallSite</a></div><div class="ttdeci">std::string getFunNameOfVCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01218">LLVMUtil.cpp:1218</a></div></div>
1342
1367
  <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>
1343
1368
  <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#l00118">LLVMUtil.cpp:118</a></div></div>
1344
1369
  <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#l00566">LLVMUtil.cpp:566</a></div></div>
@@ -1348,19 +1373,20 @@ $(function() {
1348
1373
  <div class="ttc" id="anamespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
1349
1374
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4f803756f0a73e8564d9544ce27be1c9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4f803756f0a73e8564d9544ce27be1c9">SVF::LLVMUtil::getVtblStruct</a></div><div class="ttdeci">const ConstantStruct * getVtblStruct(const GlobalValue *vtbl)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00896">LLVMUtil.cpp:896</a></div></div>
1350
1375
  <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#l00144">BasicTypes.h:144</a></div></div>
1351
- <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#l01261">LLVMUtil.cpp:1261</a></div></div>
1376
+ <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#l01262">LLVMUtil.cpp:1262</a></div></div>
1352
1377
  <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#l00121">BasicTypes.h:121</a></div></div>
1353
1378
  <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#l00081">BasicTypes.h:81</a></div></div>
1354
1379
  <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#l00208">LLVMModule.h:208</a></div></div>
1355
1380
  <div class="ttc" id="anamespaceSVF_html_a5a6e8ab900d5cd17ef72661006a7fbe0"><div class="ttname"><a href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">SVF::LoadInst</a></div><div class="ttdeci">llvm::LoadInst LoadInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00147">BasicTypes.h:147</a></div></div>
1356
1381
  <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#l00128">BasicTypes.h:128</a></div></div>
1357
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_addcfb0135655706a86f6cc628475fccf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#addcfb0135655706a86f6cc628475fccf">SVF::LLVMUtil::getConstructorThisPtr</a></div><div class="ttdeci">const Argument * getConstructorThisPtr(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01058">LLVMUtil.cpp:1058</a></div></div>
1358
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a68e7bad8eb537039559d8ddc851032e0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">SVF::LLVMUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01008">LLVMUtil.cpp:1008</a></div></div>
1382
+ <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#l01300">LLVMUtil.cpp:1300</a></div></div>
1383
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_addcfb0135655706a86f6cc628475fccf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#addcfb0135655706a86f6cc628475fccf">SVF::LLVMUtil::getConstructorThisPtr</a></div><div class="ttdeci">const Argument * getConstructorThisPtr(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01063">LLVMUtil.cpp:1063</a></div></div>
1384
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a68e7bad8eb537039559d8ddc851032e0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">SVF::LLVMUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01013">LLVMUtil.cpp:1013</a></div></div>
1359
1385
  <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#l00093">BasicTypes.h:93</a></div></div>
1360
1386
  <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#l00522">SVFValue.h:522</a></div></div>
1361
1387
  <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>
1362
1388
  <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>
1363
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8873eb1cce9496f9699eab22c4a6d3ce"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8873eb1cce9496f9699eab22c4a6d3ce">SVF::LLVMUtil::isSameThisPtrInConstructor</a></div><div class="ttdeci">bool isSameThisPtrInConstructor(const Argument *thisPtr1, const Value *thisPtr2)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01034">LLVMUtil.cpp:1034</a></div></div>
1389
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8873eb1cce9496f9699eab22c4a6d3ce"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8873eb1cce9496f9699eab22c4a6d3ce">SVF::LLVMUtil::isSameThisPtrInConstructor</a></div><div class="ttdeci">bool isSameThisPtrInConstructor(const Argument *thisPtr1, const Value *thisPtr2)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01039">LLVMUtil.cpp:1039</a></div></div>
1364
1390
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07c785d931cef3c61e3dab4c615770be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">SVF::LLVMUtil::isPtrInUncalledFunction</a></div><div class="ttdeci">bool isPtrInUncalledFunction(const Value *value)</div><div class="ttdoc">Return true if this is value in a dead function (function without any caller)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00187">LLVMUtil.cpp:187</a></div></div>
1365
1391
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ac9d6aff1a5e778e45c51b4f3b6d787e0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ac9d6aff1a5e778e45c51b4f3b6d787e0">SVF::LLVMUtil::isProgEntryFunction</a></div><div class="ttdeci">bool isProgEntryFunction(const Function *fun)</div><div class="ttdoc">Check whether a function is an entry function (i.e., main)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00102">LLVMUtil.h:102</a></div></div>
1366
1392
  <div class="ttc" id="acJSON_8cpp_html_a3f9a0d3265a6254722587175dac3e4dc"><div class="ttname"><a href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a></div><div class="ttdeci">newitem type</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02739">cJSON.cpp:2739</a></div></div>
@@ -1369,7 +1395,7 @@ $(function() {
1369
1395
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aedfa6e9216c6c788c26aef1967689b76"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVF::SVFUtil::isHeapAllocExtCallViaArg</a></div><div class="ttdeci">bool isHeapAllocExtCallViaArg(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00431">SVFUtil.h:431</a></div></div>
1370
1396
  <div class="ttc" id="anamespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00085">BasicTypes.h:85</a></div></div>
1371
1397
  <div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a745a2addadc136075d45c7fb8437af3e"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">SVF::cppUtil::demangle</a></div><div class="ttdeci">struct DemangledName demangle(const std::string &amp;name)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00153">CppUtil.cpp:153</a></div></div>
1372
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a3a23aa54459a068e16c96e5b5eb72f77"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77">SVF::LLVMUtil::getVCallVtblPtr</a></div><div class="ttdeci">const Value * getVCallVtblPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01137">LLVMUtil.cpp:1137</a></div></div>
1398
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a3a23aa54459a068e16c96e5b5eb72f77"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77">SVF::LLVMUtil::getVCallVtblPtr</a></div><div class="ttdeci">const Value * getVCallVtblPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01142">LLVMUtil.cpp:1142</a></div></div>
1373
1399
  <div class="ttc" id="acJSON_8cpp_html_a930920b2bc42824a5c03be681830f4b2"><div class="ttname"><a href="cJSON_8cpp.html#a930920b2bc42824a5c03be681830f4b2">true</a></div><div class="ttdeci">return true</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02295">cJSON.cpp:2295</a></div></div>
1374
1400
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8a77403306e97ab4cb31a56d38bba5be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">SVF::LLVMUtil::isConstDataOrAggData</a></div><div class="ttdeci">bool isConstDataOrAggData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00414">LLVMUtil.h:414</a></div></div>
1375
1401
  <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#l00092">BasicTypes.h:92</a></div></div>
@@ -1381,7 +1407,7 @@ $(function() {
1381
1407
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a523a8c3f9bfaea178733822ac598d552"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a523a8c3f9bfaea178733822ac598d552">SVF::LLVMUtil::removeFunAnnotations</a></div><div class="ttdeci">void removeFunAnnotations(std::vector&lt; Function * &gt; &amp;removedFuncList)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00504">LLVMUtil.cpp:504</a></div></div>
1382
1408
  <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#l00110">BasicTypes.h:110</a></div></div>
1383
1409
  <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>
1384
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a206973624fcc58e6044c884dba23a754"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">SVF::LLVMUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01098">LLVMUtil.cpp:1098</a></div></div>
1410
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a206973624fcc58e6044c884dba23a754"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">SVF::LLVMUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01103">LLVMUtil.cpp:1103</a></div></div>
1385
1411
  <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#l00332">LLVMUtil.h:332</a></div></div>
1386
1412
  <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#l00244">LLVMUtil.h:244</a></div></div>
1387
1413
  <div class="ttc" id="aLLVMUtil_8cpp_html_a61c158146c07e77234eb4a2f9b940821"><div class="ttname"><a href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a></div><div class="ttdeci">const std::string structName</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00044">LLVMUtil.cpp:44</a></div></div>
@@ -1390,7 +1416,7 @@ $(function() {
1390
1416
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a0095d23a9c9d5d62ec4a23c56824b5f0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a0095d23a9c9d5d62ec4a23c56824b5f0">SVF::LLVMUtil::getLLVMCallSite</a></div><div class="ttdeci">const CallBase * getLLVMCallSite(const Value *value)</div><div class="ttdoc">Return LLVM callsite given a value.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00068">LLVMUtil.h:68</a></div></div>
1391
1417
  <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#l00309">SVFType.h:309</a></div></div>
1392
1418
  <div class="ttc" id="anamespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00082">BasicTypes.h:82</a></div></div>
1393
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab1b4c565ae6be788b934defc21a5cfaf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">SVF::LLVMUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00949">LLVMUtil.cpp:949</a></div></div>
1419
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab1b4c565ae6be788b934defc21a5cfaf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">SVF::LLVMUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00954">LLVMUtil.cpp:954</a></div></div>
1394
1420
  <div class="ttc" id="anamespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00052">SVFType.h:52</a></div></div>
1395
1421
  <div class="ttc" id="anamespaceSVF_html_a89c7208bfc0b57873dfa574f52050295"><div class="ttname"><a href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">SVF::DISubprogram</a></div><div class="ttdeci">llvm::DISubprogram DISubprogram</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00111">BasicTypes.h:111</a></div></div>
1396
1422
  <div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html_af6117df8aec7f4c077058fa8f00b0243"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">SVF::cppUtil::DemangledName::isThunkFunc</a></div><div class="ttdeci">bool isThunkFunc</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00050">CppUtil.h:50</a></div></div>
@@ -1403,18 +1429,19 @@ $(function() {
1403
1429
  <div class="ttc" id="anamespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00123">BasicTypes.h:123</a></div></div>
1404
1430
  <div class="ttc" id="aclassSVF_1_1StInfo_html_ac0a9f85f90524abfd519d3cd2ac95a56"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">SVF::StInfo::getFlattenFieldTypes</a></div><div class="ttdeci">std::vector&lt; const SVFType * &gt; &amp; getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00192">SVFType.h:192</a></div></div>
1405
1431
  <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#l00104">LLVMUtil.cpp:104</a></div></div>
1406
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa841a295ec803b6a1f2bd248f63f863f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">SVF::LLVMUtil::getClassNameOfThisPtr</a></div><div class="ttdeci">std::string getClassNameOfThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01190">LLVMUtil.cpp:1190</a></div></div>
1432
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa841a295ec803b6a1f2bd248f63f863f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">SVF::LLVMUtil::getClassNameOfThisPtr</a></div><div class="ttdeci">std::string getClassNameOfThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01189">LLVMUtil.cpp:1189</a></div></div>
1407
1433
  <div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html_a5cd207bce618521166e6fa235014b297"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">SVF::cppUtil::DemangledName::className</a></div><div class="ttdeci">std::string className</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00048">CppUtil.h:48</a></div></div>
1408
1434
  <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#l00273">BasicTypes.h:273</a></div></div>
1409
1435
  <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#l00585">LLVMUtil.cpp:585</a></div></div>
1410
1436
  <div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html_a1dd17b240663bc9412adefde82385e02"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">SVF::cppUtil::DemangledName::funcName</a></div><div class="ttdeci">std::string funcName</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00049">CppUtil.h:49</a></div></div>
1411
1437
  <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#l00140">BasicTypes.h:140</a></div></div>
1412
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a47bbc0527ced570d576ccc2f9df409cb"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a47bbc0527ced570d576ccc2f9df409cb">SVF::LLVMUtil::isCPPThunkFunction</a></div><div class="ttdeci">bool isCPPThunkFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00980">LLVMUtil.cpp:980</a></div></div>
1413
- <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#l01291">LLVMUtil.cpp:1291</a></div></div>
1438
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a47bbc0527ced570d576ccc2f9df409cb"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a47bbc0527ced570d576ccc2f9df409cb">SVF::LLVMUtil::isCPPThunkFunction</a></div><div class="ttdeci">bool isCPPThunkFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00985">LLVMUtil.cpp:985</a></div></div>
1439
+ <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#l01315">LLVMUtil.cpp:1315</a></div></div>
1414
1440
  <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#l00215">LLVMModule.h:215</a></div></div>
1415
1441
  <div class="ttc" id="anamespaceSVF_html_a67f3f86344f028cacfbeb08caaf7bb0f"><div class="ttname"><a href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">SVF::GlobalValue</a></div><div class="ttdeci">llvm::GlobalValue GlobalValue</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00086">BasicTypes.h:86</a></div></div>
1416
1442
  <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#l00790">LLVMUtil.cpp:790</a></div></div>
1417
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aab1cb59036d181e20a477bf1eebd81ff"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aab1cb59036d181e20a477bf1eebd81ff">SVF::LLVMUtil::getThunkTarget</a></div><div class="ttdeci">const Function * getThunkTarget(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00986">LLVMUtil.cpp:986</a></div></div>
1443
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aab1cb59036d181e20a477bf1eebd81ff"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aab1cb59036d181e20a477bf1eebd81ff">SVF::LLVMUtil::getThunkTarget</a></div><div class="ttdeci">const Function * getThunkTarget(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00991">LLVMUtil.cpp:991</a></div></div>
1444
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a207fe02ded216fd0412fc894e13bee6e"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a207fe02ded216fd0412fc894e13bee6e">SVF::LLVMUtil::getClassNameFromType</a></div><div class="ttdeci">std::string getClassNameFromType(const StructType *ty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01171">LLVMUtil.cpp:1171</a></div></div>
1418
1445
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae368713463c84425f9a1ad27ff401a47"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae368713463c84425f9a1ad27ff401a47">SVF::LLVMUtil::getTypeOfHeapAlloc</a></div><div class="ttdeci">const Type * getTypeOfHeapAlloc(const Instruction *inst)</div><div class="ttdoc">Get the type of the heap allocation.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00375">LLVMUtil.cpp:375</a></div></div>
1419
1446
  <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#l00069">LLVMUtil.cpp:69</a></div></div>
1420
1447
  <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#l00118">BasicTypes.h:118</a></div></div>
@@ -1437,13 +1464,12 @@ $(function() {
1437
1464
  <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#l00663">LLVMUtil.cpp:663</a></div></div>
1438
1465
  <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>
1439
1466
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abba4111230f6009bbf50518ee36a9870"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">SVF::LLVMUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00119">LLVMUtil.h:119</a></div></div>
1440
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a718c8ec79f36cef5df2f4530541f2770"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">SVF::LLVMUtil::getVCallIdx</a></div><div class="ttdeci">s32_t getVCallIdx(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01228">LLVMUtil.cpp:1228</a></div></div>
1441
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a6dd1590b82d2bd86766886bd21bc2b72"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">SVF::LLVMUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01067">LLVMUtil.cpp:1067</a></div></div>
1467
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a718c8ec79f36cef5df2f4530541f2770"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">SVF::LLVMUtil::getVCallIdx</a></div><div class="ttdeci">s32_t getVCallIdx(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01229">LLVMUtil.cpp:1229</a></div></div>
1468
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a6dd1590b82d2bd86766886bd21bc2b72"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">SVF::LLVMUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01072">LLVMUtil.cpp:1072</a></div></div>
1442
1469
  <div class="ttc" id="anamespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
1443
1470
  <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>
1444
1471
  <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#l00143">BasicTypes.h:143</a></div></div>
1445
1472
  <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#l00182">BasicTypes.h:182</a></div></div>
1446
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a416bcb6da0650f546cb7d83e6be850b6"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">SVF::LLVMUtil::getClassNameFromType</a></div><div class="ttdeci">std::string getClassNameFromType(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01166">LLVMUtil.cpp:1166</a></div></div>
1447
1473
  <!-- start footer part -->
1448
1474
  <hr class="footer"/><address class="footer"><small>
1449
1475
  Generated by &#160;<a href="http://www.doxygen.org/index.html">